Ver Fonte

合同段划分树

huangtf há 2 anos atrás
pai
commit
fa877439c7

+ 28 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO6.java

@@ -56,6 +56,34 @@ public class WbsTreeContractVO6 extends WbsTreeContract implements INode<WbsTree
         return this.children;
     }
 
+    public boolean isProcessType(){
+        if (this.getMajorDataType() != null ) {
+            if (this.getMajorDataType() == 1
+                    || this.getMajorDataType() == 2
+                    || this.getMajorDataType() == 3){
+                return false;
+            }
+        }
+
+        if (this.getTitle() != null ){
+            if (this.getTitle().contains("中间交工")
+                    || this.getTitle().contains("质量评定")
+                    || this.getTitle().contains("开工报告")
+                    || this.getTitle().contains("质量验收评定")) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    public boolean isMatchLevel(Long level){
+        if (this.getNodeType() != null && this.getNodeType() > level) {
+            return  false;
+        }
+        return true;
+    }
+
     @Override
     public Boolean getHasChildren() {
         return hasChildren;

+ 29 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeVO2.java

@@ -62,6 +62,35 @@ public class WbsTreeVO2 implements INode<WbsTreeVO2> {
         return this.children;
     }
 
+    public boolean isProcessType(){
+        if (this.getMajorDataType() != null ) {
+            if (this.getMajorDataType() == 1
+                    || this.getMajorDataType() == 2
+                    || this.getMajorDataType() == 3){
+                return false;
+            }
+        }
+
+        if (this.getTitle() != null ){
+            if (this.getTitle().contains("中间交工")
+                    || this.getTitle().contains("质量评定")
+                    || this.getTitle().contains("开工报告")
+                    || this.getTitle().contains("质量验收评定")) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    public boolean isMatchLevel(Long level){
+        if (this.getNodeType() != null && this.getNodeType() > level) {
+            return  false;
+        }
+        return true;
+    }
+
+
     @Override
     public Boolean getHasChildren() {
         return hasChildren;

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -444,7 +444,7 @@
         d.node_name AS "nodeName",
         d.node_type AS "nodeType",
         d.id AS "value",
-        d.id AS "key"
+        d.id AS "key",
         sort
         FROM m_wbs_tree_contract d
         WHERE

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java

@@ -48,6 +48,10 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId);
 
+    List<WbsTreeContractVO6> tree6(String wbsId, String projectId, String contractId);
+
+    List<WbsTreeContractVO6> tree8(String wbsId, String projectId, String contractId);
+
     List<WbsTreeContractVO2> treeTwo(String projectId);
 
     List<WbsTreeContractTreeVO> queryContractWbsTreeByContractIdAndType(String contractId, Integer wbsType, String parentId);

+ 35 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java

@@ -18,6 +18,7 @@ import org.springblade.manager.vo.*;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @AllArgsConstructor
@@ -322,13 +323,22 @@ public class ArTreeContractInitServiceImpl {
         ForestNodeMerger.getTreeList(subTree,treeContractVO2s);
 
         //2. 获取对应合同的树
-        List<WbsTreeContractVO6> wbsTreeContractVO6s =  contractInfoService.tree6List(wbsId.toString(),subTree.toString(),contractId.toString());
+        //List<WbsTreeContractVO6> wbsTreeContractVO6s =  contractInfoService.tree6List(wbsId.toString(),projectId.toString(),contractId.toString());
+
+        List<WbsTreeContractVO6> wbsTrees =  contractInfoService.tree8(wbsId.toString(),projectId.toString(),contractId.toString());
+        if (wbsTrees == null || wbsTrees.size() == 0) {
+            return archiveTreeContracts;
+        }
+
+        List<WbsTreeContractVO6> wbsTreeContractVO6s = new ArrayList<>();
+        ForestNodeMerger.getTreeList(wbsTrees.get(0),wbsTreeContractVO6s);
 
         List<WbsTreeContractVO6> addWbsNodes = new ArrayList<>();
 
         //获取已经存在的
         Map<Long,ArchiveTreeContractVO2> extMap = new LinkedHashMap<>();
         Map<Long,Long> oldNewMap = new LinkedHashMap<>();
+        //Map<Long,WbsTreeContractVO6> wbsMap = new LinkedHashMap<>();
         for (ArchiveTreeContractVO2 ar :treeContractVO2s) {
             if (ar.getExtId() !=null ) {
                 extMap.put(ar.getExtId(),ar);
@@ -338,15 +348,13 @@ public class ArTreeContractInitServiceImpl {
 
         for (WbsTreeContractVO6 wbsTreeVO2:wbsTreeContractVO6s) {
             //不要中间交工,质量评定和开工报告作为目录节点
-            if (wbsTreeVO2.getMajorDataType() != null ) {
-                if (wbsTreeVO2.getMajorDataType() == 1
-                        || wbsTreeVO2.getMajorDataType() == 2
-                        || wbsTreeVO2.getMajorDataType() == 3){
-                    continue;
-                }
+            //wbsMap.put(wbsTreeVO2.getId(),wbsTreeVO2);
+            if (!wbsTreeVO2.isProcessType()) {
+                continue;
             }
+
             //只展示指定层级之上的
-            if (wbsTreeVO2.getNodeType() > level){
+            if (!wbsTreeVO2.isMatchLevel(level)){
                 continue;
             }
 
@@ -371,11 +379,15 @@ public class ArTreeContractInitServiceImpl {
             archiveTree.setContractId(contractId);
             archiveTree.setId(oldNewMap.get(wbsTreeVO2.getId()));
             if (wbsTreeVO2.getParentId() == 0) {
-                wbsTreeVO2.setParentId(subTree.getId());
+                archiveTree.setParentId(subTree.getId());
             }else {
                 archiveTree.setParentId(oldNewMap.get(wbsTreeVO2.getParentId()));
             }
 
+            if (archiveTree.getParentId() == null) {
+                continue;
+            }
+
             archiveTree.setNodeName(wbsTreeVO2.getTitle());
 
             //设置关联
@@ -385,14 +397,27 @@ public class ArTreeContractInitServiceImpl {
             archiveTree.setDisplayHierarchy(level.toString());
             archiveTree.setIsDeleted(0);
             //上传节点
-            if (wbsTreeVO2.getNodeType().longValue() ==  level) {
+            if (wbsTreeVO2.getNodeType() != null && wbsTreeVO2.getNodeType().longValue() ==  level) {
                 archiveTree.setIsStorageNode(1);
             }
             archiveTreeContracts.add(archiveTree);
 
         }
 
+        //ArchiveTreeContractVO2 ar = getTree(archiveTreeContracts);
+
         return archiveTreeContracts;
     }
 
+    void syncArchiveAutoList(List<ArchiveTreeContract> archiveTreeContracts) {
+
+
+        List<ArchiveTreeContract> storageList = archiveTreeContracts.stream()
+                .filter(e->e.getIsStorageNode()!= null && e.getIsStorageNode() == 1).collect(Collectors.toList());
+
+        for (ArchiveTreeContract storage: storageList) {
+
+        }
+    }
+
 }

+ 5 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -398,14 +398,12 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
         //遍历构建
         for (WbsTreeVO2 wbsTreeVO2:wbsTreeVO2List) {
             //只展示指定层级之上的
-            if (wbsTreeVO2.getMajorDataType() != null ) {
-                if (wbsTreeVO2.getMajorDataType() == 1
-                    || wbsTreeVO2.getMajorDataType() == 2
-                    || wbsTreeVO2.getMajorDataType() == 3){
-                    continue;
-                }
+
+            if (!wbsTreeVO2.isProcessType()) {
+                continue;
             }
-            if (wbsTreeVO2.getNodeType() > level){
+
+            if (!wbsTreeVO2.isMatchLevel(level)){
                 continue;
             }
             ArchiveTreeVO2 archiveTree = new ArchiveTreeVO2();

+ 36 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -194,6 +194,21 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     public List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId) {
         return baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
     }
+    @Override
+    public List<WbsTreeContractVO6> tree6(String wbsId, String projectId, String contractId) {
+        List<WbsTreeContractVO6> wbsTreeContractVOS =  baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
+        return buildWbsTreeByStream6(wbsTreeContractVOS);
+    }
+
+    @Override
+    public List<WbsTreeContractVO6> tree8(String wbsId, String projectId, String contractId) {
+        List<WbsTreeContractVO6> wbsTreeContractVOS =  baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
+        List<WbsTreeContractVO6> wbsTreeVO2s = ForestNodeMerger.merge(wbsTreeContractVOS);
+        List<WbsTreeContractVO6> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+
+        return list;
+    }
+
 
     @Override
     public List<WbsTreeContractVO> tree(String wbsId, String projectId, String contractId) {
@@ -226,6 +241,27 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         }
     }
 
+    public List<WbsTreeContractVO6> buildWbsTreeByStream6(List<WbsTreeContractVO6> wbsTreeVO2s) {
+        List<WbsTreeContractVO6> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+        Map<Long, List<WbsTreeContractVO6>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractVO6::getParentId));
+        this.recursionFnTree6(list, map);
+        return list;
+    }
+
+    public void recursionFnTree6(List<WbsTreeContractVO6> list, Map<Long, List<WbsTreeContractVO6>> map) {
+        for (WbsTreeContractVO6 wbsTreeContractVO : list) {
+            List<WbsTreeContractVO6> childrenList = map.get(wbsTreeContractVO.getId());
+            wbsTreeContractVO.setChildren(childrenList);
+            if (childrenList != null && childrenList.size() > 0) {
+                wbsTreeContractVO.setHasChildren(true);
+                recursionFnTree6(childrenList, map);
+            }
+        }
+    }
+
+
+
+
     public void recursionFnTreeAll(List<WbsTreeContractTreeAllVO> list, Map<Long, List<WbsTreeContractTreeAllVO>> map) {
         for (WbsTreeContractTreeAllVO wbsTreeContractVO : list) {
             List<WbsTreeContractTreeAllVO> childrenList = map.get(wbsTreeContractVO.getId());