作者 朱兆平

FHL分单报文解析并校验

@@ -92,7 +92,8 @@ public class Originmanifestsecondary { @@ -92,7 +92,8 @@ public class Originmanifestsecondary {
92 92
93 private String TEMP_KEY_WORD=""; 93 private String TEMP_KEY_WORD="";
94 94
95 - private int CURRENT_LINE=0; 95 + //报文结束标识
  96 + private static String END_WORD= "=";
96 97
97 public String getAutoid() { 98 public String getAutoid() {
98 return autoid; 99 return autoid;
@@ -400,21 +401,25 @@ public class Originmanifestsecondary { @@ -400,21 +401,25 @@ public class Originmanifestsecondary {
400 for (int i = 0; i < lineList.size(); i++) { 401 for (int i = 0; i < lineList.size(); i++) {
401 402
402 String pattern = "[^A-Z0-9/\\.\\-<=\\s]+"; 403 String pattern = "[^A-Z0-9/\\.\\-<=\\s]+";
403 - // 创建 Pattern 对象  
404 Pattern r = Pattern.compile(pattern); 404 Pattern r = Pattern.compile(pattern);
405 - // 现在创建 matcher 对象  
406 - Matcher m = r.matcher(text);  
407 405
  406 +
  407 + //根据行关键字走相应的解析逻辑
  408 + String line = lineList.get(i);
  409 + Matcher m = r.matcher(line);
408 if(m.find()){ 410 if(m.find()){
409 log.error("[FHL] 行[{}]中包含非允许特殊字符,报文中只允许包含-[{}]等特殊字符",i," / -. Space < ="); 411 log.error("[FHL] 行[{}]中包含非允许特殊字符,报文中只允许包含-[{}]等特殊字符",i," / -. Space < =");
410 throw new FFMResolveException("[FHL] 报文中包含特殊字符,报文中只允许包含 / -. Space < = 等特殊字符"); 412 throw new FFMResolveException("[FHL] 报文中包含特殊字符,报文中只允许包含 / -. Space < = 等特殊字符");
411 } 413 }
412 414
413 - //根据行关键字走相应的解析逻辑  
414 - String line = lineList.get(i); 415 +
415 log.debug("[TEXT] 开始处理行[{}]-[{}]",i,line); 416 log.debug("[TEXT] 开始处理行[{}]-[{}]",i,line);
  417 + if(line.equals(END_WORD)){
  418 + log.info("[END]- 当前行为结束行,解析结束");
  419 + return true;
  420 + }
  421 +
416 String keyword = keyword(line); 422 String keyword = keyword(line);
417 - CURRENT_LINE = i;  
418 if (!"NOT_KEYWORD".equals(keyword)){ 423 if (!"NOT_KEYWORD".equals(keyword)){
419 TEMP_KEY_WORD = ""; 424 TEMP_KEY_WORD = "";
420 keywordParse(keyword,line,i); 425 keywordParse(keyword,line,i);