add 文档拆分 附录
This commit is contained in:
+46
-285
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user