liuyc 2 년 전
부모
커밋
c8dd1ace5b
1개의 변경된 파일35개의 추가작업 그리고 7개의 파일을 삭제
  1. 35 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

+ 35 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -626,9 +626,10 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 //获取当前项目下所有合同段树
                 List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
                         .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                        .eq(WbsTreeContract::getType, 1)
                         .eq(WbsTreeContract::getStatus, 1)
                 );
+                List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
+                List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
                 //构造
                 for (WbsTree tree : addPublicTables) {
@@ -659,8 +660,21 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                     dataContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
                                 }
 
+                                //判断元素表是否存在合同段,存在则不新增;不存在则表示没被引用,新增
+                                WbsTreeContract resultTreeContract = treeContractListAllTables.stream().filter(f ->
+                                        f.getId().equals(dataContract.getId())
+                                                && f.getNodeName().equals(dataContract.getNodeName())
+                                                && f.getWbsId().equals(dataContract.getWbsId())
+                                                && f.getProjectId().equals(wbsTreePrivate.getProjectId())
+                                                && f.getContractId().equals(String.valueOf(contractInfo.getId()))
+                                                && f.getStatus().equals(1)
+                                ).findAny().orElse(null);
+                                if (resultTreeContract != null) {
+                                    continue;
+                                }
+
                                 //判断元素表在合同段wbs树中是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
-                                WbsTreeContract dataContractParent = treeContractListAll.stream().filter(f ->
+                                WbsTreeContract dataContractParent = treeContractListAllNodes.stream().filter(f ->
                                         f.getContractId().equals(String.valueOf(contractInfo.getId()))
                                                 && f.getProjectId().equals(dataContract.getProjectId())
                                                 && f.getStatus().equals(1)
@@ -673,7 +687,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                     insertDataContractList.add(dataContract);
 
                                     //获取上级父级节点同级别的复制或新增节点
-                                    List<WbsTreeContract> dataContractEquallyNodes = treeContractListAll.stream().filter(f ->
+                                    List<WbsTreeContract> dataContractEquallyNodes = treeContractListAllNodes.stream().filter(f ->
                                             (ObjectUtils.isNotEmpty(f.getOldId()) && f.getOldId().equals(String.valueOf(dataContractParent.getId())))
                                                     && f.getContractId().equals(String.valueOf(contractInfo.getId()))
                                                     && f.getWbsId().equals(dataContractParent.getWbsId())
@@ -756,9 +770,10 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 //获取当前项目下所有合同段树
                 List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
                         .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                        .eq(WbsTreeContract::getType, 1)
                         .eq(WbsTreeContract::getStatus, 1)
                 );
+                List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
+                List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
                 //构造
                 for (WbsTreePrivate tree : addPrivateTables) {
@@ -784,9 +799,22 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                 if (dataPrivate.getType() == 2) {
                                     wbsTreeContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
                                 }
-                                //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
 
-                                WbsTreeContract wbsTreeContract1 = treeContractListAll.stream().filter(f ->
+                                //判断元素表是否存在合同段,存在则不新增;不存在则表示没被引用,新增
+                                WbsTreeContract resultTreeContract = treeContractListAllTables.stream().filter(f ->
+                                        f.getId().equals(wbsTreeContract.getId())
+                                                && f.getNodeName().equals(wbsTreeContract.getNodeName())
+                                                && f.getWbsId().equals(wbsTreeContract.getWbsId())
+                                                && f.getProjectId().equals(wbsTreePrivate.getProjectId())
+                                                && f.getContractId().equals(String.valueOf(contractInfo.getId()))
+                                                && f.getStatus().equals(1)
+                                ).findAny().orElse(null);
+                                if (resultTreeContract != null) {
+                                    continue;
+                                }
+
+                                //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
+                                WbsTreeContract wbsTreeContract1 = treeContractListAllNodes.stream().filter(f ->
                                         f.getContractId().equals(wbsTreeContract.getContractId())
                                                 && f.getProjectId().equals(wbsTreeContract.getProjectId())
                                                 && f.getWbsId().equals(wbsTreeContract.getWbsId())
@@ -799,7 +827,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                     insertDataContractList.add(wbsTreeContract);
 
                                     //获取上级父级节点同级别的复制或新增节点
-                                    List<WbsTreeContract> wbsTreeContracts2 = treeContractListAll.stream().filter(f ->
+                                    List<WbsTreeContract> wbsTreeContracts2 = treeContractListAllNodes.stream().filter(f ->
                                             (ObjectUtils.isNotEmpty(f.getOldId()) && f.getOldId().equals(String.valueOf(wbsTreeContract1.getId())))
                                                     && f.getContractId().equals(String.valueOf(contractInfo.getId()))
                                                     && f.getWbsId().equals(wbsTreePrivate.getWbsId())