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 fef59402..c77cb5e4 100644 --- a/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java +++ b/laws-modules/src/main/java/com/jero/modules/split/service/impl/FileSpiltService.java @@ -1,5 +1,7 @@ package com.jero.modules.split.service.impl; +import cn.hutool.core.lang.RegexPool; +import cn.hutool.core.util.ReUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; @@ -390,7 +392,9 @@ public class FileSpiltService { SarFileSplitItemsEO message = getSarFileSplitItemsEO(sarFileSplitInfoEO.getId(), nowStart.get(i), itemName, clauseContent); String[] numberStr = nowStart.get(i).split("\\."); - if (Integer.valueOf(numberStr[0]) > sarFileSplitInfoEO.getStopNumber()) { + String numberStr0 = numberStr[0]; + //如果是数字,判断数量,字母正常 + if (ReUtil.isMatch(RegexPool.NUMBERS,numberStr0) && Integer.parseInt(numberStr0) > sarFileSplitInfoEO.getStopNumber()) { menuCanAdd = false; } else { // 增加一条数据,需要在数结构中加一条数据 @@ -428,7 +432,8 @@ public class FileSpiltService { message.setMenuId(sarFileSplitMenuEO.getId()); message.setApplicableComponents(partName); messageList.add(message); - nowStart = new ArrayList<>(); + String group0 = ReUtil.getGroup0(RegexPool.WORD, paragraphString); + nowStart = getNewNowStart(group0); } else { if (!paragraphString.equals("")) { addItermsConditionsText(messageList.get(messageList.size() - 1), itemValList, paragraphString, alignment); @@ -509,17 +514,37 @@ public class FileSpiltService { // List nowStartList = new ArrayList<>(); List nowResultStartList = new ArrayList<>(); String[] numberStr = nowStart.split("\\."); - String startnumber = ""; + StringBuilder startnumber = new StringBuilder(); + //判断是否附录 + boolean isAppendix = ReUtil.isMatch(RegexPool.WORD, numberStr[0]); 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]; + if (isAppendix){ + char letter = numberStr[0].charAt(0); + if (i == 0) { + startnumber = new StringBuilder(); + letter++; + char lastnumber = (char) letter; + nowResultStartList.add(lastnumber + ""); + continue; + } else if (i == 1) { + startnumber = new StringBuilder(letter + ""); + } else { + startnumber.append(".").append(numberStr[i - 1]); + } + int lastnumber = Integer.parseInt(numberStr[i]) + 1; + nowResultStartList.add(("".equals(startnumber.toString()) ? "" : (startnumber + ".")) + lastnumber); + }else { + if (i == 0) { + startnumber = new StringBuilder(); + } else if (i == 1) { + startnumber = new StringBuilder(numberStr[0]); + } else { + startnumber.append(".").append(numberStr[i - 1]); + } + int lastnumber = Integer.parseInt(numberStr[i]) + 1; + nowResultStartList.add(("".equals(startnumber.toString()) ? "" : (startnumber + ".")) + lastnumber); } - Integer lastnumber = Integer.valueOf(numberStr[i]) + 1; - nowResultStartList.add((startnumber.equals("") ? "" : (startnumber + ".")) + lastnumber); + } nowResultStartList.add(nowStart + ".1"); return nowResultStartList; @@ -542,7 +567,6 @@ public class FileSpiltService { documentTreeEO.setDisplaySeq(treeListDisplay); documentTreeEO.setName(name); documentTreeEO.setValidFlag(0); - // 用现在得name 和之前得name 做比较,确定,parentId // List pIdList = new ArrayList<>(); boolean oneFlag = false; @@ -550,288 +574,29 @@ public class FileSpiltService { boolean threeFlag = false; a: for (SarFileSplitMenuEO forDocumentTree : treeList) { + String treeName = forDocumentTree.getName(); + String numberStr = treeName.substring(treeName.length()-1); + //判断是否附录 + + boolean isAppendix = ReUtil.isMatch(RegexPool.WORD, numberStr); + if (isAppendix){ + treeName = numberStr; + } switch (enumByValue) { case GB: case GBT: - case EU: - case US: - case GSO: if (name.indexOf(".") >= 0) { - if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { + if (name.substring(0, name.lastIndexOf(".")).equals(treeName)) { documentTreeEO.setPId(forDocumentTree.getId()); -// pIdList.add(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()); -//// pIdList.add(forDocumentTree.getId()); -// break a; -// } -// } else { -// documentTreeEO.setPId(generalCatalogueId); -//// pIdList.add(generalCatalogueId); -// } -// break; - case JPN_ATTACHMENT: - if (name.contains(".")) { - if (name.indexOf(".") >= 0) { - if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { - documentTreeEO.setPId(forDocumentTree.getId()); -// pIdList.add(forDocumentTree.getId()); - break a; - } - } else { - documentTreeEO.setPId(generalCatalogueId); -// pIdList.add(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()); -// pIdList.add(forDocumentTree.getId()); - break a; - } - } else { - documentTreeEO.setPId(generalCatalogueId); -// pIdList.add(generalCatalogueId); - } - } - break; - case JPN_ARTICLE: - 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()); -// pIdList.add(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 ((!oneFlag) && firstNameTemp.equals(forDocumentTree.getName())) { - oneFlag = true; - } - - //再找二级目录 - if (StringUtils.isNotEmpty(secondTemp)) { - String firstStr = secondTemp.replace("(", "").replace(")", ""); - int firstNumber = Integer.parseInt(firstStr) - 1; - secondTemp = "(" + firstNumber + ")"; - } - if (oneFlag && secondTemp.equals(forDocumentTree.getName())) { - documentTreeEO.setName(nameTemp); - documentTreeEO.setPId(forDocumentTree.getId()); -// pIdList.add(forDocumentTree.getId()); - break a; - } - - } - } else { - documentTreeEO.setPId(generalCatalogueId); -// pIdList.add(generalCatalogueId); - } - break; - case KMVSS_ARTICLE: - 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()); -// pIdList.add(forDocumentTree.getId()); - break a; - } - } - } else { - documentTreeEO.setPId(generalCatalogueId); -// pIdList.add(generalCatalogueId); - } - break; - case KMVSS_TABLE: - 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()); -// pIdList.add(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()); -// pIdList.add(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()); -// pIdList.add(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()); -// pIdList.add(forDocumentTree.getId()); - break a; - } - } - } else { - documentTreeEO.setPId(generalCatalogueId); -// pIdList.add(generalCatalogueId); - } break; default: if (name.indexOf(".") >= 0) { - if (name.substring(0, name.lastIndexOf(".")).equals(forDocumentTree.getName())) { + if (name.substring(0, name.lastIndexOf(".")).equals(treeName)) { documentTreeEO.setPId(forDocumentTree.getId()); // pIdList.add(forDocumentTree.getId()); break a; @@ -844,10 +609,6 @@ public class FileSpiltService { } } - -// if (CollectionUtils.isNotEmpty(pIdList)) { -// documentTreeEO.setPId(pIdList.get(pIdList.size()-1)); // 拿最后一个 -// } return documentTreeEO; }