From 9f2b297d00e187b44e8f242fe9361f4a496aacf6 Mon Sep 17 00:00:00 2001 From: wangchengjun Date: Sun, 10 Apr 2022 23:14:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86word=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BussDocumentLibraryEOServiceImpl.java | 51 +- .../split/enums/SplitFileTypeTypeEnum.java | 3 +- .../split/service/impl/FileSpiltService.java | 842 +++++++++++++++--- .../impl/SarFileSplitInfoServiceImpl.java | 16 +- .../modules/split/util/FileSplitUtils.java | 62 ++ jero-web/src/common/lang/en-us.js | 3 +- jero-web/src/common/lang/zh-cn.js | 3 +- .../splitting/modules/SplitText.vue | 7 +- 8 files changed, 847 insertions(+), 140 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileSplitUtils.java diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index a8cf3306f..d37450c3e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -51,6 +51,7 @@ import com.jero.modules.system.service.impl.SysDictItemServiceImpl; import com.jero.modules.tag.entity.OnlCgformArea; import com.jero.modules.tag.service.impl.OnlCgformAreaServiceImpl; import lombok.SneakyThrows; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -2178,32 +2179,34 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl userIdList = domainUserRelService.queryDomainUserRelInfo(mapTemp); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(SysUser::getId,userIdList); - List sysUserList = sysUserService.list(wrapper); - List thirdIdList = sysUserList.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(userIdList)){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SysUser::getId,userIdList); + List sysUserList = sysUserService.list(wrapper); + List thirdIdList = sysUserList.stream().map(SysUser::getThirdId).collect(Collectors.toList()); - String id = (String) map.get("id"); - String title = (String) map.get("title"); - String href = "" + serialNumber + ""; - String url = backUrl + "/docManage/library/detail?id=" + id; + String id = (String) map.get("id"); + String title = (String) map.get("title"); + String href = "" + serialNumber + ""; + String url = backUrl + "/docManage/library/detail?id=" + id; - if (StringUtils.isNotBlank(sbStr.toString())) { - String content = sysUser.getRealname() + "对" + serialNumber + "进行了修改,请及时查看"; - String contentInfo = sysUser.getRealname() + "修改标准" + href + "中" + sbStr.toString(); - //封装消息的实体类 - SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, content, contentInfo); - sysAnnouncementService.saveAnnouncement(sysAnnouncement); - sendWebsocket((String) map.get("id"), (String) map.get("id")); - } - //飞书 - try { - String content = sysUser.getRealname() + "对" + serialNumber + "进行了修改,请及时查看"; - iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), content, MessageTypeEnum.READ.getName(), url); - } catch (IOException e) { - log.error("文档新增飞书消息推送失败"); + if (StringUtils.isNotBlank(sbStr.toString())) { + String content = sysUser.getRealname() + "对" + serialNumber + "进行了修改,请及时查看"; + String contentInfo = sysUser.getRealname() + "修改标准" + href + "中" + sbStr.toString(); + //封装消息的实体类 + SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, content, contentInfo); + sysAnnouncementService.saveAnnouncement(sysAnnouncement); + sendWebsocket((String) map.get("id"), (String) map.get("id")); + } + //飞书 + try { + String content = sysUser.getRealname() + "对" + serialNumber + "进行了修改,请及时查看"; + iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), content, MessageTypeEnum.READ.getName(), url); + } catch (IOException e) { + log.error("文档新增飞书消息推送失败"); + } } // } //2. 处理修改代替标准的发送消息(法规负责人) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/enums/SplitFileTypeTypeEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/enums/SplitFileTypeTypeEnum.java index 6a4b81ac1..b250e85f1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/enums/SplitFileTypeTypeEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/enums/SplitFileTypeTypeEnum.java @@ -11,7 +11,8 @@ public enum SplitFileTypeTypeEnum { KOREAN("Korean","韩国"), US("US","美国"), EU("EU","欧洲"), - JAPAN("Japan","日本"), + JAPAN_ONE("Japan_one","日本"), + JAPAN_TWO("Japan_two","日本"), CN("CN","中国"); private String value; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java index ad3204f2a..e06127cd1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java @@ -7,9 +7,11 @@ import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.split.entity.*; import com.jero.modules.split.enums.SplitFilePragraTypeEnum; +import com.jero.modules.split.enums.SplitFileTypeTypeEnum; import com.jero.modules.split.mapper.SarFileSplitMenuEOMapper; import com.jero.modules.split.service.ISarFileSplitItemsEOService; import com.jero.modules.split.service.ISarFileSplitItemsValEOService; +import com.jero.modules.split.util.FileSplitUtils; import com.jero.modules.split.util.ReadWordTable; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -58,14 +60,17 @@ public class FileSpiltService { @Value("${jero.path.upload}") private String filePath; + @Value("${jero.splitUrl}") + private String splitUrl; /** * 中国标准数据拆分 * @param sarFileSplitInfoEO + * @param enumByValue * @return */ - public int fileCHN(SarFileSplitInfoEO sarFileSplitInfoEO) { + public int fileCHN(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { if (sarFileSplitInfoEO.getStopNumber()<=0){ sarFileSplitInfoEO.setStopNumber(200); } @@ -268,7 +273,7 @@ public class FileSpiltService { menuCanAdd = false; } else { // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); @@ -293,7 +298,7 @@ public class FileSpiltService { clauseContent.add(paragraphString); SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),"附录",itemName,clauseContent); // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("附录",treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,""); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList("附录",treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,"",enumByValue); addItermsConditionsText(message,itemValList,paragraphString); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); @@ -349,9 +354,10 @@ public class FileSpiltService { /** * GSO 欧洲标准拆分 * @param sarFileSplitInfoEO + * @param enumByValue * @return */ - public int fileGSO(SarFileSplitInfoEO sarFileSplitInfoEO) { + public int fileGSO(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { // 拆分文件主表中插入数据 if (sarFileSplitInfoEO.getStopNumber()<=0){ sarFileSplitInfoEO.setStopNumber(200); @@ -459,7 +465,7 @@ public class FileSpiltService { menuCanAdd = false; } else { // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); @@ -481,7 +487,7 @@ public class FileSpiltService { menuCanAdd = false; } else { // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); @@ -526,9 +532,10 @@ public class FileSpiltService { /** * 美国标准 * @param sarFileSplitInfoEO + * @param enumByValue * @return */ - public int fileUSA(SarFileSplitInfoEO sarFileSplitInfoEO) { + public int fileUSA(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { if (sarFileSplitInfoEO.getStopNumber()<=0){ sarFileSplitInfoEO.setStopNumber(200); } @@ -634,7 +641,7 @@ public class FileSpiltService { menuCanAdd = false; } else { // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); @@ -658,7 +665,7 @@ public class FileSpiltService { menuCanAdd = false; } else { // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); @@ -701,11 +708,12 @@ public class FileSpiltService { } /** - *欧洲标准 + *日本标准 * @param sarFileSplitInfoEO + * @param enumByValue * @return */ - public int fileEU(SarFileSplitInfoEO sarFileSplitInfoEO) { + public int fileJapanOne(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { if (sarFileSplitInfoEO.getStopNumber()<=0){ sarFileSplitInfoEO.setStopNumber(200); } @@ -757,7 +765,338 @@ public class FileSpiltService { XWPFDocument doc = new XWPFDocument(is); Pattern ptest = Pattern.compile("^[\\d.]*$"); - Matcher matcher; +// 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.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { +// String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); +// if (numberMap.containsKey(numberParent)){ +// Integer numbernow =(Integer)numberMap.get(numberParent)+1; +// if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){ +// numberMap.put(numberParent,numbernow+1); +// paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText(); +// } else { +// numberMap.put(numberParent,numbernow); +// paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText(); +// } +// } else { +// numberMap.put(numberParent,1); +// paragraphString = numberParent+".1"+ p.getText(); +// } +// } +//^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$ + ptest = Pattern.compile("^[\\d.]*$"); + //定义查看是否有编号,没有编号则按照上一个编号放置数据 + boolean hasGoIf = false; + for (int i=0;i10?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(),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 = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); + treeList.add(sarFileSplitMenuEO) ; + message.setMenuId(sarFileSplitMenuEO.getId()); + addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); + messageList.add(message); + nowStart = 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); + 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())); +// } + try { + //获取文件地址 + String connectId = sarFileSplitInfoEO.getConnectId(); + if(StringUtils.isEmpty(connectId)){ + throw new JeroBootException("当前文件未找到,请重新选择!"); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(OSSFile::getConnectId,connectId); + OSSFile ossFile = iossFileService.getOne(queryWrapper); + String readFilePath = ossFile.getUrl(); + if(StringUtils.isEmpty(readFilePath)){ + throw new JeroBootException("当前文件未找到,请重新选择!"); + } + + InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 + XWPFDocument doc = new XWPFDocument(is); + + Pattern ptest = Pattern.compile("^[\\d.]*$"); +// Matcher matcher; + + // 记录拆分后的每一段文字 + List 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.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { +// String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); +// if (numberMap.containsKey(numberParent)){ +// Integer numbernow =(Integer)numberMap.get(numberParent)+1; +// if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){ +// numberMap.put(numberParent,numbernow+1); +// paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText(); +// } else { +// numberMap.put(numberParent,numbernow); +// paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText(); +// } +// } else { +// numberMap.put(numberParent,1); +// paragraphString = numberParent+".1"+ p.getText(); +// } +// } +//^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$ +// ptest = Pattern.compile("^[\\d.]*$"); + //定义查看是否有编号,没有编号则按照上一个编号放置数据 + boolean hasGoIf = false; + for (int i=0;i10?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(),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 = getTreeList(name,treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); + treeList.add(sarFileSplitMenuEO) ; + message.setMenuId(sarFileSplitMenuEO.getId()); + addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); + messageList.add(message); + nowStart = 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); + 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())); +// } + try { + //获取文件地址 + String connectId = sarFileSplitInfoEO.getConnectId(); + if(StringUtils.isEmpty(connectId)){ + throw new JeroBootException("当前文件未找到,请重新选择!"); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(OSSFile::getConnectId,connectId); + OSSFile ossFile = iossFileService.getOne(queryWrapper); + String readFilePath = ossFile.getUrl(); + if(StringUtils.isEmpty(readFilePath)){ + throw new JeroBootException("当前文件未找到,请重新选择!"); + } + + InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 + XWPFDocument doc = new XWPFDocument(is); + + Pattern ptest = Pattern.compile("^[\\d.]*$"); +// Matcher matcher; // 记录拆分后的每一段文字 List elements = doc.getBodyElements(); @@ -793,6 +1132,7 @@ public class FileSpiltService { } //^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$ ptest = Pattern.compile("^[\\d.]*$"); + //定义查看是否有编号,没有编号则按照上一个编号放置数据 boolean hasGoIf = false; for (int i=0;i sarFileSplitInfoEO.getStopNumber()){ + if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()){ menuCanAdd = false; } else { // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); messageList.add(message); - nowStart = getNewNowStartUS(nowStart.get(i)); + nowStart = getNewNowStartEU(nowStart.get(i)); menuCanAdd = true; } hasGoIf = true; @@ -829,18 +1169,18 @@ public class FileSpiltService { SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); String[] numberStr = nowStart.get(i).split("\\."); - String numberStrTemp = numberStr[0].replace("S", ""); +// String numberStrTemp = numberStr[0].replace("S", ""); - if (Integer.valueOf(numberStrTemp) > sarFileSplitInfoEO.getStopNumber()){ + if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()){ menuCanAdd = false; } else { // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); treeList.add(sarFileSplitMenuEO) ; message.setMenuId(sarFileSplitMenuEO.getId()); addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); messageList.add(message); - nowStart = getNewNowStartUS(nowStart.get(i)); + nowStart = getNewNowStartEU(nowStart.get(i)); menuCanAdd = true; } hasGoIf = true; @@ -848,6 +1188,18 @@ public class FileSpiltService { } } + + } + 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; } // 判断是否直接跳出所有循环 @@ -875,12 +1227,13 @@ public class FileSpiltService { } return treeList.size(); } - /** - * 日本标准 + *韩国标准 * @param sarFileSplitInfoEO + * @param enumByValue + * @return */ - public int fileJapan(SarFileSplitInfoEO sarFileSplitInfoEO) { + public int fileKorean(SarFileSplitInfoEO sarFileSplitInfoEO, SplitFileTypeTypeEnum enumByValue) { if (sarFileSplitInfoEO.getStopNumber()<=0){ sarFileSplitInfoEO.setStopNumber(200); } @@ -909,7 +1262,7 @@ public class FileSpiltService { treeList.add(documentTreeEO); List nowStart = new ArrayList<>(); - nowStart.add("S1"); + nowStart.add("(1)"); // if (sarFileSplitInfoEO.getStartNumber()<4){ // } else { // nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); @@ -931,14 +1284,15 @@ public class FileSpiltService { InputStream is = new FileInputStream(readFilePath); //需要将文件路更改为word文档所在路径。 XWPFDocument doc = new XWPFDocument(is); - Pattern ptest = Pattern.compile("S^[\\d.]*$"); - Matcher matcher; + 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) { @@ -950,79 +1304,59 @@ public class FileSpiltService { paragraphString = paragraphString.replace((char) 12288, ' '); paragraphString = paragraphString.trim(); } - if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { - String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); - if (numberMap.containsKey(numberParent)){ - Integer numbernow =(Integer)numberMap.get(numberParent)+1; - if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){ - numberMap.put(numberParent,numbernow+1); - paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText(); - } else { - numberMap.put(numberParent,numbernow); - paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText(); - } - } else { - numberMap.put(numberParent,1); - paragraphString = numberParent+".1"+ p.getText(); - } - } +// if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { +// String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); +// if (numberMap.containsKey(numberParent)){ +// Integer numbernow =(Integer)numberMap.get(numberParent)+1; +// if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){ +// numberMap.put(numberParent,numbernow+1); +// paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText(); +// } else { +// numberMap.put(numberParent,numbernow); +// paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText(); +// } +// } else { +// numberMap.put(numberParent,1); +// paragraphString = numberParent+".1"+ p.getText(); +// } +// } //^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$ - ptest = Pattern.compile("S^[\\d.]*$"); + ptest = Pattern.compile("^[\\d.]*$"); + //定义查看是否有编号,没有编号则按照上一个编号放置数据 boolean hasGoIf = false; for (int i=0;inowStart.get(i).length() - && !ptest.matcher(paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+1)).matches()){ - // 判断名称,如果大于10位,取十位, - String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); + // 判断名称,如果大于10位,取十位, + String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); + List clauseContent = new ArrayList<>(); + clauseContent.add(paragraphString); + SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); - String[] numberStr = nowStart.get(i).split("\\."); - String numberStrTemp = numberStr[0].replace("S", ""); - - if (Integer.valueOf(numberStrTemp) > sarFileSplitInfoEO.getStopNumber()){ - menuCanAdd = false; - } else { - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); - treeList.add(sarFileSplitMenuEO) ; - message.setMenuId(sarFileSplitMenuEO.getId()); - addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); - messageList.add(message); - nowStart = getNewNowStartUS(nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - break; - }else { - // 判断名称,如果大于10位,取十位, - String itemName = paragraphString.substring(nowStart.get(i).length()).length()>10?paragraphString.substring(nowStart.get(i).length(),nowStart.get(i).length()+10):paragraphString.substring(nowStart.get(i).length()); - List clauseContent = new ArrayList<>(); - clauseContent.add(paragraphString); - SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); - - String[] numberStr = nowStart.get(i).split("\\."); - String numberStrTemp = numberStr[0].replace("S", ""); - - if (Integer.valueOf(numberStrTemp) > sarFileSplitInfoEO.getStopNumber()){ - menuCanAdd = false; - } else { - // 增加一条数据,需要在数结构中加一条数据 - SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(nowStart.get(i),treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName); - treeList.add(sarFileSplitMenuEO) ; - message.setMenuId(sarFileSplitMenuEO.getId()); - addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); - messageList.add(message); - nowStart = getNewNowStartUS(nowStart.get(i)); - menuCanAdd = true; - } - hasGoIf = true; - break; - } + // 增加一条数据,需要在数结构中加一条数据 + String name = lastStr+"="+nowStart.get(i); + SarFileSplitMenuEO sarFileSplitMenuEO = getTreeList(name,treeList,generalCatalogueId,sarFileSplitInfoEO ,treeListDisplay++,itemName,enumByValue); + treeList.add(sarFileSplitMenuEO) ; + message.setMenuId(sarFileSplitMenuEO.getId()); + addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); + messageList.add(message); + nowStart = getNewNowStartKorean(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; } // 判断是否直接跳出所有循环 @@ -1050,8 +1384,33 @@ public class FileSpiltService { } return treeList.size(); } + /** - * 通过传递过来的编号,得出下次可能出现的编号 + * 通过传递过来的编号,得出下次可能出现的编号(欧洲) + * @param nowStart + * @return + */ + private static List getNewNowStartEU(String nowStart){ +// List nowStartList = new ArrayList<>(); + List nowResultStartList = new ArrayList<>(); + String[] numberStr = nowStart.split("\\."); + String startnumber = ""; + for(int i=0;i 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 + */ + private 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 + */ + private static List getNewNowStartKorean(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 nowStart @@ -1099,7 +1572,13 @@ public class FileSpiltService { return nowResultStartList; } - private static SarFileSplitMenuEO getTreeList(String name, List treeList,String generalCatalogueId,SarFileSplitInfoEO sarFileSplitInfoEO ,Long treeListDisplay,String itemName){ + private static SarFileSplitMenuEO getTreeList(String name, + List treeList, + String generalCatalogueId, + SarFileSplitInfoEO sarFileSplitInfoEO , + Long treeListDisplay, + String itemName, + SplitFileTypeTypeEnum enumByValue){ SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(); // SarFileSplitMenuEO documentTreeEO = new SarFileSplitMenuEO(UUIDUtils.randomUUID20(),name,sarFileSplitInfoEO.getId(),treeListDisplay,itemName); @@ -1112,16 +1591,169 @@ public class FileSpiltService { documentTreeEO.setValidFlag(0); // 用现在得name 和之前得name 做比较,确定,parentId - if (name.indexOf(".")>=0) { - for (SarFileSplitMenuEO forDocumentTree : treeList) { - if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { - documentTreeEO.setPId(forDocumentTree.getId()); + + boolean flag = false; + a:for (SarFileSplitMenuEO forDocumentTree : treeList) { + switch (enumByValue){ + case CN: + if (name.indexOf(".")>=0) { + if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } + break; - } + case EU: + + if (name.indexOf(".")>=0) { + if (name.substring(0, name.lastIndexOf(".")-1).equals(forDocumentTree.getName())) { + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } + break; + case US: + if (name.indexOf(".")>=0) { + if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } + break; + case GSO: + if (name.indexOf(".")>=0) { + if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } + break; + case JAPAN_ONE: + if(name.contains(".")){ + if (name.indexOf(".")>=0) { + if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } + }else { + if (name.indexOf("–")>=0) { + if (name.substring(0, name.lastIndexOf("–")).equals(forDocumentTree.getName()) + || (name.substring(0, name.lastIndexOf("–"))+".").equals(forDocumentTree.getName())) { + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } + } + break; + case JAPAN_TWO: + if (name.indexOf("=")>=0) { + String[] nameSplit = name.split("="); + + //获取name值 + String firstNameTemp = nameSplit[0]; + String secondTemp = nameSplit[1]; + String nameTemp = nameSplit[2]; + + if(FileSplitUtils.hasDigit(nameTemp) && nameTemp.contains(".")){ + //包含数字且. + documentTreeEO.setName(nameTemp); + }else if(FileSplitUtils.hasDigit(nameTemp) && nameTemp.contains(")")){ + //包含数字且包含括号 + if(StringUtils.isNotEmpty(firstNameTemp)){ + String firstStr = firstNameTemp.replaceAll("\\.", ""); + int firstNumber = Integer.parseInt(firstStr) - 1; + firstNameTemp = firstNumber + "."; + } + if (firstNameTemp.equals(forDocumentTree.getName())) { + documentTreeEO.setName(nameTemp); + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + }else if(FileSplitUtils.judgeContainsStr(nameTemp)){ + //包含数字且包含括号 + + //先找一级目录 + if(StringUtils.isNotEmpty(firstNameTemp)){ + String firstStr = firstNameTemp.replaceAll("\\.", ""); + int firstNumber = Integer.parseInt(firstStr) - 1; + firstNameTemp = firstNumber + "."; + } + if ((!flag) && firstNameTemp.equals(forDocumentTree.getName())) { + flag = true; + } + + //再找二级目录 + if(StringUtils.isNotEmpty(secondTemp)){ + String firstStr = secondTemp.replace("(", "").replace(")",""); + int firstNumber = Integer.parseInt(firstStr) - 1; + secondTemp = "("+firstNumber + ")"; + } + if(flag && secondTemp.equals(forDocumentTree.getName())){ + documentTreeEO.setName(nameTemp); + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } + break; + case KOREAN: + if (name.indexOf("=")>=0) { + String[] nameSplit = name.split("="); + + //获取name值 + String firstNameTemp = nameSplit[0]; + String nameTemp = nameSplit[1]; + + if(FileSplitUtils.hasDigit(nameTemp) && nameTemp.contains(")")){ + //包含数字且. + documentTreeEO.setName(nameTemp); + }else if(FileSplitUtils.hasDigit(nameTemp) && nameTemp.contains(".")){ + //包含数字且包含括号 + if(StringUtils.isNotEmpty(firstNameTemp)){ + String firstStr = firstNameTemp.replace("(", "").replace(")",""); + int firstNumber = Integer.parseInt(firstStr) - 1; + firstNameTemp = "(" + firstNumber + ")"; + } + if (firstNameTemp.equals(forDocumentTree.getName())) { + documentTreeEO.setName(nameTemp); + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } + break; + default: + if (name.indexOf(".")>=0) { + if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + }else { + documentTreeEO.setPId(generalCatalogueId); + } } - }else { - documentTreeEO.setPId(generalCatalogueId); + } + return documentTreeEO; } @@ -1295,7 +1927,7 @@ public class FileSpiltService { // 像每个条款中依次插入每一段的内容 public static void addItermsConditionsText(SarFileSplitItemsEO message,List itemsValList,String p) { message.getItemsCondi().add(p); - message.setItermsConditions(message.getItermsConditions() + "

"+p+ "

"); + message.setItermsConditions(message.getItermsConditions() + "

"+p+ "

"); // 判断message中是否引用到其他标准 // String testString = p; // Pattern ptest = Pattern.compile("[A-Z]{1,}/{0,1}[A-Z]{1,}\\s{0,1}[0-9]\\d*\\.?\\d*"); @@ -1367,16 +1999,16 @@ public class FileSpiltService { XWPFPictureData pictureData = p.getDocument().getPictureDataByID(pictureId); String imageName = UUIDUtils.randomUUID10() + pictureData.getFileName(); byte[] bytev = pictureData.getData(); - String outPath = filePath + "/img/"; + String outPath = filePath + File.separator; File file1 = new File(outPath); if(!file1.exists()){ file1.mkdirs(); } - String filepathandname = filePath + "/img/" + imageName; + String filepathandname = filePath + File.separator + imageName; try { FileOutputStream fos = new FileOutputStream(filepathandname); fos.write(bytev); - String path = "uploadPath/img/" + imageName; + String path = splitUrl+ "/" + imageName; String imgCon = ""; message.getItemsCondi().add(imgCon); message.setItermsConditions(message.getItermsConditions() + imgCon); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java index bcd371e29..0b79f4c66 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/SarFileSplitInfoServiceImpl.java @@ -77,21 +77,25 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl 1) { + return null; + } else { + int now = (int) c[0]; + if (now >= lastEnglish) + return "A"; + char uppercase = (char) (now + 1); + return String.valueOf(uppercase); + } + } + + /** + * 判断一个字符串是否含有数字 + * @param content + * @return + */ + public static boolean hasDigit(String content) { + boolean flag = false; + Pattern p = Pattern.compile(".*\\d+.*"); + Matcher m = p.matcher(content); + if (m.matches()) { + flag = true; + } + return flag; + } + + /** + * 判断一个字符串是否含有字母 + * @param content + * @return + */ + public static boolean judgeContainsStr(String content) { + boolean flag = false; + Pattern p = Pattern.compile(".*[a-zA-Z]+.*"); + Matcher m = p.matcher(content); + if (m.matches()) { + flag = true; + } + return flag; + } +} diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index f9d5ed681..a845c99a0 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -633,7 +633,8 @@ module.exports = { Korea:'Korea', America:'America', Europe:'Europe', - Japan:'Japan', + Japan_one:'Japan_one', + Japan_two:'Japan_two', China:'China', onlyOnefileUploaded:'only one file can be uploaded', typeCannotUploaded:'this type of file cannot be uploaded', diff --git a/jero-web/src/common/lang/zh-cn.js b/jero-web/src/common/lang/zh-cn.js index 3b34f8c0f..e0b705733 100644 --- a/jero-web/src/common/lang/zh-cn.js +++ b/jero-web/src/common/lang/zh-cn.js @@ -637,7 +637,8 @@ module.exports = { Korea:'韩国', America:'美国', Europe:'欧洲', - Japan:'日本', + Japan_one:'日本模板1', + Japan_two:'日本模板2', China:'中国', onlyOnefileUploaded:'只能上传一个文件', typeCannotUploaded:'不支持上传该类型的文件', diff --git a/jero-web/src/views/documentManage/splitting/modules/SplitText.vue b/jero-web/src/views/documentManage/splitting/modules/SplitText.vue index 6d463f787..60cdb1c8c 100644 --- a/jero-web/src/views/documentManage/splitting/modules/SplitText.vue +++ b/jero-web/src/views/documentManage/splitting/modules/SplitText.vue @@ -34,8 +34,11 @@ {{$t('Europe')}} - - {{$t('Japan')}} + + {{$t('Japan_one')}} + + + {{$t('Japan_two')}} {{$t('China')}}