diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitInfoEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitInfoEO.java index 31c55f6cd..baeec3f0e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitInfoEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/entity/SarFileSplitInfoEO.java @@ -104,5 +104,7 @@ public class SarFileSplitInfoEO implements Serializable { private int startNumber; @TableField(exist = false) private int stopNumber; + @TableField(exist = false) + private String fileGroup; } 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 new file mode 100644 index 000000000..6a4b81ac1 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/enums/SplitFileTypeTypeEnum.java @@ -0,0 +1,41 @@ +package com.jero.modules.split.enums; + +/** + * 标准文件类型枚举设置 + * @author gaoyan + * date 2018/09/03 + */ +public enum SplitFileTypeTypeEnum { + + GSO("GSO","GSO"), + KOREAN("Korean","韩国"), + US("US","美国"), + EU("EU","欧洲"), + JAPAN("Japan","日本"), + CN("CN","中国"); + + private String value; + private String lable; + + private SplitFileTypeTypeEnum(String value, String lable) { + this.value = value; + this.lable = lable; + } + public static SplitFileTypeTypeEnum getEnumByValue(String value){ + SplitFileTypeTypeEnum[] values = values(); + + for (SplitFileTypeTypeEnum splitFileTypeTypeEnum : values) { + if(splitFileTypeTypeEnum.value.equals(value)){ + return splitFileTypeTypeEnum; + } + } + return null; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + +} 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 504cda611..712569c2b 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 @@ -60,17 +60,11 @@ public class FileSpiltService { private String filePath; - // public SarFileSplitInfoEODao getDao() { -// return dao; -// } -// public static void main(String[] args) { -// SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO(); -// sarFileSplitInfoEO.setId(UUIDUtils.randomUUID20()); -// sarFileSplitInfoEO.setStartNumber(0); -// sarFileSplitInfoEO.setStopNumber(10); -// int i = new FileSpilt().fileCHN(sarFileSplitInfoEO); -// } -//中国 + /** + * 中国标准数据拆分 + * @param sarFileSplitInfoEO + * @return + */ public int fileCHN(SarFileSplitInfoEO sarFileSplitInfoEO) { if (sarFileSplitInfoEO.getStopNumber()<=0){ sarFileSplitInfoEO.setStopNumber(200); @@ -338,11 +332,6 @@ public class FileSpiltService { sarFileSplitMenuEOMapper.insertForeach(treeList); iSarFileSplitItemsEOService.insertForeach(messageList); iSarFileSplitItemsValEOService.insertForeach(itemValList); - System.out.println("=================================================================================="); -// System.out.println(treeList.toString()); - System.out.println(messageList.toString()); - System.out.println(itemValList.toString()); - System.out.println("=================================================================================="); // sarFileSplitMenuEODao.insertForeach(treeList); // sarFileSplitItemsEODao.insertForeach(messageList); // sarFileSplitItemsValEODao.insertForeach(itemValList); @@ -356,268 +345,391 @@ public class FileSpiltService { // public static void main(String[] args) { // fileEU(new SarFileSplitInfoEO()); // } -//GSO 欧洲 -// public static int fileEU(SarFileSplitInfoEO sarFileSplitInfoEO) { -// // 拆分文件主表中插入数据 -// sarFileSplitInfoEO.setId(UUIDUtils.randomUUID20()); -// sarFileSplitInfoEO.setValidFlag(0); -// sarFileSplitInfoEO.setCreationTime(new Date()); -// sarFileSplitInfoEO.setCreationUser(LoginUserUtil.getUserId()); -// sarFileSplitInfoEO.setModifyTime(new Date()); -// sarFileSplitInfoEO.setModifyUser(LoginUserUtil.getUserId()); -//// 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(generalCatalogueId,"General catalogue","",sarFileSplitInfoEO.getId(),treeListDisplay++,""); -// treeList.add(documentTreeEO); -// -// List nowStart = new ArrayList<>(); -//// if (sarFileSplitInfoEO.getStartNumber()<4){ -//// nowStart.add("4"); -//// } else { -//// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); -//// } -// try { -//// AttFileEO attFileEO = attFileEOService.getFileInfo(sarFileSplitInfoEO.getAttId()); -//// String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); -// -// InputStream is = new FileInputStream("E:/a.docx"); //需要将文件路更改为word文档所在路径。 -// XWPFDocument doc = new XWPFDocument(is); -// -// Pattern ptest ; -// 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(); -// } -// } -// -// 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("\\."); -// if (Integer.valueOf(numberStr[0]) > 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 = getNewNowStart(nowStart.get(i)); -// menuCanAdd = true; -// } -// hasGoIf = true; -// break; -// } -// } -// -// // 判断是否直接跳出所有循环 -// if (!menuCanAdd && messageList.size()>0) { -// break; -// } -// -// } else if (element instanceof XWPFTable){ -// if(messageList != null && !messageList.isEmpty()){ -// addItermsConditionsOfTable(messageList.get(messageList.size()-1),itemValList,(XWPFTable)element); -// } -// } -// } -// -// } catch (Exception e) { -// e.printStackTrace(); -// return -1; -// } -// if(treeList.size()>0 && messageList.size() > 0){ -//// sarFileSplitMenuEODao.insertForeach(treeList); -//// sarFileSplitItemsEODao.insertForeach(messageList); -//// sarFileSplitItemsValEODao.insertForeach(itemValList); -// } else { -// return -1; -// } -// return treeList.size(); -// -// } - //美国 -// public int fileUSA(SarFileSplitInfoEO sarFileSplitInfoEO) { -// // 拆分文件主表中插入数据 -// sarFileSplitInfoEO.setId(UUIDUtils.randomUUID20()); -// sarFileSplitInfoEO.setValidFlag(0); -// sarFileSplitInfoEO.setCreationTime(new Date()); -// sarFileSplitInfoEO.setCreationUser(LoginUserUtil.getUserId()); -// sarFileSplitInfoEO.setModifyTime(new Date()); -// sarFileSplitInfoEO.setModifyUser(LoginUserUtil.getUserId()); + + /** + * GSO 欧洲标准拆分 + * @param sarFileSplitInfoEO + * @return + */ + public int fileEU(SarFileSplitInfoEO sarFileSplitInfoEO) { + // 拆分文件主表中插入数据 + if (sarFileSplitInfoEO.getStopNumber()<=0){ + sarFileSplitInfoEO.setStopNumber(200); + } + if (sarFileSplitInfoEO.getStartNumber()<=0){ + sarFileSplitInfoEO.setStartNumber(1); + } // dao.insertSelective(sarFileSplitInfoEO); -// -// // 拆分文件条款表中最终插入数据 -// List messageList = new ArrayList<>(); + + // 拆分文件条款表中最终插入数据 + List messageList = new ArrayList<>(); // int messageNumber = 0; -// // 拆分文件目录表中最终插入数据 -// List treeList = new ArrayList<>(); -// // 拆分文件条款详情表中最终插入数据 -// List itemValList = new ArrayList<>(); -// Long treeListDisplay = 1L; -// -// String generalCatalogueId = UUIDUtils.randomUUID20(); + // 拆分文件目录表中最终插入数据 + 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++,""); -// treeList.add(documentTreeEO); -// -// List nowStart = new ArrayList<>(); + 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<>(); // if (sarFileSplitInfoEO.getStartNumber()<4){ -// nowStart.add("4"); + nowStart.add("1"); // } else { // nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); // } -// try { -// AttFileEO attFileEO = attFileEOService.getFileInfo(sarFileSplitInfoEO.getAttId()); -// String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); -// -// 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; // 判断当前目录下是否可以正常填写数据 -// for (IBodyElement element : elements) { -// // 段落 -// if (element instanceof XWPFParagraph) { -// XWPFParagraph p = (XWPFParagraph)element; -// -// // 处理段落生成编号不识别问题 -// String paragraphString = p.getText(); -// if (StringUtils.isNotBlank(paragraphString)) { -// paragraphString = paragraphString.replace((char) 12288, ' '); -// paragraphString = paragraphString.trim(); -// } -// if (StringUtils.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { -// String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); -// if (numberMap.containsKey(numberParent)){ -// Integer numbernow =(Integer)numberMap.get(numberParent)+1; -// if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){ -// numberMap.put(numberParent,numbernow+1); -// paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText(); -// } else { -// numberMap.put(numberParent,numbernow); -// paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText(); -// } -// } else { -// numberMap.put(numberParent,1); -// paragraphString = numberParent+".1"+ p.getText(); -// } -// } -////^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$ -// ptest = Pattern.compile("S^[\\d.]*$"); -// boolean hasGoIf = false; -// for (int i=0;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("\\."); -// -// if (Integer.valueOf(numberStr[0]) > 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 = getNewNowStart(nowStart.get(i)); -// menuCanAdd = true; -// } -// hasGoIf = true; -// break; -// } -// } -// -// // 判断是否直接跳出所有循环 -// if (!menuCanAdd && messageList.size()>0) { -// break; -// } -// -// } else if (element instanceof XWPFTable){ -// if(messageList != null && !messageList.isEmpty()){ -// addItermsConditionsOfTable(messageList.get(messageList.size()-1),itemValList,(XWPFTable)element); -// } -// } -// } -// -// } catch (Exception e) { -// e.printStackTrace(); -// return -1; -// } -// if(treeList.size()>0 && messageList.size() > 0){ -// sarFileSplitMenuEODao.insertForeach(treeList); -// sarFileSplitItemsEODao.insertForeach(messageList); -// sarFileSplitItemsValEODao.insertForeach(itemValList); + 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 ; + 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(); + } + } + + 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); + + 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); + treeList.add(sarFileSplitMenuEO) ; + message.setMenuId(sarFileSplitMenuEO.getId()); + addItermsConditionsText(message,itemValList,paragraphString.substring(nowStart.get(i).length())); + messageList.add(message); + nowStart = getNewNowStart(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("\\."); + if (Integer.valueOf(numberStr[0]) > 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 = getNewNowStart(nowStart.get(i)); + menuCanAdd = true; + } + hasGoIf = true; + break; + } + + } + } + + // 判断是否直接跳出所有循环 + if (!menuCanAdd && messageList.size()>0) { + break; + } + + } else if (element instanceof XWPFTable){ + if(messageList != null && !messageList.isEmpty()){ + addItermsConditionsOfTable(messageList.get(messageList.size()-1),itemValList,(XWPFTable)element); + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + return -1; + } + if(treeList.size()>0 && messageList.size() > 0){ + sarFileSplitMenuEOMapper.insertForeach(treeList); + iSarFileSplitItemsEOService.insertForeach(messageList); + iSarFileSplitItemsValEOService.insertForeach(itemValList); + } else { + return -1; + } + return treeList.size(); + + } + + /** + * 美国标准 + * @param sarFileSplitInfoEO + * @return + */ + public int fileUSA(SarFileSplitInfoEO sarFileSplitInfoEO) { + 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 { -// return -1; +// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); // } -// return treeList.size(); -// -// } + 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("S^[\\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.isNotEmpty(p.getNumLevelText())&& p.getNumLevelText().indexOf(".")>0) { + String numberParent = p.getNumLevelText().substring(0,p.getNumLevelText().lastIndexOf(".")); + if (numberMap.containsKey(numberParent)){ + Integer numbernow =(Integer)numberMap.get(numberParent)+1; + if (messageList != null && !messageList.isEmpty() && messageList.get(messageList.size()-1).getItemsNum().equals(numberParent + "." + String.valueOf(numbernow))){ + numberMap.put(numberParent,numbernow+1); + paragraphString = numberParent + "." + String.valueOf(numbernow+1)+ p.getText(); + } else { + numberMap.put(numberParent,numbernow); + paragraphString = numberParent + "." + String.valueOf(numbernow)+ p.getText(); + } + } else { + numberMap.put(numberParent,1); + paragraphString = numberParent+".1"+ p.getText(); + } + } +//^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$ + ptest = Pattern.compile("S^[\\d.]*$"); + boolean hasGoIf = false; + for (int i=0;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); + + 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; + } + + } + } + + // 判断是否直接跳出所有循环 + if (!menuCanAdd && messageList.size()>0) { + break; + } + + } else if (element instanceof XWPFTable){ + if(messageList != null && !messageList.isEmpty()){ + addItermsConditionsOfTable(messageList.get(messageList.size()-1),itemValList,(XWPFTable)element); + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + return -1; + } + if(treeList.size()>0 && messageList.size() > 0){ + sarFileSplitMenuEOMapper.insertForeach(treeList); + iSarFileSplitItemsEOService.insertForeach(messageList); + iSarFileSplitItemsValEOService.insertForeach(itemValList); + } else { + return -1; + } + return treeList.size(); + + } + /** + * 通过传递过来的编号,得出下次可能出现的编号 + * @param nowStart + * @return + */ + private 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 getNewNowStart(String nowStart){ - List nowStartList = new ArrayList<>(); +// List nowStartList = new ArrayList<>(); List nowResultStartList = new ArrayList<>(); String[] numberStr = nowStart.split("\\."); String startnumber = ""; 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 facb788b5..24bc0dc28 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 @@ -11,6 +11,7 @@ import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServi import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.split.entity.SarFileSplitInfoEO; +import com.jero.modules.split.enums.SplitFileTypeTypeEnum; import com.jero.modules.split.mapper.SarFileSplitInfoMapper; import com.jero.modules.split.mapper.SarFileSplitMenuEOMapper; import com.jero.modules.split.service.ISarFileSplitInfoService; @@ -67,7 +68,31 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl +
+ 文件类型: + + + GSO + + + 韩国 + + + 美国 + + + 欧洲 + + + 日本 + + + 中国 + + +