浏览代码

试车word导入

wangming 7 月之前
父节点
当前提交
a5bacf2aef
共有 1 个文件被更改,包括 65 次插入1 次删除
  1. 65 1
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/ImportCommissionHelp.java

+ 65 - 1
business-common/src/main/java/com/rongwei/bscommon/sys/utils/ImportCommissionHelp.java

@@ -10,9 +10,12 @@ import com.rongwei.bsentity.domain.ZhcxProjectManageDo;
 import com.rongwei.bsentity.dto.commission.ImportProjectCheckBO;
 import com.rongwei.bsentity.dto.commission.ParseDocBO;
 import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
 
 import java.util.*;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class ImportCommissionHelp {
 
@@ -125,6 +128,7 @@ public class ImportCommissionHelp {
         String currentLevelStr = paragraph.getParagraphFormat().getStyle().getName().replace("Heading ", "");
         int currentLevelNumber = Integer.parseInt(currentLevelStr);
         String cellVal = getNodeText(paragraph);
+        cellVal = replaceNo(cellVal);
 
         ZhcxCommissionCheckDetailTreeDo treeDo = new ZhcxCommissionCheckDetailTreeDo();
         treeDo.setId(SecurityUtil.getUUID());
@@ -133,6 +137,26 @@ public class ImportCommissionHelp {
         treeDo.setBaseinfoid(importDto.getId());
         treeDo.setLevel(currentLevelNumber);
 
+        if(treeList.size() == 0) {
+            treeDo.setTreecode("1");
+        } else {
+            final ZhcxCommissionCheckDetailTreeDo treeDo1 = treeList.get(treeList.size() - 1); //上个节点
+            if(currentLevelNumber > treeDo1.getLevel()) { //层级大于1,说明是下一届
+                treeDo.setTreecode(treeDo1.getTreecode() + ".1");
+            } else if (currentLevelNumber == treeDo1.getLevel()){
+                String[] treeCodes = treeDo1.getTreecode().split("\\.");
+                int finallyCode = Integer.parseInt(treeCodes[treeCodes.length - 1]) + 1;
+                treeCodes[treeCodes.length - 1] = String.valueOf(finallyCode);
+                treeDo.setTreecode(StringUtils.join(treeCodes, "."));
+            } else {
+                final ZhcxCommissionCheckDetailTreeDo parentTree = ImportCommissionHelp.getBrotherNode(treeList, currentLevelNumber);
+                String[] treeCodes = parentTree.getTreecode().split("\\.");
+                int finallyCode = Integer.parseInt(treeCodes[treeCodes.length - 1]) + 1;
+                treeCodes[treeCodes.length - 1] = String.valueOf(finallyCode);
+                treeDo.setTreecode(StringUtils.join(treeCodes, "."));
+            }
+        }
+
         if(currentLevelNumber == 1) { //第一层节点
             treeDo.setPid("-1");
         } else {
@@ -152,6 +176,23 @@ public class ImportCommissionHelp {
         return treeDo;
     }
 
+    /**
+     * 去掉序号
+     *
+     * @param input
+     * @return
+     */
+    public static String replaceNo(String input) {
+        Pattern pattern = Pattern.compile("([\\d\\.]+)(.*)");
+        Matcher matcher = pattern.matcher(input);
+
+        if (matcher.matches()) {
+            return matcher.group(2); // 序号
+        } else {
+            return input;
+        }
+    }
+
     /**
      * aspose转json列表
      *
@@ -214,6 +255,29 @@ public class ImportCommissionHelp {
         return treeDo;
     }
 
+    /**
+     * 由于导入是一级一级加入,父级目录有可能是上一个元素或者上上个元素,需要循环往前找
+     *
+     * @param treeList
+     * @param level
+     * @return
+     */
+    public static ZhcxCommissionCheckDetailTreeDo getBrotherNode(List<ZhcxCommissionCheckDetailTreeDo> treeList, int level) {
+        int treeSize  = treeList.size();
+        ZhcxCommissionCheckDetailTreeDo treeDo;
+        while (true) {
+            treeDo = treeList.get(treeSize - 1);
+            if(ObjectUtil.isNull(treeDo)) {//找不到前面一个元素,结束循环
+                break;
+            }
+            if(treeDo.getLevel() == level) {
+                break;
+            }
+            treeSize--;
+        }
+        return treeDo;
+    }
+
     /**
      * 获取文本
      *
@@ -223,7 +287,7 @@ public class ImportCommissionHelp {
     public static String getNodeText(Node node) {
         final String text = node.getText();
         if(ObjectUtil.isEmpty(text)) {
-            return " ";
+            return "";
         }
 
         return StrUtil.trim(text.replace("\u0007", ""));