拆分bug处理

This commit is contained in:
wangchengjun
2022-04-15 00:05:20 +08:00
parent 74c10ef287
commit f9c6c3c06c
3 changed files with 95 additions and 79 deletions
@@ -104,7 +104,7 @@ public class FileSpiltService {
List<String> nowStart = new ArrayList<>(); List<String> nowStart = new ArrayList<>();
// if (sarFileSplitInfoEO.getStartNumber()<4){ // if (sarFileSplitInfoEO.getStartNumber()<4){
//从第四个开始拆解 //从第四个开始拆解
nowStart.add("4"); nowStart.add("3.1");
// } else { // } else {
// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); // nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber()));
// } // }
@@ -261,7 +261,7 @@ public class FileSpiltService {
ptest = Pattern.compile("^[\\d.]*$"); ptest = Pattern.compile("^[\\d.]*$");
boolean hasGoIf = false; boolean hasGoIf = false;
for (int i=0;i<nowStart.size();i++){ for (int i=0;i<nowStart.size();i++){
if(paragraphString.startsWith(nowStart.get(i)) && !ptest.matcher(paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+1)).matches()){ if(paragraphString.startsWith(nowStart.get(i))){
// 判断名称,如果大于10位,取十位, // 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
List<String> clauseContent = new ArrayList<>(); List<String> clauseContent = new ArrayList<>();
@@ -449,7 +449,8 @@ public class FileSpiltService {
System.out.println(nowStart.get(i)); System.out.println(nowStart.get(i));
if(paragraphString.startsWith(nowStart.get(i)) ){ if(paragraphString.startsWith(nowStart.get(i)) ){
// 判断名称,如果大于10位,取十位, // 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); // String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
String itemName = FileSplitUtils.getItemName(paragraphString,nowStart.get(i));
List<String> clauseContent = new ArrayList<>(); List<String> clauseContent = new ArrayList<>();
clauseContent.add(paragraphString); clauseContent.add(paragraphString);
SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
@@ -609,7 +610,8 @@ public class FileSpiltService {
for (int i=0;i<nowStart.size();i++){ for (int i=0;i<nowStart.size();i++){
if(paragraphString.startsWith(nowStart.get(i))){ if(paragraphString.startsWith(nowStart.get(i))){
// 判断名称,如果大于10位,取十位, // 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); // String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
String itemName = FileSplitUtils.getItemName(paragraphString,nowStart.get(i));
List<String> clauseContent = new ArrayList<>(); List<String> clauseContent = new ArrayList<>();
clauseContent.add(paragraphString); clauseContent.add(paragraphString);
SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
@@ -772,7 +774,8 @@ public class FileSpiltService {
for (int i=0;i<nowStart.size();i++){ for (int i=0;i<nowStart.size();i++){
if(paragraphString.replaceAll(" ","").startsWith(nowStart.get(i))){ if(paragraphString.replaceAll(" ","").startsWith(nowStart.get(i))){
// 判断名称,如果大于10位,取十位, // 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); // String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
String itemName = FileSplitUtils.getItemName(paragraphString,nowStart.get(i));
List<String> clauseContent = new ArrayList<>(); List<String> clauseContent = new ArrayList<>();
clauseContent.add(paragraphString); clauseContent.add(paragraphString);
SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
@@ -939,7 +942,8 @@ public class FileSpiltService {
for (int i=0;i<nowStart.size();i++){ for (int i=0;i<nowStart.size();i++){
if(paragraphString.startsWith(nowStart.get(i))){ if(paragraphString.startsWith(nowStart.get(i))){
// 判断名称,如果大于10位,取十位, // 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); // String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
String itemName = FileSplitUtils.getItemName(paragraphString,nowStart.get(i));
List<String> clauseContent = new ArrayList<>(); List<String> clauseContent = new ArrayList<>();
clauseContent.add(paragraphString); clauseContent.add(paragraphString);
SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
@@ -1080,78 +1084,52 @@ public class FileSpiltService {
paragraphString = paragraphString.replace((char) 12288, ' '); paragraphString = paragraphString.replace((char) 12288, ' ');
paragraphString = paragraphString.trim(); paragraphString = paragraphString.trim();
} }
if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { // if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) {
String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); // String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf("."));
if (numberMap.containsKey(numberParent)){ // if (numberMap.containsKey(numberParent)){
Integer numbernow =(Integer)numberMap.get(numberParent)+1; // Integer numbernow =(Integer)numberMap.get(numberParent)+1;
if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){ // if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){
numberMap.put(numberParent,numbernow+1); // numberMap.put(numberParent,numbernow+1);
paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText(); // paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText();
} else { // } else {
numberMap.put(numberParent,numbernow); // numberMap.put(numberParent,numbernow);
paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText(); // paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText();
} // }
} else { // } else {
numberMap.put(numberParent,1); // numberMap.put(numberParent,1);
paragraphString = numberParent+".1"+ p.getText(); // paragraphString = numberParent+".1"+ p.getText();
} // }
} // }
//^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$ //^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$
ptest = Pattern.compile("^[\\d.]*$"); ptest = Pattern.compile("^[\\d.]*$");
//定义查看是否有编号,没有编号则按照上一个编号放置数据 //定义查看是否有编号,没有编号则按照上一个编号放置数据
boolean hasGoIf = false; boolean hasGoIf = false;
for (int i=0;i<nowStart.size();i++){ for (int i=0;i<nowStart.size();i++){
if(paragraphString.startsWith(nowStart.get(i))){ if(paragraphString.startsWith(nowStart.get(i))){
if(paragraphString.length()>nowStart.get(i).length() // 判断名称,如果大于10位,取十位,
&& !ptest.matcher(paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+1)).matches()){ // String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
// 判断名称,如果大于10位,取十位, String itemName = FileSplitUtils.getItemName(paragraphString,nowStart.get(i));
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); List<String> clauseContent = new ArrayList<>();
List<String> clauseContent = new ArrayList<>(); clauseContent.add(paragraphString);
clauseContent.add(paragraphString); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
String[] numberStr = nowStart.get(i).split("\\."); String[] numberStr = nowStart.get(i).split("\\.");
// String numberStrTemp = numberStr[0].replace("S", ""); // String numberStrTemp = numberStr[0].replace("S", "");
if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()){ if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()){
menuCanAdd = false; menuCanAdd = false;
} else { } else {
// 增加一条数据,需要在数结构中加一条数据 // 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue);
treeList.add(sarFileSplitMenuEO) ; treeList.add(sarFileSplitMenuEO) ;
message.setMenuId(sarFileSplitMenuEO.getId()); message.setMenuId(sarFileSplitMenuEO.getId());
addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length()));
messageList.add(message); messageList.add(message);
nowStart = getNewNowStartEU(nowStart.get(i)); nowStart = getNewNowStartEU(nowStart.get(i));
menuCanAdd = true; menuCanAdd = true;
}
hasGoIf = true;
break;
}else {
// 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
List<String> clauseContent = new ArrayList<>();
clauseContent.add(paragraphString);
SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
String[] numberStr = nowStart.get(i).split("\\.");
// String numberStrTemp = numberStr[0].replace("S", "");
if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()){
menuCanAdd = false;
} else {
// 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue);
treeList.add(sarFileSplitMenuEO) ;
message.setMenuId(sarFileSplitMenuEO.getId());
addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length()));
messageList.add(message);
nowStart = getNewNowStartEU(nowStart.get(i));
menuCanAdd = true;
}
hasGoIf = true;
break;
} }
hasGoIf = true;
break;
} }
@@ -1293,7 +1271,8 @@ public class FileSpiltService {
for (int i=0;i<nowStart.size();i++){ for (int i=0;i<nowStart.size();i++){
if(paragraphString.startsWith(nowStart.get(i))){ if(paragraphString.startsWith(nowStart.get(i))){
// 判断名称,如果大于10位,取十位, // 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); // String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
String itemName = FileSplitUtils.getItemName(paragraphString,nowStart.get(i));
List<String> clauseContent = new ArrayList<>(); List<String> clauseContent = new ArrayList<>();
clauseContent.add(paragraphString); clauseContent.add(paragraphString);
SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
@@ -1493,7 +1472,8 @@ public class FileSpiltService {
for (int i=0;i<nowStart.size();i++){ for (int i=0;i<nowStart.size();i++){
if(paragraphString.startsWith(nowStart.get(i)) && (!filterFlag)){ if(paragraphString.startsWith(nowStart.get(i)) && (!filterFlag)){
// 判断名称,如果大于10位,取十位, // 判断名称,如果大于10位,取十位,
String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); // String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length());
String itemName = FileSplitUtils.getItemName(paragraphString,nowStart.get(i));
List<String> clauseContent = new ArrayList<>(); List<String> clauseContent = new ArrayList<>();
clauseContent.add(paragraphString); clauseContent.add(paragraphString);
SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent);
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.CutEnum; import com.jero.common.constant.enums.CutEnum;
import com.jero.common.constant.enums.ModuleEnum; import com.jero.common.constant.enums.ModuleEnum;
import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.generater.modules.online.cgform.entity.OnlCgformField; import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl; import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.entity.OSSFile;
@@ -75,33 +76,37 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl<SarFileSplitInfoMap
SplitFileTypeTypeEnum enumByValue = SplitFileTypeTypeEnum.getEnumByValue(sarFileSplitInfoEO.getFileGroup()); SplitFileTypeTypeEnum enumByValue = SplitFileTypeTypeEnum.getEnumByValue(sarFileSplitInfoEO.getFileGroup());
int result = 0;
switch (enumByValue){ switch (enumByValue){
case CN: case CN:
fileSpiltService.fileCHN(sarFileSplitInfoEO,enumByValue); result = fileSpiltService.fileCHN(sarFileSplitInfoEO,enumByValue);
break; break;
case EU: case EU:
fileSpiltService.fileEU(sarFileSplitInfoEO,enumByValue); result = fileSpiltService.fileEU(sarFileSplitInfoEO,enumByValue);
break; break;
case US: case US:
fileSpiltService.fileUSA(sarFileSplitInfoEO,enumByValue); result = fileSpiltService.fileUSA(sarFileSplitInfoEO,enumByValue);
break; break;
case GSO: case GSO:
fileSpiltService.fileGSO(sarFileSplitInfoEO,enumByValue); result = fileSpiltService.fileGSO(sarFileSplitInfoEO,enumByValue);
break; break;
case JAPAN_ONE: case JAPAN_ONE:
fileSpiltService.fileJapanOne(sarFileSplitInfoEO,enumByValue); result = fileSpiltService.fileJapanOne(sarFileSplitInfoEO,enumByValue);
break; break;
case JAPAN_TWO: case JAPAN_TWO:
fileSpiltService.fileJapanTwo(sarFileSplitInfoEO,enumByValue); result = fileSpiltService.fileJapanTwo(sarFileSplitInfoEO,enumByValue);
break; break;
case KMVSS_ARTICLE: case KMVSS_ARTICLE:
fileSpiltService.fileKmvssArticle(sarFileSplitInfoEO,enumByValue); result = fileSpiltService.fileKmvssArticle(sarFileSplitInfoEO,enumByValue);
break; break;
case KMVSS_TABLE: case KMVSS_TABLE:
fileSpiltService.fileKmvssTable(sarFileSplitInfoEO,enumByValue); result = fileSpiltService.fileKmvssTable(sarFileSplitInfoEO,enumByValue);
break; break;
default: default:
} }
if(result == -1){
throw new JeroBootException("文档格式错误,请检查文档内容!");
}
// fileSpiltService.fileCHN(sarFileSplitInfoEO); // fileSpiltService.fileCHN(sarFileSplitInfoEO);
@@ -1,11 +1,42 @@
package com.jero.modules.split.util; package com.jero.modules.split.util;
import com.jero.modules.system.util.StringUtils;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class FileSplitUtils { public class FileSplitUtils {
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(getLastEn("G")); String paragraphString ="1.1 weere wewwe";
String s ="1.1";
System.out.println(getItemName(paragraphString,s));
}
public static String getItemName(String paragraphString,String subString){
String itemName = "";
String itemNameAll = paragraphString.substring(subString.length());
String[] itemNameArr = itemNameAll.split(" ");
if(itemNameArr.length >= 2){
int count = 0;
for (String itemNameTemp : itemNameArr) {
if(StringUtils.isEmpty(itemNameTemp)){
continue;
}
count++;
itemName= itemName + itemNameTemp+" ";
if(count >= 2){
break;
}
}
// itemName = itemNameArr[0]+" "+itemNameArr[1];
}else {
for (String itemNameTemp : itemNameArr) {
itemName = itemName + itemNameTemp+" ";
}
}
itemName = itemName.trim();
return itemName;
} }
/** /**