浏览代码

wbs导入划分相关

liuyc 2 年之前
父节点
当前提交
486a409995

+ 102 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -474,6 +474,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
             //导入excel
             return importExcel(result, wbsTreeFu, wbsTree1);
+
         } catch (Exception e) {
             e.printStackTrace();
             return false;
@@ -561,6 +562,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             wbsTreeZi.setIsExpernode(0);
                         }
                         baseMapper.insert(wbsTreeZi);
+
                         break;
                     }
                 }
@@ -571,6 +573,106 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
 
+    //采用批量新增 TODO
+    private boolean importExcel2(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
+        //解析list-map
+        List<WbsTree> allNodeData = new ArrayList<>();
+        result.stream().forEach(map -> {
+            map.forEach((nodeType, nodeName) -> {
+                if (StringUtils.isNotEmpty(nodeName)) {
+                    //初始化节点参数
+                    WbsTree wbsTreeZi = new WbsTree();
+                    wbsTreeZi.setId(SnowFlakeUtil.getId());
+                    wbsTreeZi.setTenantId(AuthUtil.getTenantId());
+                    wbsTreeZi.setDeptName(nodeName);
+                    wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
+                    wbsTreeZi.setWbsId(wbsTreeFu.getWbsId());
+                    wbsTreeZi.setParentId(wbsTreeFu.getId());
+                    wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
+                    wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
+
+                    //构建参数
+                    WbsTree wbsTree = buildTreeNode(wbsTreeZi, allNodeData);
+
+                    wbsTreeFu.setAncestors(wbsTree.getAncestors());
+                    wbsTreeFu.setId(wbsTree.getId());
+
+                    allNodeData.add(wbsTree);
+
+                }
+            });
+        });
+
+        boolean b = this.saveBatch(allNodeData, 10000);
+
+        int i = baseMapper.updateById(wbsTree1);
+
+        return i > 0 && b;
+
+    }
+
+    private WbsTree buildTreeNode(WbsTree wbsTreeZi, List<WbsTree> allNodeData) {
+        //判断节点名称是否重复
+        List<WbsTree> wbsTrees = null;
+        if (allNodeData.size() > 0) {
+
+            wbsTrees = allNodeData.stream().filter(f -> f.getWbsId().equals(wbsTreeZi.getWbsId()))
+                    .filter(f -> f.getDeptName().equals(wbsTreeZi.getDeptName()))
+                    .filter(f -> f.getDeptCategory().equals(wbsTreeZi.getDeptCategory()))
+                    .filter(f -> f.getProjectNodeId().equals(wbsTreeZi.getProjectNodeId()))
+                    .filter(f -> !f.getAncestors().equals(wbsTreeZi.getAncestors())
+
+                    ).collect(Collectors.toList());
+        }
+
+        wbsTreeZi.setStatus(1);
+        wbsTreeZi.setType(1);
+        wbsTreeZi.setMajorDataType(0);
+        if (wbsTreeZi.getDeptCategory() == 6) {
+            wbsTreeZi.setIsConcrete(0);
+            wbsTreeZi.setIsExpernode(0);
+        }
+
+        StringBuilder stringBuffer = new StringBuilder();
+        StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
+        String ancestors = wbsTreeZi.getAncestors() + appendStr;
+        wbsTreeZi.setAncestors(ancestors);
+
+        if (wbsTrees != null) { //重复-判断是否同级是否一样的,同级跳过,不同级新增
+
+            for (WbsTree tree : wbsTrees) {
+                //只判断2 3 4 5 6级节点类型的名称是否重复,可根据实际情况更改控制的层级
+                if (wbsTreeZi.getDeptCategory() == 2 || wbsTreeZi.getDeptCategory() == 3 || wbsTreeZi.getDeptCategory() == 4
+                        || wbsTreeZi.getDeptCategory() == 5 || wbsTreeZi.getDeptCategory() == 6) {
+                    if (!wbsTreeZi.getParentId().equals(tree.getParentId()) && wbsTreeZi.getDeptName().equals(tree.getDeptName())) {
+                        wbsTreeZi.setStatus(1);
+                        wbsTreeZi.setType(1);
+                        wbsTreeZi.setMajorDataType(0);
+                        if (wbsTreeZi.getDeptCategory() == 6) {
+                            wbsTreeZi.setIsConcrete(0);
+                            wbsTreeZi.setIsExpernode(0);
+                        }
+
+                        StringBuilder stringBuffer1 = new StringBuilder();
+                        StringBuilder appendStr1 = stringBuffer1.append(",").append(wbsTreeZi.getParentId());
+                        String ancestors1 = wbsTreeZi.getAncestors() + appendStr1;
+                        wbsTreeZi.setAncestors(ancestors1);
+
+                        return wbsTreeZi;
+                    }
+                } else {
+
+                    return tree;
+                }
+            }
+
+        }
+
+        return wbsTreeZi;
+
+    }
+
+
     @Override
     public int deleteBatchByProjectNodeId(Long projectNodeId) {
         return baseMapper.deleteBatchProjectNodeId(projectNodeId);