作者 朱兆平

FHL分单报文解析并校验

... ... @@ -92,7 +92,8 @@ public class Originmanifestsecondary {
private String TEMP_KEY_WORD="";
private int CURRENT_LINE=0;
//报文结束标识
private static String END_WORD= "=";
public String getAutoid() {
return autoid;
... ... @@ -400,21 +401,25 @@ public class Originmanifestsecondary {
for (int i = 0; i < lineList.size(); i++) {
String pattern = "[^A-Z0-9/\\.\\-<=\\s]+";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m = r.matcher(text);
//根据行关键字走相应的解析逻辑
String line = lineList.get(i);
Matcher m = r.matcher(line);
if(m.find()){
log.error("[FHL] 行[{}]中包含非允许特殊字符,报文中只允许包含-[{}]等特殊字符",i," / -. Space < =");
throw new FFMResolveException("[FHL] 报文中包含特殊字符,报文中只允许包含 / -. Space < = 等特殊字符");
}
//根据行关键字走相应的解析逻辑
String line = lineList.get(i);
log.debug("[TEXT] 开始处理行[{}]-[{}]",i,line);
if(line.equals(END_WORD)){
log.info("[END]- 当前行为结束行,解析结束");
return true;
}
String keyword = keyword(line);
CURRENT_LINE = i;
if (!"NOT_KEYWORD".equals(keyword)){
TEMP_KEY_WORD = "";
keywordParse(keyword,line,i);
... ...