diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/util/MinioUtil.java b/laws-base/laws-base-core/src/main/java/com/jero/common/util/MinioUtil.java index 4296158f..d4cd3ff0 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/util/MinioUtil.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/util/MinioUtil.java @@ -109,7 +109,7 @@ public class MinioUtil { .stream(stream,stream.available(),-1).build(); minioClient.putObject(objectArgs); stream.close(); - fileUrl = minioUrl+newBucket+ File.separator +objectName; + fileUrl = objectName; }catch (Exception e){ log.error(e.getMessage(), e); } diff --git a/laws-modules/lib/aspose-words-21.1-jdk17-cracked.jar b/laws-modules/lib/aspose-words-21.1-jdk17-cracked.jar new file mode 100644 index 00000000..10546943 Binary files /dev/null and b/laws-modules/lib/aspose-words-21.1-jdk17-cracked.jar differ diff --git a/laws-modules/pom.xml b/laws-modules/pom.xml index 3f456a4b..27d894dc 100644 --- a/laws-modules/pom.xml +++ b/laws-modules/pom.xml @@ -146,5 +146,14 @@ ant 1.10.5 + + + com.aspose + aspose-words + 21.1 + system + jdk17 + ${project.basedir}/lib/aspose-words-21.1-jdk17-cracked.jar + \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitItemsEO.java b/laws-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitItemsEO.java index 1acaeddf..130e4e8e 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitItemsEO.java +++ b/laws-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitItemsEO.java @@ -1,6 +1,8 @@ package com.jero.modules.split.entity; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; import lombok.Data; import java.io.Serializable; @@ -18,28 +20,55 @@ public class SarFileSplitItemsEO implements Serializable { private static final long serialVersionUID = 1L; private String id; + + @ApiModelProperty(value = "拆分信息记录id") private String infoId; + + @ApiModelProperty(value = "条款号") private String itemsNum; + + @ApiModelProperty(value = "条款名称") private String itemsName; + + @ApiModelProperty(value = "条款内容") private String itermsConditions; + + @ApiModelProperty(value = "拆分目录id") private String menuId; + + @ApiModelProperty(value = "信息类别") private String informationCategory; // 信息类别 - private String technologyTerritory; // 技术领域 + + @ApiModelProperty(value = "技术领域") + private String technologyTerritory; // + + @ApiModelProperty(value = "") private Integer validFlag; + private String creationUser; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date creationTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date modifyTime; + private String modifyUser; + private String[] infoIdList; + private String[] idList; + private List itemValEOList; + // 前台删除的VAL表条目内容ID private String delItemIds; + private String sMenuId; List itemsCondi; + private String zhan3Shi4Shun4Xu4;// 展示顺序字段 + } diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java index a0f60808..d3e56bde 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java @@ -1,6 +1,7 @@ package com.jero.modules.split.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.itextpdf.text.ListLabel; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.MinioUtil; @@ -17,6 +18,7 @@ import com.jero.modules.split.util.FileSplitUtils; import com.jero.modules.split.util.ReadWordTable; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.xwpf.usermodel.*; import org.apache.shiro.SecurityUtils; import org.apache.xmlbeans.XmlCursor; @@ -34,9 +36,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; + +import javax.xml.parsers.DocumentBuilder; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -133,17 +139,14 @@ public class FileSpiltService { OSSFile ossFile = ossFileList.get(0); String readFilePath = ossFile.getUrl(); - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - try (InputStream is = MinioUtil.download(readFilePath);) { - -// AttFileEO attFileEO = attFileEOService.getFileInfo(sarFileSplitInfoEO.getAttId()); -// String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); -// String readFilePath = "C:\\Users\\wangc\\Desktop\\蔚来演示数据\\GB 11551-2014 汽车正面碰撞的乘员保护.docx"; - -// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 + //if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { + // throw new JeroBootException("当前文件未找到,请重新选择!"); + //} + //try (InputStream is = MinioUtil.download(readFilePath);) { + readFilePath = "E:\\Data\\Downloads\\GB_4785_2019_CN.docx"; + try (InputStream is = new FileInputStream(readFilePath);) {//需要将文件路更改为word文档所在路径。 + ZipSecureFile.setMinInflateRatio(-1.0d); XWPFDocument doc = new XWPFDocument(is); Pattern ptest = Pattern.compile("^1范围"); @@ -186,8 +189,12 @@ public class FileSpiltService { paragraphString = paragraphString.replaceAll("\n",""); paragraphString = paragraphString.trim(); - if ("前言".equals(getChinese(paragraphString)) && (paragraphString.replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", "").length() == 2)) { // 前言后面有文本,判定为是目录中的前言 + if ("前言".equals(getChinese(paragraphString)) + && (paragraphString + .replaceAll("\t", "") + .replaceAll("\b", "") + .replaceAll(" ", "") + .length() == 2)) { // 前言后面有文本,判定为是目录中的前言 firstFlag = false; } if(firstFlag) { @@ -250,74 +257,6 @@ public class FileSpiltService { messageNumber++; } } - /*else if (messageNumber == 1) { - ptest = Pattern.compile("^2\\s{0,50}规范性引用文件"); - matcher = ptest.matcher(paragraphString); - if (matcher.find()) { - List clauseContent = new ArrayList<>(); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "2", "规范性引用文件", clauseContent); - SarFileSplitMenuEO documentTreeEO1 = new SarFileSplitMenuEO(); -// SarFileSplitMenuEO documentTreeEO1 = new SarFileSplitMenuEO(UUIDUtils.randomUUID20(),message.getItemsNum(),generalCatalogueId,sarFileSplitInfoEO.getId(),treeListDisplay++,"规范性引用文件"); - - documentTreeEO1.setId(UUIDUtils.randomUUID20()); - documentTreeEO1.setItemName("规范性引用文件"); - documentTreeEO1.setPId(generalCatalogueId); - documentTreeEO1.setInfoId(sarFileSplitInfoEO.getId()); - documentTreeEO1.setDisplaySeq(treeListDisplay++); - documentTreeEO1.setName(message.getItemsNum()); - documentTreeEO1.setValidFlag(0); - - message.setMenuId(documentTreeEO1.getId()); - if (sarFileSplitInfoEO.getStartNumber() <= 2 && sarFileSplitInfoEO.getStopNumber() >= 2) { - messageList.add(message); - treeList.add(documentTreeEO1); - menuCanAdd = true; - } else { - menuCanAdd = false; - } - messageNumber++; - } else if (menuCanAdd) { - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } else { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - } - } else if (messageNumber == 2) { - ptest = Pattern.compile("^3\\s{0,50}术语(和|与)定义"); - matcher = ptest.matcher(paragraphString); - if (matcher.find()) { - List clauseContent = new ArrayList<>(); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "3", "术语与定义", clauseContent); - SarFileSplitMenuEO documentTreeEO1 = new SarFileSplitMenuEO(); -// SarFileSplitMenuEO documentTreeEO1 = new SarFileSplitMenuEO(UUIDUtils.randomUUID20(),message.getItemsNum(),generalCatalogueId,sarFileSplitInfoEO.getId(),treeListDisplay++,"术语与定义"); - documentTreeEO1.setId(UUIDUtils.randomUUID20()); - documentTreeEO1.setItemName("术语与定义"); - documentTreeEO1.setPId(generalCatalogueId); - documentTreeEO1.setInfoId(sarFileSplitInfoEO.getId()); - documentTreeEO1.setDisplaySeq(treeListDisplay++); - documentTreeEO1.setName(message.getItemsNum()); - documentTreeEO1.setValidFlag(0); - - message.setMenuId(documentTreeEO1.getId()); - if (sarFileSplitInfoEO.getStartNumber() <= 3 && sarFileSplitInfoEO.getStopNumber() >= 3) { - messageList.add(message); - treeList.add(documentTreeEO1); - menuCanAdd = true; - } else { - menuCanAdd = false; - } - messageNumber++; - } else if (menuCanAdd) { - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } else { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - } - } */ else if (messageNumber >= 1) { ptest = Pattern.compile("^[\\d.]*$"); boolean hasGoIf = false; @@ -396,8 +335,9 @@ public class FileSpiltService { break; } } - } else if (element instanceof XWPFTable) { - if (messageList != null && !messageList.isEmpty()) { + } + else if (element instanceof XWPFTable) { + if (!messageList.isEmpty()) { addItermsConditionsOfTable(messageList.get(messageList.size() - 1), itemValList, (XWPFTable) element); } } @@ -414,9 +354,6 @@ public class FileSpiltService { } iSarFileSplitItemsEOService.insertForeach(messageList); iSarFileSplitItemsValEOService.insertForeach(itemValList); -// sarFileSplitMenuEODao.insertForeach(treeList); -// sarFileSplitItemsEODao.insertForeach(messageList); -// sarFileSplitItemsValEODao.insertForeach(itemValList); } else { return -1; } @@ -428,1739 +365,7 @@ public class FileSpiltService { // fileEU(new SarFileSplitInfoEO()); // } - /** - * GSO 欧洲标准拆分 - * - * @param sarFileSplitInfoEO - * @param enumByValue - * @return - */ - public int fileGSO(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); - int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("1"); -// if (sarFileSplitInfoEO.getStartNumber()<4){ -// } else { -// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); -// } - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - try (InputStream is = MinioUtil.download(readFilePath);) { - -// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 - XWPFDocument doc = new XWPFDocument(is); - - Pattern ptest = Pattern.compile("^[\\d.]*$"); -// Matcher matcher; - - // 记录拆分后的每一段文字 - List elements = doc.getBodyElements(); - // 记录word自动生成的编号数据 - Map numberMap = new HashMap(); - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - List startDigitList = getStartDigit(elements, enumByValue); - List newStartDigitList = new ArrayList<>(); - for (String startDigit : startDigitList) { - if(startDigit.endsWith(".")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf(".")); - } - newStartDigitList.add(startDigit); - } - String regex = "^[0-9]*$"; - boolean firstFlag = true; - String preName = ""; - int preNameNum = 0; -// for (IBodyElement element : elements) { - for (int g=0; g< elements.size(); g++) { - IBodyElement element = elements.get(g); - // 段落 - if (element instanceof XWPFParagraph) { - XWPFParagraph p = (XWPFParagraph) element; - - // 处理段落生成编号不识别问题 - String paragraphString = p.getText(); - if (!StringUtils.isEmpty(paragraphString)) { - paragraphString = paragraphString.replace((char) 12288, ' '); - paragraphString = paragraphString.replaceAll("\r\n",""); - paragraphString = paragraphString.replaceAll("\n",""); - paragraphString = paragraphString.trim(); - } - if(StringUtils.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - if (paragraphString.toLowerCase().contains("scope")) { - String pp = paragraphString.replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", ""); - if (!pp.substring(pp.length()-1).matches(regex)) { - firstFlag = false; - } - } - if (firstFlag) { - continue; - } - ptest = Pattern.compile("^[\\d.]*$"); - //定义查看是否有编号,没有编号则按照上一个编号放置数据 - boolean hasGoIf = false; - String startDigit = getOneStartDigit(paragraphString, enumByValue); - for (int i = 0; i < nowStart.size(); i++) { - if (startDigit.equals(nowStart.get(i)) || startDigit.equals(nowStart.get(i)+ ".") || startDigit.equals(nowStart.get(i)+ "-") ) { - // 判断一级 真的是标题还是干扰项 TODO - if (startDigit.matches("^[0-9]*.$") || startDigit.matches("^[0-9]*-$")) { - if(startDigit.endsWith(".")) { - boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf(".")), g, newStartDigitList, "."); - if (result) { - continue; - } - } else if(startDigit.endsWith("-")) { - boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf("-")), g, newStartDigitList, "."); - if (result) { - continue; - } - } else { - boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit, g, newStartDigitList, "."); - if (result) { - continue; - } - } - } - // 判断名称,如果大于10位,取十位, - String itemName = FileSplitUtils.getItemName(paragraphString, startDigit); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent); - - String[] numberStr = nowStart.get(i).split("\\."); - - 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); - preName = nowStart.get(i); - preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length())); - } - messageList.add(message); - nowStart = getNewNowStart(nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - break; - - } - - } - if (!hasGoIf && menuCanAdd) { - if ("annex1".equals(paragraphString.toLowerCase().replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", "")) - && !messageList.get(messageList.size() - 1).getItemsNum().equals("annex")) { - - String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0]; - if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) { - String itemName = "annex"; - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent); - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue); - addItermsConditionsText(message, itemValList, paragraphString); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - messageList.add(message); - nowStart = new ArrayList<>(); - } else { - break; - } - - } else { - if (!p.getText().equals("")) { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } -// } - hasGoIf = true; - } - - // 判断是否直接跳出所有循环 - 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); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - /** - * 美国标准 - * - * @param sarFileSplitInfoEO - * @param enumByValue - * @return - */ - public int fileUSA(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); - int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("S1"); -// if (sarFileSplitInfoEO.getStartNumber()<4){ -// } else { -// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); -// } - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - try (InputStream is = MinioUtil.download(readFilePath);) { - -// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 - XWPFDocument doc = new XWPFDocument(is); - - Pattern ptest = Pattern.compile("S^[\\d.]*$"); - Matcher matcher; - - // 记录拆分后的每一段文字 - List elements = doc.getBodyElements(); - // 记录word自动生成的编号数据 - Map numberMap = new HashMap(); - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - List startDigitList = getStartDigit(elements, enumByValue); - List newStartDigitList = new ArrayList<>(); - for (String startDigit : startDigitList) { - if(startDigit.endsWith("S")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf("S")); - } - if(startDigit.endsWith(".")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf(".")); - } - newStartDigitList.add(startDigit); - } - String preName = ""; - int preNameNum = 0; -// for (IBodyElement element : elements) { - for (int g=0; g< elements.size(); g++) { - IBodyElement element = elements.get(g); - // 段落 - 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.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - paragraphString = paragraphString.replaceAll("\r\n",""); - paragraphString = paragraphString.replaceAll("\n",""); - paragraphString = paragraphString.trim(); - if(StringUtils.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - ptest = Pattern.compile("S^[\\d.]*$"); - boolean hasGoIf = false; - String startDigit = getOneStartDigit(paragraphString,enumByValue); - if(startDigit.endsWith("S")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf("S")); - } - for (int i = 0; i < nowStart.size(); i++) { - if (startDigit.equals(nowStart.get(i)) || startDigit.equals(nowStart.get(i)+ ".") ) { - // 判断一级 真的是标题还是干扰项 TODO - if (startDigit.matches("^[0-9]*.$")) { - if(startDigit.endsWith(".")) { - boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf(".")), g, newStartDigitList, "."); - if (result) { - continue; - } - } else { - boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit, g, newStartDigitList, "."); - if (result) { - continue; - } - } - } - // 判断名称,如果大于10位,取十位, - String itemName = FileSplitUtils.getItemName(paragraphString, startDigit); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, 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, enumByValue); - treeList.add(sarFileSplitMenuEO); - preName = nowStart.get(i); - preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = getNewNowStartUS(nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - break; - - } - } - if (!hasGoIf && menuCanAdd) { - if (!p.getText().equals("")) { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - hasGoIf = true; - } - - // 判断是否直接跳出所有循环 - 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); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - /** - * 日本标准 - * - * @param sarFileSplitInfoEO - * @param enumByValue - * @return - */ - public int fileJapanOne(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); - int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("1."); -// if (sarFileSplitInfoEO.getStartNumber()<4){ -// } else { -// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); -// } - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - try (InputStream is = MinioUtil.download(readFilePath);) { - -// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 - XWPFDocument doc = new XWPFDocument(is); - - Pattern ptest = Pattern.compile("^[\\d.]*$"); -// Matcher matcher; - - // 记录拆分后的每一段文字 - List elements = doc.getBodyElements(); - // 记录word自动生成的编号数据 - Map numberMap = new HashMap(); - 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.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - paragraphString = paragraphString.replaceAll("\r\n",""); - paragraphString = paragraphString.replaceAll("\n",""); - paragraphString = paragraphString.trim(); - if(StringUtils.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - ptest = Pattern.compile("^[\\d.]*$"); - //定义查看是否有编号,没有编号则按照上一个编号放置数据 - boolean hasGoIf = false; - for (int i = 0; i < nowStart.size(); i++) { - if (paragraphString.replaceAll(" ", "").startsWith(nowStart.get(i))) { - // 判断名称,如果大于10位,取十位, - String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i)); - - - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent); - - String[] numberStr; - if (nowStart.get(i).contains(".")) { - numberStr = nowStart.get(i).split("\\."); - } else { - numberStr = nowStart.get(i).split("–"); - } - - 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()); - if(!StringUtils.isEmpty(itemName)){ - addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = getNewNowStartJapanOne("", nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - - break; - - } - - } - if (!hasGoIf && menuCanAdd) { - if (!p.getText().equals("")) { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - - // 判断是否直接跳出所有循环 - 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); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - } - - /** - * 日本标准 - * - * @param sarFileSplitInfoEO - * @param enumByValue - * @return - */ - public int fileJapanTwo(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); - int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("1."); -// if (sarFileSplitInfoEO.getStartNumber()<4){ -// } else { -// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); -// } - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - try (InputStream is = MinioUtil.download(readFilePath);) { - -// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 - XWPFDocument doc = new XWPFDocument(is); - - Pattern ptest = Pattern.compile("^[\\d.]*$"); -// Matcher matcher; - - // 记录拆分后的每一段文字 - List elements = doc.getBodyElements(); - // 记录word自动生成的编号数据 - Map numberMap = new HashMap(); - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - StringBuilder lastStrTemp = new StringBuilder(); - StringBuilder secondStrTemp = new StringBuilder(); - 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.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - paragraphString = paragraphString.replaceAll("\r\n",""); - paragraphString = paragraphString.replaceAll("\n",""); - paragraphString = paragraphString.trim(); - if(StringUtils.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - boolean hasGoIf = false; - for (int i = 0; i < nowStart.size(); i++) { - if (paragraphString.startsWith(nowStart.get(i))) { - // 判断名称,如果大于10位,取十位, - String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i)); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent); - - String name = lastStrTemp.toString() + "=" + secondStrTemp.toString() + "=" + nowStart.get(i); - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = getNewNowStartJapanTwo(lastStrTemp, secondStrTemp, nowStart.get(i)); - menuCanAdd = true; - hasGoIf = true; - break; - - } - - } - if (!hasGoIf && menuCanAdd) { - if (!p.getText().equals("")) { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - hasGoIf = true; - } - - // 判断是否直接跳出所有循环 - 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); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - } - - /** - * 欧洲标准 - * - * @param sarFileSplitInfoEO - * @param enumByValue - * @return - */ - public int fileEU(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); - int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("1"); -// if (sarFileSplitInfoEO.getStartNumber()<4){ -// } else { -// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); -// } - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - try (InputStream is = MinioUtil.download(readFilePath);) { - -// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 - XWPFDocument doc = new XWPFDocument(is); - - Pattern ptest = Pattern.compile("^[\\d.]*$"); -// Matcher matcher; - - // 记录拆分后的每一段文字 - List elements = doc.getBodyElements(); - // 记录word自动生成的编号数据 - Map numberMap = new HashMap(); - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - List startDigitList = getStartDigit(elements, enumByValue); - List newStartDigitList = new ArrayList<>(); - for (String startDigit : startDigitList) { - if(startDigit.endsWith(".")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf(".")); - } - newStartDigitList.add(startDigit); - } - String regex = "^[0-9]*$"; - boolean firstFlag = true; - String preName = ""; - int preNameNum = 0; -// for (IBodyElement element : elements) { - for (int g=0; g< elements.size(); g++) { - IBodyElement element = elements.get(g); - // 段落 - if (element instanceof XWPFParagraph) { - XWPFParagraph p = (XWPFParagraph) element; - - // 处理段落生成编号不识别问题 - String paragraphString = p.getText(); - if (!StringUtils.isEmpty(paragraphString)) { - paragraphString = paragraphString.replace((char) 12288, ' '); - paragraphString = paragraphString.replaceAll("\r\n",""); - paragraphString = paragraphString.replaceAll("\n",""); - paragraphString = paragraphString.trim(); - } - if(StringUtils.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - if (paragraphString.toLowerCase().contains("scope")) { - String pp = paragraphString.replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", ""); - if (!pp.substring(pp.length()-1).matches(regex)) { - firstFlag = false; - } - } - if (firstFlag) { - continue; - } - ptest = Pattern.compile("^[\\d.]*$"); - //定义查看是否有编号,没有编号则按照上一个编号放置数据 - boolean hasGoIf = false; - String startDigit = getOneStartDigit(paragraphString, enumByValue); - for (int i = 0; i < nowStart.size(); i++) { - if (startDigit.equals(nowStart.get(i)) || startDigit.equals(nowStart.get(i)+ ".") || startDigit.equals(nowStart.get(i)+ "-") ) { - // 判断一级 真的是标题还是干扰项 TODO - if (startDigit.matches("^[0-9]*.$") || startDigit.matches("^[0-9]*-$")) { - if(startDigit.endsWith(".")) { - boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf(".")), g, newStartDigitList, "."); - if (result) { - continue; - } - } else if(startDigit.endsWith("-")) { - boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit.substring(0, startDigit.lastIndexOf("-")), g, newStartDigitList, "."); - if (result) { - continue; - } - } else { - boolean result = fileSplitPdfService.judge(preName, preNameNum, startDigit, g, newStartDigitList, "."); - if (result) { - continue; - } - } - } - // 判断名称,如果大于10位,取十位, - String itemName = FileSplitUtils.getItemName(paragraphString, startDigit); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent); - - String[] numberStr = nowStart.get(i).split("\\."); - - 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); - preName = nowStart.get(i); - preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length())); - } - messageList.add(message); - nowStart = getNewNowStart(nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - break; - - } - - } - if (!hasGoIf && menuCanAdd) { - if (("annex1".equals(paragraphString.toLowerCase().replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", "")) - || "annex1a".equals(paragraphString.toLowerCase().replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", ""))) - && !messageList.get(messageList.size() - 1).getItemsNum().equals("annex")) { - - String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0]; - if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) { - String itemName = "annex"; - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent); - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue); - addItermsConditionsText(message, itemValList, paragraphString); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - messageList.add(message); - nowStart = new ArrayList<>(); - } else { - break; - } - - } else { - if (!p.getText().equals("")) { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - hasGoIf = true; - } - - // 判断是否直接跳出所有循环 - 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); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - } - - /** - * KMVSS_ARTICLE标准 - * - * @param sarFileSplitInfoEO - * @param enumByValue - * @return - */ - public int fileKmvssArticle(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); - int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("(1)"); -// if (sarFileSplitInfoEO.getStartNumber()<4){ -// } else { -// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); -// } - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - try (InputStream is = MinioUtil.download(readFilePath);){ - -// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 - XWPFDocument doc = new XWPFDocument(is); - - Pattern ptest = Pattern.compile("^[\\d.]*$"); -// Matcher matcher; - - // 记录拆分后的每一段文字 - List elements = doc.getBodyElements(); - // 记录word自动生成的编号数据 - Map numberMap = new HashMap(); - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - StringBuilder lastStr = new StringBuilder(); - 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.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - paragraphString = paragraphString.replaceAll("\r\n",""); - paragraphString = paragraphString.replaceAll("\n",""); - paragraphString = paragraphString.trim(); - if(StringUtils.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - ptest = Pattern.compile("^[\\d.]*$"); - //定义查看是否有编号,没有编号则按照上一个编号放置数据 - boolean hasGoIf = false; - for (int i = 0; i < nowStart.size(); i++) { - if (paragraphString.startsWith(nowStart.get(i))) { - // 判断名称,如果大于10位,取十位, - String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i)); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent); - - // 增加一条数据,需要在数结构中加一条数据 - String name = lastStr + "=" + nowStart.get(i); - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = getNewNowStartKmvssArticle(lastStr, nowStart.get(i)); - menuCanAdd = true; - hasGoIf = true; - break; - - } - - } - if (!hasGoIf && menuCanAdd) { - if (!p.getText().equals("")) { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } -// } - hasGoIf = true; - } - - // 判断是否直接跳出所有循环 - 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); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - } - - /** - * KMVSS_TABLE标准 - * - * @param sarFileSplitInfoEO - * @param enumByValue - * @return - */ - public int fileKmvssTable(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); - int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List itemValList = new ArrayList<>(); - - //固定字段内容跳过,包含Note:、Notes: - List filterList = new ArrayList<>(); - filterList.add("Note:"); - filterList.add("Notes:"); - - 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 nowStart = new ArrayList<>(); - //临时保存note数据列表 - List nowStartNotes = new ArrayList<>(); - //初始判断值 - nowStart.add("1."); - nowStartNotes.add("1."); -// if (sarFileSplitInfoEO.getStartNumber()<4){ -// } else { -// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); -// } - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - try (InputStream is = MinioUtil.download(readFilePath);){ - -// InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 - XWPFDocument doc = new XWPFDocument(is); - - Pattern ptest = Pattern.compile("^[\\d.]*$"); -// Matcher matcher; - - // 记录拆分后的每一段文字 - List elements = doc.getBodyElements(); - // 记录word自动生成的编号数据 -// Map numberMap = new HashMap(); - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - boolean filterFlag = false; - int menuLevel = 0;//菜单等级,分为1/2/3/4/5级 - int menuNoteLevel = 0;//菜单等级,分为1/2/3/4/5级 -// StringBuilder lastStr = new StringBuilder(); - //存储前四级目录数据 - String[] catalogerArr = new String[4]; - String[] catalogerNoteArr = new String[4]; - 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.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - paragraphString = paragraphString.replaceAll("\r\n",""); - paragraphString = paragraphString.replaceAll("\n",""); - paragraphString = paragraphString.trim(); - if(StringUtils.isEmpty(paragraphString)){ - // 处理当前段落仅为图片的情况 - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - if (messageList.size() > 0) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } - } - continue; - } - - if (filterFlag) { - boolean noteFlag = false; - for (String nowStartNote : nowStartNotes) { - if (paragraphString.startsWith(nowStartNote)) { - noteFlag = true; - //预测下一级内容 - nowStartNotes = getNewNowStartKmvssTable(catalogerNoteArr, nowStartNote, menuNoteLevel); - break; - } - } - if (!noteFlag) { - for (int i = 0; i < nowStart.size(); i++) { - if (paragraphString.startsWith(nowStart.get(i))) { - filterFlag = false; - break; - } - } - } - } - - //包含note或者notes - if (filterList.contains(paragraphString)) { - //重置所有note计数参数 - filterFlag = true; - nowStartNotes = new ArrayList<>(); - nowStartNotes.add("1."); - catalogerNoteArr = new String[4]; - menuNoteLevel = 0; - } - - ptest = Pattern.compile("^[\\d.]*$"); - //定义查看是否有编号,没有编号则按照上一个编号放置数据 - boolean hasGoIf = false; - for (int i = 0; i < nowStart.size(); i++) { - if (paragraphString.startsWith(nowStart.get(i)) && (!filterFlag)) { - // 判断名称,如果大于10位,取十位, - String itemName = FileSplitUtils.getItemName(paragraphString, nowStart.get(i)); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent); - - // 增加一条数据,需要在数结构中加一条数据 - String name = ""; - for (int j = 0; j < catalogerArr.length; j++) { - name = name + "=" + catalogerArr[j]; - } - name = name + "=" + nowStart.get(i); - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = getNewNowStartKmvssTable(catalogerArr, nowStart.get(i), menuLevel); - menuCanAdd = true; - hasGoIf = true; - break; - - } - - } - if (!hasGoIf && menuCanAdd) { - if (!p.getText().equals("")) { - addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, p.getText()); - } - List imageBundleList = readImageInParagraph((XWPFParagraph) p); - if (CollectionUtils.isNotEmpty(imageBundleList)) { - addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList); - } -// } - hasGoIf = true; - } - - // 判断是否直接跳出所有循环 - 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); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - } - - /** - * 通过传递过来的编号,得出下次可能出现的编号(欧洲) - * - * @param nowStart - * @return - */ - public static List getNewNowStartEU(String nowStart) { -// List nowStartList = new ArrayList<>(); - List nowResultStartList = new ArrayList<>(); - String[] numberStr = nowStart.split("\\."); - String startnumber = ""; - for (int i = 0; i < numberStr.length; i++) { - if (i == 0) { - startnumber = ""; - } else if (i == 1) { - startnumber = numberStr[0]; - } else { - startnumber = startnumber + "." + numberStr[i - 1]; - } - Integer lastnumber = Integer.valueOf(numberStr[i]) + 1; - nowResultStartList.add((startnumber.equals("") ? "" : (startnumber + ".")) + lastnumber + "."); - } - nowResultStartList.add(nowStart + "1."); - return nowResultStartList; - } - - /** - * 通过传递过来的编号,得出下次可能出现的编号(美国) - * - * @param nowStart - * @return - */ - public static List getNewNowStartUS(String nowStart) { -// List nowStartList = new ArrayList<>(); - List nowResultStartList = new ArrayList<>(); - String[] numberStr = nowStart.replace("S", "").split("\\."); - String startnumber = ""; - for (int i = 0; i < numberStr.length; i++) { - if (i == 0) { - startnumber = ""; - } else if (i == 1) { - startnumber = numberStr[0]; - } else { - startnumber = startnumber + "." + numberStr[i - 1]; - } - Integer lastnumber = Integer.valueOf(numberStr[i]) + 1; - nowResultStartList.add("S" + (startnumber.equals("") ? "" : (startnumber + ".")) + lastnumber); - } - nowResultStartList.add(nowStart + ".1"); - return nowResultStartList; - } - - /** - * 通过传递过来的编号,得出下次可能出现的编号(日本)方案一 - * - * @param lastStr 上一级内容 - * @param nowStart 当前标题内容 - * @return - */ - public static List getNewNowStartJapanOne(String lastStr, String nowStart) { - List nowResultStartList = new ArrayList<>(); - if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(".")) { - //包含数字且. - String[] numberStr = nowStart.split("\\."); - Integer lastnumber = Integer.valueOf(numberStr[0]) + 1; - nowResultStartList.add(lastnumber + "."); - nowResultStartList.add(nowStart.replace(".", "") + "–1"); - } else if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains("–")) { - //包含数字且- - String[] numberStr = nowStart.split("–"); - String startnumber = ""; - for (int i = 0; i < numberStr.length; i++) { - if (i == 0) { - startnumber = ""; - } else if (i == 1) { - startnumber = numberStr[0]; - } else { - startnumber = startnumber + "–" + numberStr[i - 1]; - } - Integer lastnumber = Integer.valueOf(numberStr[i]) + 1; - if (i == 0) { - nowResultStartList.add(lastnumber + "."); - } else { - nowResultStartList.add((startnumber.equals("") ? "" : (startnumber + "–")) + lastnumber); - } - - } - nowResultStartList.add(nowStart + "–1"); - } - return nowResultStartList; - } - - /** - * 通过传递过来的编号,得出下次可能出现的编号(日本2)方案2 - * - * @param lastStr 上一级内容 - * @param secondStr 第二级内容 - * @param nowStart 当前标题内容 - * @return - */ - public static List getNewNowStartJapanTwo(StringBuilder lastStr, StringBuilder secondStr, String nowStart) { - List nowResultStartList = new ArrayList<>(); - if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(".")) { - //包含数字且. - String[] numberStr = nowStart.split("\\."); - Integer lastnumber = Integer.valueOf(numberStr[0]) + 1; - if (lastStr.length() > 0) { - lastStr.delete(0, lastStr.length()); - } - lastStr.append(lastnumber).append("."); - nowResultStartList.add(lastnumber + "."); - nowResultStartList.add("(1)"); - } else if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(")")) { - //包含数字且包含括号 - String startnumber = nowStart.replace("(", "").replace(")", ""); - Integer lastnumber = Integer.valueOf(startnumber); - nowResultStartList.add("(" + (lastnumber + 1) + ")"); - if (secondStr.length() > 0) { - secondStr.delete(0, secondStr.length()); - } - secondStr.append("(").append((lastnumber + 1)).append(")"); - - //上一级内容推断 - nowResultStartList.add(lastStr.toString()); - //下一级内容推断 - nowResultStartList.add("A."); - } else if (FileSplitUtils.judgeContainsStr(nowStart)) { - String numberStr = nowStart.replace(".", ""); - String nextUpEn = FileSplitUtils.getNextUpEn(numberStr); - nowResultStartList.add(nextUpEn + "."); - - nowResultStartList.add(secondStr.toString()); - - nowResultStartList.add(lastStr.toString()); - - } - return nowResultStartList; - } - - /** - * 通过传递过来的编号,得出下次可能出现的编号 - * - * @param lastStr - * @param nowStart - * @return - */ - public static List getNewNowStartKmvssArticle(StringBuilder lastStr, String nowStart) { - List nowResultStartList = new ArrayList<>(); - if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(")")) { - //包含数字且包含括号 - String startnumber = nowStart.replace("(", "").replace(")", ""); - Integer lastnumber = Integer.valueOf(startnumber); - nowResultStartList.add("(" + (lastnumber + 1) + ")"); - if (lastStr.length() > 0) { - lastStr.delete(0, lastStr.length()); - } - lastStr.append("(").append((lastnumber + 1)).append(")"); - - //下一级内容推断 - nowResultStartList.add("1."); - } else if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(".")) { - //包含数字且. - String[] numberStr = nowStart.split("\\."); - Integer lastnumber = Integer.valueOf(numberStr[0]) + 1; - nowResultStartList.add(lastnumber + "."); - //上一级内容推断 - nowResultStartList.add(lastStr.toString()); -// nowResultStartList.add("(1)"); - } - return nowResultStartList; - } - - /** - * 通过传递过来的编号,得出下次可能出现的编号 - * - * @param catalogerArr - * @param nowStart - * @param menuLevel - * @return - */ - public static List getNewNowStartKmvssTable(String[] catalogerArr, String nowStart, int menuLevel) { - /* - *1.韩国KmvssTable模板处理 - * 分为五级拆分,拆分为以下内容: - * 第一级:1. 2. 3. 4. 等 - * 第二级:A. B. C. D. 等 - * 第三级:1) 2) 3) 4) 等 - * 第四级:A) B) C) D) 等 - * 第五级:(1) (2) (3) (4) 等 - * - */ - if (catalogerArr.length != 4) { - throw new JeroBootException("不符合目录规则,请使用其他方法"); - } - - List nowResultStartList = new ArrayList<>(); - if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(".")) { - menuLevel = 0; - //第一级:1. 2. 3. 4. 等 - String numberStr = nowStart.replace(".", ""); - Integer lastnumber = Integer.valueOf(numberStr) + 1; - catalogerArr[0] = lastnumber + "."; - nowResultStartList.add(lastnumber + "."); - //推测下级目录 - nowResultStartList.add("A."); - - } else if (FileSplitUtils.judgeContainsStr(nowStart) && nowStart.contains(".")) { - menuLevel = 1; - //第二级:A. B. C. D. 等 - String numberStr = nowStart.replace(".", ""); - String nextUpEn = FileSplitUtils.getNextUpEn(numberStr); - catalogerArr[1] = nextUpEn + "."; - nowResultStartList.add(nextUpEn + "."); - - //上一级 - nowResultStartList.add(catalogerArr[0]); - - //下一级 - nowResultStartList.add("1)"); - - - } else if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains(")") && (!nowStart.contains("("))) { - menuLevel = 2; - //第三级:1) 2) 3) 4) 等 - String numberStr = nowStart.replace(")", ""); - Integer lastnumber = Integer.valueOf(numberStr) + 1; - catalogerArr[2] = lastnumber + ")"; - nowResultStartList.add(lastnumber + ")"); - - //上一级 - nowResultStartList.add(catalogerArr[0]); - nowResultStartList.add(catalogerArr[1]); - - //下一级 - nowResultStartList.add("A)"); - - } else if (FileSplitUtils.judgeContainsStr(nowStart) && nowStart.contains(")")) { - menuLevel = 3; - //第四级:A) B) C) D) 等 - String numberStr = nowStart.replace(")", ""); - String nextUpEn = FileSplitUtils.getNextUpEn(numberStr); - catalogerArr[3] = nextUpEn + ")"; - nowResultStartList.add(nextUpEn + ")"); - - //上一级 - nowResultStartList.add(catalogerArr[0]); - nowResultStartList.add(catalogerArr[1]); - nowResultStartList.add(catalogerArr[2]); - - //下一级 - nowResultStartList.add("(1)"); - - } else if (FileSplitUtils.hasDigit(nowStart) && nowStart.contains("(") && nowStart.contains(")")) { - menuLevel = 4; - //第五级:(1) (2) (3) (4) 等 - String numberStr = nowStart.replace("(", "").replace(")", ""); - Integer lastnumber = Integer.valueOf(numberStr) + 1; -// catalogerArr[4] = lastnumber+")"; - nowResultStartList.add("(" + lastnumber + ")"); - - //上一级 - nowResultStartList.add(catalogerArr[0]); - nowResultStartList.add(catalogerArr[1]); - nowResultStartList.add(catalogerArr[2]); - nowResultStartList.add(catalogerArr[3]); - - - } - return nowResultStartList; - } /** * 通过传递过来的编号,得出下次可能出现的编号 @@ -2700,23 +905,10 @@ public class FileSpiltService { } public List getStartDigit(List elements, SplitFileTypeTypeEnum enumByValue) { - String regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]"; // TODO - switch (enumByValue) { - case GB: - case GBT: - case EU: - case GSO: - case JPN_ARTICLE: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]"; - break; - case KMVSS_ARTICLE: - case JPN_ATTACHMENT: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}–]"; - break; - case US: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}S]"; - break; - } + //\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ + //\p{Space} 空白字符:[ \t\n\x0B\f\r] + //\p{Digit} 十进制数字:[0-9] + String regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]"; Matcher matcher; List startDigitList = new ArrayList<>(); for (int l=0; l< elements.size(); l++) { diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitPdfService.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitPdfService.java index 991ff4f4..19746bbe 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitPdfService.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitPdfService.java @@ -33,1772 +33,11 @@ import java.util.regex.Pattern; @Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) public class FileSplitPdfService { - @Autowired - private SarFileSplitMenuEOMapper sarFileSplitMenuEOMapper; - @Autowired - private IFileSplitItemsEOService iSarFileSplitItemsEOService; - @Autowired - private ISarFileSplitItemsValEOService iSarFileSplitItemsValEOService; - @Autowired - private IOSSFileService iossFileService; @Autowired private FileSpiltService fileSpiltService; - @Value("${jero.path.upload}") - private String filePath; - @Value("${jero.path.uploadCos}") - private String filePathCos; - @Value("${jero.splitUrl}") - private String splitUrl; - - public int fileCHN(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - - // 拆分文件主表中插入数据 - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); -// int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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("总目录"); - documentTreeEO.setInfoId(sarFileSplitInfoEO.getId()); - documentTreeEO.setDisplaySeq(1L); - documentTreeEO.setDisplaySeq(treeListDisplay++); - documentTreeEO.setValidFlag(0); - treeList.add(documentTreeEO); - - List nowStart = new ArrayList<>(); - nowStart.add("1"); - try { - - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - - String readPdf = ReadPdfUtil.readPdf(readFilePath); - if (StringUtils.isEmpty(readPdf)) { - throw new JeroBootException("未读取到文件内容,请检查后重试!"); - } - String[] pdfArrays; - - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - pdfArrays = readPdf.split("\r\n"); - } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 - pdfArrays = readPdf.split("\n"); - } else { //其它操作系统 - pdfArrays = readPdf.split("\n"); - } - - List startDigitList = getStartDigit(pdfArrays, enumByValue); - String regex = "^[0-9]*$"; - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - boolean firstFlag = true; - String preName = ""; - int preNameNum = 0; -// for (String paragraphString : pdfArrays) { - for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); - String itemName = FileSplitUtils.getItemName(paragraphString, startDigit); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent); - - String[] numberStr = startDigit.split("\\."); - if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) { - menuCanAdd = false; - } else { - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(startDigit, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - preName = startDigit; - preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length())); - } - messageList.add(message); - nowStart = fileSpiltService.getNewNowStart(startDigit); -// nowStart.addAll(treeList.stream().filter(e->!"1".equals(e.getName())).map(SarFileSplitMenuEO:: getName).collect(Collectors.toList())); - menuCanAdd = true; - } - hasGoIf = true; - break; - - } - } - // 不是标题行 - if (!hasGoIf && menuCanAdd) { - Pattern ptest = Pattern.compile("^附录\\s{0,50}[A-Z]{1}"); - Matcher matcher = ptest.matcher(paragraphString); - // 获取当前最后一项num - if (matcher.find() && !messageList.get(messageList.size() - 1).getItemsNum().equals("附录")) { - String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0]; - if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) { - String itemName = "附录"; - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "附录", itemName, clauseContent); - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList("附录", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue); - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - messageList.add(message); - nowStart = new ArrayList<>(); - } else { - break; - } - } else { - if (!paragraphString.equals("")) { - fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString); - } - } - hasGoIf = true; - } - // 判断是否直接跳出所有循环 - if (!menuCanAdd && messageList.size() > 0) { - break; - } - } - - } catch (JeroBootException e) { - e.printStackTrace(); - throw new JeroBootException(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - return -1; - } - if (treeList.size() > 0 && messageList.size() > 0) { - sarFileSplitMenuEOMapper.insertForeach(treeList); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - public int fileGSO(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - - // 拆分文件主表中插入数据 - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } -// dao.insertSelective(sarFileSplitInfoEO); - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); -// int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("1"); - try { - - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - - String readPdf = ReadPdfUtil.readPdf(readFilePath); - if (StringUtils.isEmpty(readPdf)) { - throw new JeroBootException("未读取到文件内容,请检查后重试!"); - } - String[] pdfArrays; - - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - pdfArrays = readPdf.split("\r\n"); - } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 - pdfArrays = readPdf.split("\n"); - } else { //其它操作系统 - pdfArrays = readPdf.split("\n"); - } - - List startDigitList = getStartDigit(pdfArrays, enumByValue); - List newStartDigitList = new ArrayList<>(); - for (String startDigit : startDigitList) { - if(startDigit.endsWith(".")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf(".")); - } - newStartDigitList.add(startDigit); - } - String regex = "^[0-9]*$"; - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - boolean firstFlag = true; - String preName = ""; - int preNameNum = 0; -// for (String paragraphString : pdfArrays) { - for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); - String itemName = FileSplitUtils.getItemName(paragraphString, startDigit); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent); - - String[] numberStr = nowStart.get(i).split("\\."); - if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) { - menuCanAdd = false; - } else { - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - preName = nowStart.get(i); - preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length())); - } - messageList.add(message); - nowStart = fileSpiltService.getNewNowStart(nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - break; - - } - } - // 不是标题行 - if (!hasGoIf && menuCanAdd) { - if ("annex1".equals(paragraphString.toLowerCase().replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", "")) - && !messageList.get(messageList.size() - 1).getItemsNum().equals("annex")) { - - String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0]; - if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) { - String itemName = "annex"; - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent); - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue); - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - messageList.add(message); - nowStart = new ArrayList<>(); - } else { - break; - } - - } else { - if (!paragraphString.equals("")) { - fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString); - } - } - hasGoIf = true; - } - // 判断是否直接跳出所有循环 - if (!menuCanAdd && messageList.size() > 0) { - break; - } - } - - } catch (JeroBootException e) { - e.printStackTrace(); - throw new JeroBootException(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - return -1; - } - if (treeList.size() > 0 && messageList.size() > 0) { - sarFileSplitMenuEOMapper.insertForeach(treeList); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - public int fileEU(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - - // 拆分文件主表中插入数据 - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } -// dao.insertSelective(sarFileSplitInfoEO); - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); -// int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("1"); - try { - - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - - String readPdf = ReadPdfUtil.readPdf(readFilePath); - if (StringUtils.isEmpty(readPdf)) { - throw new JeroBootException("未读取到文件内容,请检查后重试!"); - } - String[] pdfArrays; - - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - pdfArrays = readPdf.split("\r\n"); - } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 - pdfArrays = readPdf.split("\n"); - } else { //其它操作系统 - pdfArrays = readPdf.split("\n"); - } - - List startDigitList = getStartDigit(pdfArrays, enumByValue); - List newStartDigitList = new ArrayList<>(); - for (String startDigit : startDigitList) { - if(startDigit.endsWith(".")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf(".")); - } - newStartDigitList.add(startDigit); - } - String regex = "^[0-9]*$"; - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - boolean firstFlag = true; - String preName = ""; - int preNameNum = 0; -// for (String paragraphString : pdfArrays) { - for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); - String itemName = FileSplitUtils.getItemName(paragraphString, startDigit); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, 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 = fileSpiltService.getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - preName = nowStart.get(i); - preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length())); - } - messageList.add(message); -// nowStart = fileSpiltService.getNewNowStartEU(nowStart.get(i)); - nowStart = fileSpiltService.getNewNowStart(nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - break; - - } - } - // 不是标题行 - if (!hasGoIf && menuCanAdd) { - if (("annex1".equals(paragraphString.toLowerCase().replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", "")) - || "annex1a".equals(paragraphString.toLowerCase().replaceAll("\t", "") - .replaceAll("\b", "").replaceAll(" ", ""))) - && !messageList.get(messageList.size() - 1).getItemsNum().equals("annex")) { - - String appendixNum = messageList.get(messageList.size() - 1).getItemsNum().split("\\.")[0]; - if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) { - String itemName = "annex"; - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent); - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue); - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - messageList.add(message); - nowStart = new ArrayList<>(); - } else { - break; - } - - } else { - if (!paragraphString.equals("")) { - fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString); - } - } - hasGoIf = true; - } - // 判断是否直接跳出所有循环 - if (!menuCanAdd && messageList.size() > 0) { - break; - } - } - - } catch (JeroBootException e) { - e.printStackTrace(); - throw new JeroBootException(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - return -1; - } - if (treeList.size() > 0 && messageList.size() > 0) { - sarFileSplitMenuEOMapper.insertForeach(treeList); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - - public int fileUSA(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - - // 拆分文件主表中插入数据 - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } -// dao.insertSelective(sarFileSplitInfoEO); - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); -// int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("S1"); - try { - - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - - String readPdf = ReadPdfUtil.readPdf(readFilePath); - if (StringUtils.isEmpty(readPdf)) { - throw new JeroBootException("未读取到文件内容,请检查后重试!"); - } - String[] pdfArrays; - - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - pdfArrays = readPdf.split("\r\n"); - } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 - pdfArrays = readPdf.split("\n"); - } else { //其它操作系统 - pdfArrays = readPdf.split("\n"); - } - - List startDigitList = getStartDigit(pdfArrays, enumByValue); - List newStartDigitList = new ArrayList<>(); - for (String startDigit : startDigitList) { - if(startDigit.endsWith("S")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf("S")); - } - if(startDigit.endsWith(".")) { - startDigit = startDigit.substring(0, startDigit.lastIndexOf(".")); - } - newStartDigitList.add(startDigit); - } -// String regex = "^[0-9]*$"; - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 -// boolean firstFlag = true; - String preName = ""; - int preNameNum = 0; -// for (String paragraphString : pdfArrays) { - for (int g=0; g10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); - String itemName = FileSplitUtils.getItemName(paragraphString, startDigit); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, 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 = fileSpiltService.getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - preName = nowStart.get(i); - preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(startDigit.length())); - } - messageList.add(message); - nowStart = fileSpiltService.getNewNowStartUS(nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - break; - - } - } - // 不是标题行 - if (!hasGoIf && menuCanAdd) { - if (!paragraphString.equals("")) { - fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString); - } - hasGoIf = true; - } - // 判断是否直接跳出所有循环 - if (!menuCanAdd && messageList.size() > 0) { - break; - } - } - - } catch (JeroBootException e) { - e.printStackTrace(); - throw new JeroBootException(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - return -1; - } - if (treeList.size() > 0 && messageList.size() > 0) { - sarFileSplitMenuEOMapper.insertForeach(treeList); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - public int fileKmvssArticle(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - - // 拆分文件主表中插入数据 - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } -// dao.insertSelective(sarFileSplitInfoEO); - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); -// int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - nowStart.add("(1)"); - try { - - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - - String readPdf = ReadPdfUtil.readPdf(readFilePath); - if (StringUtils.isEmpty(readPdf)) { - throw new JeroBootException("未读取到文件内容,请检查后重试!"); - } - String[] pdfArrays; - - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - pdfArrays = readPdf.split("\r\n"); - } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 - pdfArrays = readPdf.split("\n"); - } else { //其它操作系统 - pdfArrays = readPdf.split("\n"); - } - -// List startDigitList = getStartDigit(pdfArrays, enumByValue); -// String regex = "^[0-9]*$"; - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - StringBuilder lastStr = new StringBuilder(); -// boolean firstFlag = true; -// for (String paragraphString : pdfArrays) { - for (int g=0; g10?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 clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent); - - // 增加一条数据,需要在数结构中加一条数据 - String name = lastStr + "=" + nowStart.get(i); - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = fileSpiltService.getNewNowStartKmvssArticle(lastStr, nowStart.get(i)); - menuCanAdd = true; - hasGoIf = true; - break; - - } - } - // 不是标题行 - if (!hasGoIf && menuCanAdd) { - if (!paragraphString.equals("")) { - fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString); - } - hasGoIf = true; - } - // 判断是否直接跳出所有循环 - if (!menuCanAdd && messageList.size() > 0) { - break; - } - } - - } catch (JeroBootException e) { - e.printStackTrace(); - throw new JeroBootException(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - return -1; - } - if (treeList.size() > 0 && messageList.size() > 0) { - sarFileSplitMenuEOMapper.insertForeach(treeList); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - public int fileKmvssTable(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - - // 拆分文件主表中插入数据 - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } -// dao.insertSelective(sarFileSplitInfoEO); - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); -// int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List itemValList = new ArrayList<>(); - //固定字段内容跳过,包含Note:、Notes: - List filterList = new ArrayList<>(); - filterList.add("Note:"); - filterList.add("Notes:"); - - 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 nowStart = new ArrayList<>(); - //临时保存note数据列表 - List nowStartNotes = new ArrayList<>(); - //初始判断值 - nowStart.add("1."); - nowStartNotes.add("1."); - try { - - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - - String readPdf = ReadPdfUtil.readPdf(readFilePath); - if (StringUtils.isEmpty(readPdf)) { - throw new JeroBootException("未读取到文件内容,请检查后重试!"); - } - String[] pdfArrays; - - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - pdfArrays = readPdf.split("\r\n"); - } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 - pdfArrays = readPdf.split("\n"); - } else { //其它操作系统 - pdfArrays = readPdf.split("\n"); - } - -// List startDigitList = getStartDigit(pdfArrays, enumByValue); -// String regex = "^[0-9]*$"; - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - boolean filterFlag = false; - int menuLevel = 0;//菜单等级,分为1/2/3/4/5级 - int menuNoteLevel = 0;//菜单等级,分为1/2/3/4/5级 - //存储前四级目录数据 - String[] catalogerArr = new String[4]; - String[] catalogerNoteArr = new String[4]; -// boolean firstFlag = true; -// for (String paragraphString : pdfArrays) { - for (int g=0; g(); - nowStartNotes.add("1."); - catalogerNoteArr = new String[4]; - menuNoteLevel = 0; - } - - boolean hasGoIf = false; - // 处理标题行 -// String startDigit = getOneStartDigit(paragraphString,enumByValue); - for (int i = 0; i < nowStart.size(); i++) { - if (paragraphString.startsWith(nowStart.get(i)) && (!filterFlag)) { -// if (startDigit.equals(nowStart.get(i))) { - // 判断真的是标题还是干扰项 TODO -// String startDigit = nowStart.get(i); -// if (startDigit.matches(regex)) { -// boolean result = judge(nowStart, startDigit, startDigitList, "\\."); -// if (result) { -// continue; -// } -// } - // 判断名称,如果大于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 = FileSplitUtils.getItemName(paragraphString, nowStart.get(i)); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent); - - // 增加一条数据,需要在数结构中加一条数据 - String name = ""; - for (int j = 0; j < catalogerArr.length; j++) { - name = name + "=" + catalogerArr[j]; - } - name = name + "=" + nowStart.get(i); - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = fileSpiltService.getNewNowStartKmvssTable(catalogerArr, nowStart.get(i), menuLevel); - menuCanAdd = true; - hasGoIf = true; - break; - - } - } - // 不是标题行 - if (!hasGoIf && menuCanAdd) { - if (!paragraphString.equals("")) { - fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString); - } - hasGoIf = true; - } - // 判断是否直接跳出所有循环 - if (!menuCanAdd && messageList.size() > 0) { - break; - } - } - - } catch (JeroBootException e) { - e.printStackTrace(); - throw new JeroBootException(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - return -1; - } - if (treeList.size() > 0 && messageList.size() > 0) { - sarFileSplitMenuEOMapper.insertForeach(treeList); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - public int fileJapanOne(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - - // 拆分文件主表中插入数据 - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } -// dao.insertSelective(sarFileSplitInfoEO); - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); -// int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - //初始判断值 - nowStart.add("1."); - try { - - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - - String readPdf = ReadPdfUtil.readPdf(readFilePath); - if (StringUtils.isEmpty(readPdf)) { - throw new JeroBootException("未读取到文件内容,请检查后重试!"); - } - String[] pdfArrays; - - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - pdfArrays = readPdf.split("\r\n"); - } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 - pdfArrays = readPdf.split("\n"); - } else { //其它操作系统 - pdfArrays = readPdf.split("\n"); - } - -// List startDigitList = getStartDigit(pdfArrays, enumByValue); -// String regex = "^[0-9]*$"; - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 -// boolean firstFlag = true; -// String preName = ""; -// int preNameNum = 0; -// for (String paragraphString : pdfArrays) { - for (int g=0; g10?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 clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent); - - String[] numberStr; - if (nowStart.get(i).contains(".")) { - numberStr = nowStart.get(i).split("\\."); - } else { - numberStr = nowStart.get(i).split("–"); - } -// String numberStrTemp = numberStr[0].replace("S", ""); - - if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) { - menuCanAdd = false; - } else { - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(nowStart.get(i), treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); -// preName = nowStart.get(i); -// preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = fileSpiltService.getNewNowStartJapanOne("", nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - - break; - - - } - } - // 不是标题行 - if (!hasGoIf && menuCanAdd) { - if (!paragraphString.equals("")) { - fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString); - } - hasGoIf = true; - } - // 判断是否直接跳出所有循环 - if (!menuCanAdd && messageList.size() > 0) { - break; - } - } - - } catch (JeroBootException e) { - e.printStackTrace(); - throw new JeroBootException(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - return -1; - } - if (treeList.size() > 0 && messageList.size() > 0) { - sarFileSplitMenuEOMapper.insertForeach(treeList); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - public int fileJapanTwo(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { - - // 拆分文件主表中插入数据 - if (sarFileSplitInfoEO.getStopNumber() <= 0) { - sarFileSplitInfoEO.setStopNumber(200); - } - if (sarFileSplitInfoEO.getStartNumber() <= 0) { - sarFileSplitInfoEO.setStartNumber(1); - } -// dao.insertSelective(sarFileSplitInfoEO); - - // 拆分文件条款表中最终插入数据 - List messageList = new ArrayList<>(); -// int messageNumber = 0; - // 拆分文件目录表中最终插入数据 - List treeList = new ArrayList<>(); - // 拆分文件条款详情表中最终插入数据 - List 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 nowStart = new ArrayList<>(); - //初始判断值 - nowStart.add("1."); - try { - - //获取文件地址 - String connectId = sarFileSplitInfoEO.getConnectId(); - String fileName = sarFileSplitInfoEO.getFileName(); - if (StringUtils.isEmpty(connectId) || StringUtils.isEmpty(fileName)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(OSSFile::getConnectId, connectId); - queryWrapper.eq(OSSFile::getFileName, fileName); - queryWrapper.orderByDesc(OSSFile::getCreateTime); - List ossFileList = iossFileService.list(queryWrapper); - if (CollectionUtils.isEmpty(ossFileList)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - OSSFile ossFile = ossFileList.get(0); - String readFilePath = ossFile.getUrl(); - - if (StringUtils.isEmpty(readFilePath) || !MinioUtil.doesObjectExist(readFilePath)) { - throw new JeroBootException("当前文件未找到,请重新选择!"); - } - - String readPdf = ReadPdfUtil.readPdf(readFilePath); - if (StringUtils.isEmpty(readPdf)) { - throw new JeroBootException("未读取到文件内容,请检查后重试!"); - } - String[] pdfArrays; - - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - pdfArrays = readPdf.split("\r\n"); - } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统 - pdfArrays = readPdf.split("\n"); - } else { //其它操作系统 - pdfArrays = readPdf.split("\n"); - } - -// List startDigitList = getStartDigit(pdfArrays, enumByValue); -// String regex = "^[0-9]*$"; - boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据 - StringBuilder lastStrTemp = new StringBuilder(); - StringBuilder secondStrTemp = new StringBuilder(); -// boolean firstFlag = true; -// String preName = ""; -// int preNameNum = 0; -// for (String paragraphString : pdfArrays) { - for (int g=0; g10?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 clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = fileSpiltService.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 { - // 增加一条数据,需要在数结构中加一条数据 - String name = lastStrTemp.toString() + "=" + secondStrTemp.toString() + "=" + nowStart.get(i); - SarFileSplitMenuEO sarFileSplitMenuEO = fileSpiltService.getTreeList(name, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, itemName, enumByValue); - treeList.add(sarFileSplitMenuEO); -// preName = nowStart.get(i); -// preNameNum = g; - message.setMenuId(sarFileSplitMenuEO.getId()); - if(!StringUtils.isEmpty(itemName)){ - fileSpiltService.addItermsConditionsText(message, itemValList, paragraphString.substring(nowStart.get(i).length())); - } - messageList.add(message); - nowStart = fileSpiltService.getNewNowStartJapanTwo(lastStrTemp, secondStrTemp, nowStart.get(i)); - menuCanAdd = true; -// } - hasGoIf = true; - break; - - - } - } - // 不是标题行 - if (!hasGoIf && menuCanAdd) { - if (!paragraphString.equals("")) { - fileSpiltService.addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString); - } - hasGoIf = true; - } - // 判断是否直接跳出所有循环 - if (!menuCanAdd && messageList.size() > 0) { - break; - } - } - - } catch (JeroBootException e) { - e.printStackTrace(); - throw new JeroBootException(e.getMessage()); - } catch (Exception e) { - e.printStackTrace(); - return -1; - } - if (treeList.size() > 0 && messageList.size() > 0) { - sarFileSplitMenuEOMapper.insertForeach(treeList); - for (int i = 0; i < messageList.size(); i++) { - messageList.get(i).setZhan3Shi4Shun4Xu4(String.valueOf(i+1)); - } - iSarFileSplitItemsEOService.insertForeach(messageList); - iSarFileSplitItemsValEOService.insertForeach(itemValList); - } else { - return -1; - } - return treeList.size(); - - } - - public String getOneStartDigit(String arr, SplitFileTypeTypeEnum enumByValue) { - String regex="[^\\p{Punct}\\p{Space}\\p{Digit}]"; // TODO - switch (enumByValue) { - case GB: - case GBT: - case EU: - case GSO: - case JPN_ARTICLE: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]"; - break; - case KMVSS_ARTICLE: - case JPN_ATTACHMENT: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}–]"; - break; - case US: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}S]"; - break; - } - Matcher matcher; - matcher = Pattern.compile(regex).matcher(arr); - if(matcher.find()) { - int index = matcher.start(); - String startDigit = arr.substring(0, index); - startDigit = startDigit.replaceAll(" ", ""); - if(StringUtils.isNotBlank(startDigit)) { - return startDigit.replaceAll("\t", "").replaceAll("\b", "") - .replaceAll("\"", "").replaceAll("\'", ""); - } - } else { - return arr.replaceAll("\t", "").replaceAll("\b", "") - .replaceAll(" ", "").replaceAll("\"", "").replaceAll("\'", ""); - } - return ""; - } - - public List getStartDigit(String[] pdfArrays, SplitFileTypeTypeEnum enumByValue) { - String regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]"; // TODO - switch (enumByValue) { - case GB: - case GBT: - case EU: - case GSO: - case JPN_ARTICLE: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}]"; - break; - case KMVSS_ARTICLE: - case JPN_ATTACHMENT: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}–]"; - break; - case US: - regex = "[^\\p{Punct}\\p{Space}\\p{Digit}S]"; - break; - } - List startDigitList = new ArrayList<>(); - Matcher matcher; - boolean firstFlag = true; - for(int i=0; i startDigitList, String splitChar) { - if(StringUtils.isNotBlank(preName)) { - List nowStartList = fileSpiltService.getNewNowStartJapanOne(null,preName); - - List subList1 = startDigitList.subList(preNameNum, startDigitList.size()-1); - // 后文有一级以下的标题 - for (int i = nowStartList.size() - 1; i >= 1; i--) { - int index1 = subList1.indexOf(nowStartList.get(i)); - if (index1 != -1 && (index1-0) <= 100) { // TODO - return true; - } - } - - // 后文没有一级以下的标题 - // 先看看一级有没重复 - int index3 = subList1.indexOf(currentNowStart + splitChar + "1"); - if(index3 == -1 || index3 > 100 ) { - index3 = subList1.indexOf(nowStartList.get(0)); - } - if(index3 > 0 && index3 <= 100) { - List subList = subList1.subList(0, index3); // 这个范围要尽可能的小 - int index4 = subList.indexOf(currentNowStart); - int index5 = subList.lastIndexOf(currentNowStart); - if (index4 != index5 && index5 != (currentNum-preNameNum)) { // TODO - return true; - } - } - - } - return false; - } } diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java index a0ceced5..aac4f411 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java @@ -57,8 +57,6 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl