From 527d5b755ef029f02a24be6d0c25c23da4fdc51c Mon Sep 17 00:00:00 2001 From: wangchengjun Date: Wed, 13 Apr 2022 00:49:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9F=A9=E5=9B=BD=E6=96=87=E6=A1=A3=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../split/service/impl/FileSpiltService.java | 176 ++++++++++++++++-- .../modules/split/util/FileSplitUtils.java | 23 ++- .../src/main/resources/application-dev.yml | 4 +- 3 files changed, 184 insertions(+), 19 deletions(-) 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 32d6355f6..3733dd519 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 @@ -1414,7 +1414,7 @@ public class FileSpiltService { List nowStartNotes = new ArrayList<>(); //初始判断值 nowStart.add("1."); - nowStartNotes.add("1"); + nowStartNotes.add("1."); // if (sarFileSplitInfoEO.getStartNumber()<4){ // } else { // nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber())); @@ -1446,9 +1446,11 @@ public class FileSpiltService { 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) { @@ -1462,26 +1464,33 @@ public class FileSpiltService { } if(filterFlag){ + boolean noteFlag = false; for (String nowStartNote : nowStartNotes) { if(paragraphString.startsWith(nowStartNote)){ + noteFlag = true; //预测下一级内容 - nowStartNotes = getNewNowStartKmvssTable(catalogerArr,nowStartNote,menuLevel); + nowStartNotes = getNewNowStartKmvssTable(catalogerNoteArr,nowStartNote,menuNoteLevel); break; - }else { - for (int i=0;i(); + nowStartNotes.add("1."); + catalogerNoteArr = new String[4]; + menuNoteLevel = 0; } // if(menuLevel <= 3){ // String thisLevel = catalogerArr[menuLevel]; @@ -1508,7 +1517,11 @@ public class FileSpiltService { SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(),nowStart.get(i),itemName,clauseContent); // 增加一条数据,需要在数结构中加一条数据 - String name = nowStart.get(i); + 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()); @@ -1807,7 +1820,7 @@ public class FileSpiltService { String numberStr = nowStart.replace("(","").replace(")",""); Integer lastnumber = Integer.valueOf(numberStr)+1; // catalogerArr[4] = lastnumber+")"; - nowResultStartList.add(lastnumber+")"); + nowResultStartList.add("("+lastnumber+")"); //上一级 nowResultStartList.add(catalogerArr[0]); @@ -1864,7 +1877,9 @@ public class FileSpiltService { // 用现在得name 和之前得name 做比较,确定,parentId - boolean flag = false; + boolean oneFlag = false; + boolean twoFlag = false; + boolean threeFlag = false; a: for (SarFileSplitMenuEO forDocumentTree : treeList) { switch (enumByValue) { @@ -1947,8 +1962,8 @@ public class FileSpiltService { int firstNumber = Integer.parseInt(firstStr) - 1; firstNameTemp = firstNumber + "."; } - if ((!flag) && firstNameTemp.equals(forDocumentTree.getName())) { - flag = true; + if ((!oneFlag) && firstNameTemp.equals(forDocumentTree.getName())) { + oneFlag = true; } //再找二级目录 @@ -1957,7 +1972,7 @@ public class FileSpiltService { int firstNumber = Integer.parseInt(firstStr) - 1; secondTemp = "(" + firstNumber + ")"; } - if (flag && secondTemp.equals(forDocumentTree.getName())) { + if (oneFlag && secondTemp.equals(forDocumentTree.getName())) { documentTreeEO.setName(nameTemp); documentTreeEO.setPId(forDocumentTree.getId()); break a; @@ -1997,7 +2012,136 @@ public class FileSpiltService { } break; case KMVSS_TABLE: - documentTreeEO.setPId(generalCatalogueId); + if (name.indexOf("=") >= 0) { + String[] nameSplit = name.split("="); + + //获取name值 + String firstNameTemp = nameSplit[1]; + String secondTemp = nameSplit[2]; + String threeTemp = nameSplit[3]; + String fourTemp = nameSplit[4]; + String nameTemp = nameSplit[5]; + + if(FileSplitUtils.hasDigit(nameTemp) && nameTemp.contains(".")){ + //第一级:1. 2. 3. 4. 等 + documentTreeEO.setName(nameTemp); + }else if(FileSplitUtils.judgeContainsStr(nameTemp) && nameTemp.contains(".")){ + //第二级:A. B. C. D. 等 + 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.hasDigit(nameTemp) && nameTemp.contains(")") && (!nameTemp.contains("("))){ + //第三级:1) 2) 3) 4) 等 + + //先找一级目录 + if (StringUtils.isNotEmpty(firstNameTemp)) { + String firstStr = firstNameTemp.replaceAll("\\.", ""); + int firstNumber = Integer.parseInt(firstStr) - 1; + firstNameTemp = firstNumber + "."; + } + if ((!oneFlag) && firstNameTemp.equals(forDocumentTree.getName())) { + oneFlag = true; + } + + //再找二级目录 + if (oneFlag && StringUtils.isNotEmpty(secondTemp)) { + String firstStr = secondTemp.replace(".",""); + String nextUpEn = FileSplitUtils.getLastEn(firstStr); + secondTemp = nextUpEn + "."; + } + if (oneFlag && secondTemp.equals(forDocumentTree.getName())) { + documentTreeEO.setName(nameTemp); + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + + }else if(FileSplitUtils.judgeContainsStr(nameTemp) && nameTemp.contains(")")){ + //第四级:A) B) C) D) 等 + + //先找一级目录 + if (StringUtils.isNotEmpty(firstNameTemp)) { + String firstStr = firstNameTemp.replaceAll("\\.", ""); + int firstNumber = Integer.parseInt(firstStr) - 1; + firstNameTemp = firstNumber + "."; + } + if ((!oneFlag) && firstNameTemp.equals(forDocumentTree.getName())) { + oneFlag = true; + } + + //再找二级目录 + if (oneFlag && StringUtils.isNotEmpty(secondTemp)) { + String firstStr = secondTemp.replace(".",""); + String nextUpEn = FileSplitUtils.getLastEn(firstStr); + secondTemp = nextUpEn + "."; + } + if ((!twoFlag) && secondTemp.equals(forDocumentTree.getName())) { + twoFlag = true; + } + //再找三级目录 + if (oneFlag && twoFlag && StringUtils.isNotEmpty(threeTemp)) { + String numberStr = threeTemp.replace(")",""); + Integer lastnumber = Integer.valueOf(numberStr)-1; + threeTemp = lastnumber + ")"; + } + if (oneFlag && twoFlag && threeTemp.equals(forDocumentTree.getName())) { + documentTreeEO.setName(nameTemp); + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + + }else if(FileSplitUtils.hasDigit(nameTemp) && nameTemp.contains("(") && nameTemp.contains(")")){ + //第五级:(1) (2) (3) (4) 等 + + //先找一级目录 + if (StringUtils.isNotEmpty(firstNameTemp)) { + String firstStr = firstNameTemp.replaceAll("\\.", ""); + int firstNumber = Integer.parseInt(firstStr) - 1; + firstNameTemp = firstNumber + "."; + } + if ((!oneFlag) && firstNameTemp.equals(forDocumentTree.getName())) { + oneFlag = true; + } + + //再找二级目录 + if (oneFlag && StringUtils.isNotEmpty(secondTemp)) { + String firstStr = secondTemp.replace(".",""); + String nextUpEn = FileSplitUtils.getLastEn(firstStr); + secondTemp = nextUpEn + "."; + } + if ((!twoFlag) && secondTemp.equals(forDocumentTree.getName())) { + twoFlag = true; + } + //再找三级目录 + if (oneFlag && twoFlag && StringUtils.isNotEmpty(threeTemp)) { + String numberStr = threeTemp.replace(")",""); + Integer lastnumber = Integer.valueOf(numberStr)-1; + threeTemp = lastnumber + ")"; + } + if ((!threeFlag) && threeTemp.equals(forDocumentTree.getName())) { + threeFlag = true; + } + //再找四级目录 + if (oneFlag && twoFlag && threeFlag && StringUtils.isNotEmpty(fourTemp)) { + String numberStr = fourTemp.replace(")",""); + String nextUpEn = FileSplitUtils.getLastEn(numberStr); + fourTemp = nextUpEn + ")"; + } + if (oneFlag && twoFlag && threeFlag && fourTemp.equals(forDocumentTree.getName())) { + documentTreeEO.setName(nameTemp); + documentTreeEO.setPId(forDocumentTree.getId()); + break a; + } + } + } else { + documentTreeEO.setPId(generalCatalogueId); + } break; default: if (name.indexOf(".") >= 0) { diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileSplitUtils.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileSplitUtils.java index 3b8eaba60..b98a5e0f6 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileSplitUtils.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/util/FileSplitUtils.java @@ -5,7 +5,7 @@ import java.util.regex.Pattern; public class FileSplitUtils { public static void main(String[] args) { - System.out.println(getNextUpEn("Z")); + System.out.println(getLastEn("G")); } /** @@ -29,6 +29,27 @@ public class FileSplitUtils { return String.valueOf(uppercase); } } + /** + * 获取下一个英文字母 + * @param en + * @return + */ + public static String getLastEn(String en) { + if (en == null || en.equals("")) + return "Z"; + char lastE = 'A'; + int lastEnglish = (int) lastE; + char[] c = en.toCharArray(); + if (c.length > 1) { + return null; + } else { + int now = (int) c[0]; + if (now <= lastEnglish) + return "A"; + char uppercase = (char) (now - 1); + return String.valueOf(uppercase); + } + } /** * 判断一个字符串是否含有数字 diff --git a/jero-boot/jero-boot-single-startup/src/main/resources/application-dev.yml b/jero-boot/jero-boot-single-startup/src/main/resources/application-dev.yml index 6878d07fb..6364b71c9 100644 --- a/jero-boot/jero-boot-single-startup/src/main/resources/application-dev.yml +++ b/jero-boot/jero-boot-single-startup/src/main/resources/application-dev.yml @@ -22,8 +22,8 @@ management: spring: servlet: multipart: - max-file-size: 10MB - max-request-size: 10MB + max-file-size: 100MB + max-request-size: 100MB mail: host: smtp.163.com username: test@163.com