去除多余代码

This commit is contained in:
wangchengjun
2022-04-10 14:29:58 +08:00
parent 3005b527b7
commit af4be96ab4
8 changed files with 357 additions and 3262 deletions
@@ -351,7 +351,7 @@ public class FileSpiltService {
* @param sarFileSplitInfoEO
* @return
*/
public int fileEU(SarFileSplitInfoEO sarFileSplitInfoEO) {
public int fileGSO(SarFileSplitInfoEO sarFileSplitInfoEO) {
// 拆分文件主表中插入数据
if (sarFileSplitInfoEO.getStopNumber()<=0){
sarFileSplitInfoEO.setStopNumber(200);
@@ -699,6 +699,357 @@ public class FileSpiltService {
return treeList.size();
}
/**
*欧洲标准
* @param sarFileSplitInfoEO
* @return
*/
public int fileEU(SarFileSplitInfoEO sarFileSplitInfoEO) {
if (sarFileSplitInfoEO.getStopNumber()<=0){
sarFileSplitInfoEO.setStopNumber(200);
}
if (sarFileSplitInfoEO.getStartNumber()<=0){
sarFileSplitInfoEO.setStartNumber(1);
}
// 拆分文件条款表中最终插入数据
List<SarFileSplitItemsEO> messageList = new ArrayList<>();
int messageNumber = 0;
// 拆分文件目录表中最终插入数据
List<SarFileSplitMenuEO> treeList = new ArrayList<>();
// 拆分文件条款详情表中最终插入数据
List<SarFileSplitItemsValEO> itemValList = new ArrayList<>();
Long treeListDisplay = 1L;
String generalCatalogueId = UUIDUtils.randomUUID20();
SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
documentTreeEO.setId(generalCatalogueId);
documentTreeEO.setName("General catalogue");
documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
documentTreeEO.setDisplaySeq(1L);
documentTreeEO.setDisplaySeq(treeListDisplay++);
documentTreeEO.setValidFlag(0);
treeList.add(documentTreeEO);
List<String> nowStart = new ArrayList<>();
nowStart.add("1.");
// if (sarFileSplitInfoEO.getStartNumber()<4){
// } else {
// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber()));
// }
try {
//获取文件地址
String connectId = sarFileSplitInfoEO.getConnectId();
if(StringUtils.isEmpty(connectId)){
throw new JeroBootException("当前文件未找到,请重新选择!");
}
LambdaQueryWrapper<OSSFile> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(OSSFile::getConnectId,connectId);
OSSFile ossFile = iossFileService.getOne(queryWrapper);
String readFilePath = ossFile.getUrl();
if(StringUtils.isEmpty(readFilePath)){
throw new JeroBootException("当前文件未找到,请重新选择!");
}
InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。
XWPFDocument doc = new XWPFDocument(is);
Pattern ptest = Pattern.compile("^[\\d.]*$");
Matcher matcher;
// 记录拆分后的每一段文字
List<IBodyElement> elements = doc.getBodyElements();
// 记录word自动生成的编号数据
Map numberMap = new HashMap<String,Integer>();
boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
for (IBodyElement element : elements) {
// 段落
if (element instanceof XWPFParagraph) {
XWPFParagraph p = (XWPFParagraph)element;
// 处理段落生成编号不识别问题
String paragraphString = p.getText();
if (StringUtils.isNotBlank(paragraphString)) {
paragraphString = paragraphString.replace((char) 12288, ' ');
paragraphString = paragraphString.trim();
}
if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) {
String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf("."));
if (numberMap.containsKey(numberParent)){
Integer numbernow =(Integer)numberMap.get(numberParent)+1;
if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){
numberMap.put(numberParent,numbernow+1);
paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText();
} else {
numberMap.put(numberParent,numbernow);
paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText();
}
} else {
numberMap.put(numberParent,1);
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})$
ptest = Pattern.compile("^[\\d.]*$");
boolean hasGoIf = false;
for (int i=0;i<nowStart.size();i++){
if(paragraphString.startsWith(nowStart.get(i))){
if(paragraphString.length()>nowStart.get(i).length()
&& !ptest.matcher(paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+1)).matches()){
// 判断名称,如果大于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(numberStrTemp) > sarFileSplitInfoEO.getStopNumber()){
menuCanAdd = false;
} else {
// 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName);
treeList.add(sarFileSplitMenuEO) ;
message.setMenuId(sarFileSplitMenuEO.getId());
addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length()));
messageList.add(message);
nowStart = getNewNowStartUS(nowStart.get(i));
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(numberStrTemp) > sarFileSplitInfoEO.getStopNumber()){
menuCanAdd = false;
} else {
// 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName);
treeList.add(sarFileSplitMenuEO) ;
message.setMenuId(sarFileSplitMenuEO.getId());
addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length()));
messageList.add(message);
nowStart = getNewNowStartUS(nowStart.get(i));
menuCanAdd = true;
}
hasGoIf = true;
break;
}
}
}
// 判断是否直接跳出所有循环
if (!menuCanAdd && messageList.size()>0) {
break;
}
} else if (element instanceof XWPFTable){
if(messageList != null && !messageList.isEmpty()){
addItermsConditionsOfTable(messageList.get(messageList.size()-1),itemValList,(XWPFTable)element);
}
}
}
} catch (Exception e) {
e.printStackTrace();
return -1;
}
if(treeList.size()>0 && messageList.size() > 0){
sarFileSplitMenuEOMapper.insertForeach(treeList);
iSarFileSplitItemsEOService.insertForeach(messageList);
iSarFileSplitItemsValEOService.insertForeach(itemValList);
} else {
return -1;
}
return treeList.size();
}
/**
* 日本标准
* @param sarFileSplitInfoEO
*/
public int fileJapan(SarFileSplitInfoEO sarFileSplitInfoEO) {
if (sarFileSplitInfoEO.getStopNumber()<=0){
sarFileSplitInfoEO.setStopNumber(200);
}
if (sarFileSplitInfoEO.getStartNumber()<=0){
sarFileSplitInfoEO.setStartNumber(1);
}
// 拆分文件条款表中最终插入数据
List<SarFileSplitItemsEO> messageList = new ArrayList<>();
int messageNumber = 0;
// 拆分文件目录表中最终插入数据
List<SarFileSplitMenuEO> treeList = new ArrayList<>();
// 拆分文件条款详情表中最终插入数据
List<SarFileSplitItemsValEO> itemValList = new ArrayList<>();
Long treeListDisplay = 1L;
String generalCatalogueId = UUIDUtils.randomUUID20();
SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO();
// SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(generalCatalogueId,"General catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,"");
documentTreeEO.setId(generalCatalogueId);
documentTreeEO.setName("General catalogue");
documentTreeEO.setInfoId(sarFileSplitInfoEO.getId());
documentTreeEO.setDisplaySeq(1L);
documentTreeEO.setDisplaySeq(treeListDisplay++);
documentTreeEO.setValidFlag(0);
treeList.add(documentTreeEO);
List<String> nowStart = new ArrayList<>();
nowStart.add("S1");
// if (sarFileSplitInfoEO.getStartNumber()<4){
// } else {
// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber()));
// }
try {
//获取文件地址
String connectId = sarFileSplitInfoEO.getConnectId();
if(StringUtils.isEmpty(connectId)){
throw new JeroBootException("当前文件未找到,请重新选择!");
}
LambdaQueryWrapper<OSSFile> queryWrapper = new LambdaQueryWrapper();
queryWrapper.eq(OSSFile::getConnectId,connectId);
OSSFile ossFile = iossFileService.getOne(queryWrapper);
String readFilePath = ossFile.getUrl();
if(StringUtils.isEmpty(readFilePath)){
throw new JeroBootException("当前文件未找到,请重新选择!");
}
InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。
XWPFDocument doc = new XWPFDocument(is);
Pattern ptest = Pattern.compile("S^[\\d.]*$");
Matcher matcher;
// 记录拆分后的每一段文字
List<IBodyElement> elements = doc.getBodyElements();
// 记录word自动生成的编号数据
Map numberMap = new HashMap<String,Integer>();
boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
for (IBodyElement element : elements) {
// 段落
if (element instanceof XWPFParagraph) {
XWPFParagraph p = (XWPFParagraph)element;
// 处理段落生成编号不识别问题
String paragraphString = p.getText();
if (StringUtils.isNotBlank(paragraphString)) {
paragraphString = paragraphString.replace((char) 12288, ' ');
paragraphString = paragraphString.trim();
}
if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) {
String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf("."));
if (numberMap.containsKey(numberParent)){
Integer numbernow =(Integer)numberMap.get(numberParent)+1;
if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){
numberMap.put(numberParent,numbernow+1);
paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText();
} else {
numberMap.put(numberParent,numbernow);
paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText();
}
} else {
numberMap.put(numberParent,1);
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})$
ptest = Pattern.compile("S^[\\d.]*$");
boolean hasGoIf = false;
for (int i=0;i<nowStart.size();i++){
if(paragraphString.startsWith(nowStart.get(i))){
if(paragraphString.length()>nowStart.get(i).length()
&& !ptest.matcher(paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+1)).matches()){
// 判断名称,如果大于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(numberStrTemp) > sarFileSplitInfoEO.getStopNumber()){
menuCanAdd = false;
} else {
// 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName);
treeList.add(sarFileSplitMenuEO) ;
message.setMenuId(sarFileSplitMenuEO.getId());
addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length()));
messageList.add(message);
nowStart = getNewNowStartUS(nowStart.get(i));
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(numberStrTemp) > sarFileSplitInfoEO.getStopNumber()){
menuCanAdd = false;
} else {
// 增加一条数据,需要在数结构中加一条数据
SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName);
treeList.add(sarFileSplitMenuEO) ;
message.setMenuId(sarFileSplitMenuEO.getId());
addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length()));
messageList.add(message);
nowStart = getNewNowStartUS(nowStart.get(i));
menuCanAdd = true;
}
hasGoIf = true;
break;
}
}
}
// 判断是否直接跳出所有循环
if (!menuCanAdd && messageList.size()>0) {
break;
}
} else if (element instanceof XWPFTable){
if(messageList != null && !messageList.isEmpty()){
addItermsConditionsOfTable(messageList.get(messageList.size()-1),itemValList,(XWPFTable)element);
}
}
}
} catch (Exception e) {
e.printStackTrace();
return -1;
}
if(treeList.size()>0 && messageList.size() > 0){
sarFileSplitMenuEOMapper.insertForeach(treeList);
iSarFileSplitItemsEOService.insertForeach(messageList);
iSarFileSplitItemsValEOService.insertForeach(itemValList);
} else {
return -1;
}
return treeList.size();
}
/**
* 通过传递过来的编号,得出下次可能出现的编号
* @param nowStart
@@ -1065,6 +1416,8 @@ public class FileSpiltService {
return sarFileSplitItemsValEO;
}
// public String addToStandItems(SarFileSplitInfoEO sarFileSplitInfoEO,SarStandardsInfoEO sarStandardsInfoEO ) throws Exception {
// //查询拆分中所有条款信息
// SarFileSplitItemsEOPage splitItemsEOPage = new SarFileSplitItemsEOPage();
@@ -80,14 +80,16 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl<SarFileSplitInfoMap
fileSpiltService.fileCHN(sarFileSplitInfoEO);
break;
case EU:
fileSpiltService.fileEU(sarFileSplitInfoEO);
break;
case US:
fileSpiltService.fileUSA(sarFileSplitInfoEO);
break;
case GSO:
fileSpiltService.fileEU(sarFileSplitInfoEO);
fileSpiltService.fileGSO(sarFileSplitInfoEO);
break;
case JAPAN:
fileSpiltService.fileJapan(sarFileSplitInfoEO);
break;
case KOREAN:
break;