From 30dc7de186a54cfa2b60be2a76ec8c6a40852386 Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Tue, 23 Jul 2024 10:00:18 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=96=87=E6=A1=A3=E6=8B=86=E5=88=86):=20ec?= =?UTF-8?q?e=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../split/service/impl/FileSpiltService.java | 73 ++++++++++++++----- .../impl/FileSplitItemsEOServiceImpl.java | 17 +++-- .../jero/modules/split/util/AsposeUtil.java | 7 +- .../modules/split/util/FileSplitUtils.java | 3 +- 4 files changed, 72 insertions(+), 28 deletions(-) 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 6a14f975..d1e8bd55 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 @@ -24,7 +24,6 @@ import com.jero.modules.split.mapper.SarFileSplitMenuEOMapper; import com.jero.modules.split.service.IFileSplitItemsEOService; import com.jero.modules.split.service.ISarFileSplitItemsValEOService; import com.jero.modules.split.util.AsposeUtil; -import com.jero.modules.split.util.FileSplitUtils; import com.jero.modules.split.util.ParagraphChildOrderManager; import com.jero.modules.split.util.ReadWordTable; import com.jero.modules.split.vo.TitleNumberVO; @@ -1045,7 +1044,11 @@ public class FileSpiltService { return startDigitList; } - public String getOneStartDigit(String arr, SplitFileTypeTypeEnum enumByValue) { + public static void main(String[] args) { + getOneStartDigit("Scope", SplitFileTypeTypeEnum.UN); + } + + public static String getOneStartDigit(String arr, SplitFileTypeTypeEnum enumByValue) { //\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ //\p{Space} 空白字符:[ \t\n\x0B\f\r] //\p{Digit} 十进制数字:[0-9] @@ -1130,13 +1133,19 @@ public class FileSpiltService { throw new JeroBootException("当前文件未找到,请重新选择!"); } // try (InputStream is = MinioUtil.download(readFilePath)) { - try (InputStream is = ObsBootUtil.getOssFile(readFilePath)) { + try (InputStream is = ObsBootUtil.getOssFile(readFilePath); + InputStream is2 = ObsBootUtil.getOssFile(readFilePath)) { // InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 XWPFDocument doc = new XWPFDocument(is); Pattern ptest = Pattern.compile("^[\\d.]*$"); // Matcher matcher; + //获得序号标题和无标题序号 + TitleNumberVO titleNumberVO = AsposeUtil.getNumber(is2); + //TitleNumberVO titleNumberVO = new TitleNumberVO(); + Map> titleNumberMap = titleNumberVO.getTitleNumberMap(); + // 记录拆分后的每一段文字 List elements = doc.getBodyElements(); // 记录word自动生成的编号数据 @@ -1160,7 +1169,6 @@ public class FileSpiltService { // 段落 if (element instanceof XWPFParagraph) { XWPFParagraph p = (XWPFParagraph) element; - StringBuilder stringBuilder = new StringBuilder(); for (XWPFRun xwrun : p.getRuns()) { VerticalAlign subscript = xwrun.getSubscript(); @@ -1204,7 +1212,7 @@ public class FileSpiltService { } continue; } - if (paragraphString.toLowerCase().contains("scope")) { + if (paragraphString.contains("SCOPE")) { String pp = paragraphString.replaceAll("\t", "") .replaceAll("\b", "").replaceAll(" ", ""); if (!pp.substring(pp.length()-1).matches(regex)) { @@ -1234,7 +1242,20 @@ public class FileSpiltService { ptest = Pattern.compile("^[\\d.]*$"); //定义查看是否有编号,没有编号则按照上一个编号放置数据 boolean hasGoIf = false; - String startDigit = getOneStartDigit(paragraphString, enumByValue); + String startDigit = ""; + String replace = paragraphString.replace("\"", ""); + List stringList = titleNumberMap.get(replace); + if (CollectionUtils.isNotEmpty(stringList)){ + startDigit = stringList.get(0); + if (messageList.size() == 0){ + startDigit = startDigit.replace(".", ""); + } + + paragraphString = startDigit + paragraphString; + }else { + startDigit = getOneStartDigit(paragraphString, enumByValue); + } + for (int i = 0; i < nowStart.size(); i++) { // if (paragraphString.startsWith(nowStart.get(i))) { if (startDigit.equals(nowStart.get(i)) || startDigit.equals(nowStart.get(i)+ ".") || startDigit.equals(nowStart.get(i)+ "-") ) { @@ -1259,7 +1280,13 @@ public class FileSpiltService { } // 判断名称,如果大于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, startDigit); +// String itemName = FileSplitUtils.getItemName(paragraphString, startDigit); + String itemName; + if (paragraphString.indexOf(nowStart.get(i)) == 0){ + itemName = paragraphString.substring(nowStart.get(i).length()).trim().length() > 10 ? paragraphString.substring(nowStart.get(i).length()).trim().substring(0,10) :paragraphString.substring(nowStart.get(i).length()).trim(); + }else { + itemName = paragraphString.substring(nowStart.get(i).length()).length() > 10 ? paragraphString.substring(nowStart.get(i).length(), nowStart.get(i).length() + 10) : paragraphString.substring(nowStart.get(i).length()); + } List clauseContent = new ArrayList<>(); clauseContent.add(paragraphString); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), startDigit, itemName, clauseContent); @@ -1291,20 +1318,32 @@ public class FileSpiltService { } 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).getItemNum().equals("annex")) { + if (paragraphString.toLowerCase().replaceAll("\t", "").startsWith("annex 1") + || paragraphString.toLowerCase().replaceAll("\t", "").startsWith("annex 1a") + && !messageList.get(messageList.size() - 1).getItemNum().equals("annex")){ - String appendixNum = messageList.get(messageList.size() - 1).getItemNum().split("\\.")[0]; - if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) { - String itemName = "annex"; +// } +// if (("annex 1".equals(paragraphString.toLowerCase().replaceAll("\t", "") +// .replaceAll("\b", "").replaceAll(" ", "")) +// || "annex 1a".equals(paragraphString.toLowerCase().replaceAll("\t", "") +// .replaceAll("\b", "").replaceAll(" ", ""))) +// && !messageList.get(messageList.size() - 1).getItemNum().equals("annex")) { + +// String appendixNum = messageList.get(messageList.size() - 1).getItemNum().split("\\.")[0]; +// if (Integer.valueOf(appendixNum) + 1 <= sarFileSplitInfoEO.getStopNumber()) { + if (!messageList.get(messageList.size() - 1).getItemNum().equals("annex")) { +// String itemName = "annex"; + String itemName = paragraphString; List clauseContent = new ArrayList<>(); clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent); + // 如果itemName长度大于10截取前10位 + if (itemName.length() > 10) { + itemName = itemName.substring(0, 10); + } +// SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), "annex", itemName, clauseContent); + SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), itemName, "", clauseContent); // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("annex", treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(itemName, treeList, generalCatalogueId, sarFileSplitInfoEO, treeListDisplay++, "", enumByValue); addItermsConditionsText(message, itemValList, paragraphString, p.getAlignment()); treeList.add(sarFileSplitMenuEO); message.setMenuId(sarFileSplitMenuEO.getId()); diff --git a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java index 94279613..630dee48 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java @@ -18,6 +18,7 @@ import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.*; +import com.jero.common.util.obs.ObsBootUtil; import com.jero.generater.modules.online.cgform.entity.OnlCgformField; import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl; import com.jero.modules.document.enums.FieldTypeEnum; @@ -1782,15 +1783,15 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl