add 文档拆分 附录

This commit is contained in:
lijiarao
2024-07-11 15:45:06 +08:00
parent 747becc70d
commit 451b6752c6
@@ -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<String> nowStartList = new ArrayList<>();
List<String> 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<String> 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;
}