Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 2 years ago
parent
commit
afef6ecf6f

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -221,6 +221,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     if (wbsTreeContract != null) {
                         wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
                         wbsTreeContract.setWbsId(pawDTO.getWbsId());
+                        wbsTreeContract.setWbsType(Integer.valueOf(wbsTreePrivate.getWbsType()));
                         wbsTreeContract.setProjectId(pawDTO.getProjectId());
                         wbsTreeContract.setContractId(pawDTO.getContractId());
                         if (wbsTreePrivate.getType() == 2) {

+ 211 - 15
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -34,6 +34,7 @@ import java.util.stream.Stream;
 public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMapper, WbsTreePrivate> implements IWbsTreePrivateService {
 
     private final WbsTreeContractMapper wbsTreeContractMapper;
+    private final WbsTreeContractServiceImpl wbsTreeContractService;
     private final WbsTreeMapper wbsTreeMapper;
     private final ContractInfoMapper contractInfoMapper;
     private final WbsInfoMapper wbsInfoMapper;
@@ -451,6 +452,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean syncNodeParam(String projectId) {
         if (StringUtils.isNotEmpty(projectId)) {
             //获取项目节点树
@@ -542,14 +544,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean syncNodeTable(String primaryKeyId) {
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             //获取当前节点对应节点信息
             WbsTreePrivate wbsTreePrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, primaryKeyId));
             //获取项目信息
             ProjectInfo projectInfo = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>query().lambda().eq(ProjectInfo::getId, wbsTreePrivate.getProjectId()));
+
+            List<WbsTreePrivate> insertDataPrivateList = new ArrayList<>();
+            List<WbsTreeContract> insertDataContractList = new ArrayList<>();
+
             if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
-                /*-------------------------------------公有引用同步--------------------------------------------*/
+                /*TODO-------------------------------------公有引用同步--------------------------------------------*/
                 //获取当前节点对应的公有引用树下的元素表
                 WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
                         .eq(WbsTree::getId, wbsTreePrivate.getId())
@@ -558,46 +565,235 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         .eq(WbsTree::getWbsId, wbsTree.getWbsId())
                         .eq(WbsTree::getType, 2)
                         .eq(WbsTree::getStatus, 1)
-                        .eq(WbsTree::getParentId, wbsTree.getId())
                         .like(WbsTree::getAncestors, wbsTree.getId())
                 );
 
-                //获取当前项目树下的元素表
-                List<WbsTreePrivate> wbsTreePrivatesProjectTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                //获取当前项目树下的元素表 节点
+                List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
                         .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                        .eq(WbsTreePrivate::getType, 2)
                         .eq(WbsTreePrivate::getStatus, 1)
-                        .eq(WbsTreePrivate::getParentId, wbsTreePrivate.getId())
                         .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
                 );
+                List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
+                List<WbsTreePrivate> wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
-                //获取新增的元素表addPublicTable
+                //获取新增的公有元素表addPublicTable
                 List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
                         !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
                         .collect(Collectors.toList());
 
+                //判断当前新增的表在项目的wbs树种是否存在上级节点,存在表示可以新增,不存在表示不新增
+                List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
+                        wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
+                ).collect(Collectors.toList());
+
+                //获取当前项目下所有施工合同段id
+                List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
+
                 //构造
-                for (WbsTree tree : addPublicTable) {
-                    WbsTreePrivate data = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
-                    if (data != null){
-                        Long id = SnowFlakeUtil.getId();
-                        data.setPKeyId(id);
+                for (WbsTree tree : addPublicTables) {
+                    WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
+                    if (dataPrivate != null) {
+                        Long idPrivate = SnowFlakeUtil.getId();
+                        dataPrivate.setPKeyId(idPrivate);
+                        dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
+                        dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
+                        dataPrivate.setFullName(dataPrivate.getNodeName());
+                        //新增
+                        insertDataPrivateList.add(dataPrivate);
+
+                        /*同步到该项目下所有合同段*/
+                        //找到当前新增成功的元素表
+                        for (ContractInfo contractInfo : contractInfos) {
+                            WbsTreeContract dataContract = BeanUtil.copyProperties(dataPrivate, WbsTreeContract.class);
+                            if (dataContract != null) {
+                                Long idContract = SnowFlakeUtil.getId();
+                                dataContract.setPKeyId(idContract);
+                                dataContract.setContractType(contractInfo.getContractType());
+                                dataContract.setWbsType(Integer.valueOf(dataPrivate.getWbsType()));
+                                dataContract.setWbsId(dataPrivate.getWbsId());
+                                dataContract.setContractId(String.valueOf(contractInfo.getId()));
+                                dataContract.setFullName(dataContract.getNodeName());
+                                dataContract.setIsBussShow(1);
+                                if (dataPrivate.getType() == 2) {
+                                    dataContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
+                                }
 
+                                //判断元素表在合同段wbs树中是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
+                                WbsTreeContract dataContractParent = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                                        .eq(WbsTreeContract::getProjectId, dataContract.getProjectId())
+                                        .eq(WbsTreeContract::getContractId, contractInfo.getId())
+                                        .eq(WbsTreeContract::getType, 1)
+                                        .eq(WbsTreeContract::getStatus, 1)
+                                        .eq(WbsTreeContract::getId, dataContract.getParentId())
+                                );
+                                if (dataContractParent != null) {
+                                    //新增
+                                    insertDataContractList.add(dataContract);
+
+                                    //获取上级父级节点同级别的复制或新增节点
+                                    List<WbsTreeContract> dataContractEquallyNodes = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
+                                            .eq(WbsTreeContract::getOldId, dataContractParent.getId())
+                                            .eq(WbsTreeContract::getContractId, contractInfo.getId())
+                                            .eq(WbsTreeContract::getProjectId, dataContractParent.getProjectId())
+                                            .eq(WbsTreeContract::getWbsId, dataContractParent.getWbsId())
+                                            .eq(WbsTreeContract::getType, 1)
+                                            .eq(WbsTreeContract::getStatus, 1)
+                                    );
+                                    if (dataContractEquallyNodes.size() > 0) {
+                                        //将表单同步到复制或新增的节点下
+                                        for (WbsTreeContract treeContractCopy : dataContractEquallyNodes) {
+                                            WbsTreeContract dataContractCopyOrAdd = BeanUtil.copyProperties(dataContract, WbsTreeContract.class);
+                                            if (dataContractCopyOrAdd != null) {
+                                                dataContractCopyOrAdd.setPKeyId(SnowFlakeUtil.getId());
+                                                dataContractCopyOrAdd.setParentId(treeContractCopy.getId());
+
+                                                insertDataContractList.add(dataContractCopyOrAdd);
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
                     }
                 }
 
-
             } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
-                /*-------------------------------------私有引用同步--------------------------------------------*/
+                /*TODO-------------------------------------私有引用同步--------------------------------------------*/
+                //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
+                WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
+                //获取当前私有引用树的元素表信息
+                List<WbsTreePrivate> wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
+                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
+                        .eq(WbsTreePrivate::getType, 2)
+                        .eq(WbsTreePrivate::getStatus, 1)
+                        .like(WbsTreePrivate::getAncestors, wbsTreePrivateRoot.getId())
+                );
 
-            }
+                //获取当前项目选择的节点下的所有元素表 节点
+                List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                        .eq(WbsTreePrivate::getStatus, 1)
+                        .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
+                );
 
+                List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
+                List<WbsTreePrivate> wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
+
+                //获取新增的私有元素表addPrivateTable
+                List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
+                        !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
+                        .collect(Collectors.toList());
 
+                //获取当前项目下所有施工合同段id
+                List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
+
+                //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
+                List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
+                        wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
+                ).collect(Collectors.toList());
+
+                //构造
+                for (WbsTreePrivate tree : addPrivateTables) {
+                    WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
+                    if (dataPrivate != null) {
+                        dataPrivate.setPKeyId(SnowFlakeUtil.getId());
+                        dataPrivate.setWbsId(wbsTreePrivate.getWbsId());
+                        dataPrivate.setWbsType(tree.getWbsType());
+                        dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
+                        insertDataPrivateList.add(dataPrivate);
+
+                        //同步到该项目下的所有合同段
+                        for (ContractInfo contractInfo : contractInfos) {
+                            WbsTreeContract wbsTreeContract = BeanUtil.copyProperties(dataPrivate, WbsTreeContract.class);
+                            if (wbsTreeContract != null) {
+                                wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
+                                wbsTreeContract.setWbsId(dataPrivate.getWbsId());
+                                wbsTreeContract.setWbsType(Integer.valueOf(dataPrivate.getWbsType()));
+                                wbsTreeContract.setProjectId(wbsTreePrivate.getProjectId());
+                                wbsTreeContract.setContractType(contractInfo.getContractType());
+                                wbsTreeContract.setContractId(String.valueOf(contractInfo.getId()));
+                                wbsTreeContract.setIsBussShow(1);
+                                if (dataPrivate.getType() == 2) {
+                                    wbsTreeContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
+                                }
+                                //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
+                                WbsTreeContract wbsTreeContract1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                                        .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
+                                        .eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId())
+                                        .eq(WbsTreeContract::getWbsId, wbsTreeContract.getWbsId())
+                                        .eq(WbsTreeContract::getType, 1)
+                                        .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
+                                );
+                                if (wbsTreeContract1 != null) {
+                                    insertDataContractList.add(wbsTreeContract);
+
+                                    //获取上级父级节点同级别的复制或新增节点
+                                    List<WbsTreeContract> wbsTreeContracts2 = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
+                                            .eq(WbsTreeContract::getOldId, wbsTreeContract1.getId())
+                                            .eq(WbsTreeContract::getContractId, contractInfo.getId())
+                                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
+                                            .eq(WbsTreeContract::getWbsId, wbsTreePrivate.getWbsId())
+                                            .eq(WbsTreeContract::getType, 1)
+                                    );
+                                    if (wbsTreeContracts2.size() > 0) {
+                                        //将表单同步到复制或新增的节点下
+                                        for (WbsTreeContract treeContract : wbsTreeContracts2) {
+                                            WbsTreeContract wbsTreeContract2 = BeanUtil.copyProperties(wbsTreeContract, WbsTreeContract.class);
+                                            if (wbsTreeContract2 != null){
+                                                wbsTreeContract2.setPKeyId(SnowFlakeUtil.getId());
+                                                wbsTreeContract2.setParentId(treeContract.getId());
+
+                                                insertDataContractList.add(wbsTreeContract2);
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            //新增
+            if (insertDataPrivateList.size() > 0) {
+                this.insertBatch(insertDataPrivateList, 1000);
+            }
+            if (insertDataContractList.size() > 0) {
+                wbsTreeContractService.insertBatch(insertDataContractList, 1000);
+            }
             return true;
         }
         return false;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public boolean insertBatch(Collection<WbsTreePrivate> entityList, int batchSize) {
+        try {
+            int size = entityList.size();
+            int idxLimit = Math.min(batchSize, size);
+            int i = 1;
+            //保存单批提交的数据集合
+            List<WbsTreePrivate> oneBatchList = new ArrayList<>();
+            for (Iterator<WbsTreePrivate> var1 = entityList.iterator(); var1.hasNext(); ++i) {
+                WbsTreePrivate element = var1.next();
+                oneBatchList.add(element);
+                if (i == idxLimit) {
+                    baseMapper.insertBatchSomeColumn(oneBatchList);
+                    //每次提交后清空集合数据
+                    oneBatchList.clear();
+                    idxLimit = Math.min(idxLimit + batchSize, size);
+                }
+            }
+        } catch (Exception e) {
+            log.error("保存失败", e);
+            return false;
+        }
+        return true;
+    }
+
 
 }

+ 13 - 268
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -602,54 +602,35 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             String[] ids = wbsTreeIds.split(",");
             List<String> idList = Arrays.asList(ids);
             List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
-
-            //当前项目存在的引用ids
             List<String> idList2 = new ArrayList<>();
 
-            //当前公有引用ids
             if (pawDTO.getReferenceType().equals("public")) {
                 List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                         .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                         .eq(WbsTreePrivate::getType, 1)
                 );
-                wbsTreePrivates.forEach(wbsTreePrivate -> {
-                    idList2.add(String.valueOf(wbsTreePrivate.getId()));
-                });
-            }
-
-            //当前私有引用ids
-            else if (pawDTO.getReferenceType().equals("private")) {
+                //当前公有引用ids
+                List<String> collect = wbsTreePrivates.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+                idList2.addAll(collect);
+            } else if (pawDTO.getReferenceType().equals("private")) {
                 List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                         .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
                         .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                         .eq(WbsTreePrivate::getType, 1)
                 );
-                wbsTreePrivates2.forEach(wbsTreePrivate -> {
-                    idList2.add(String.valueOf(wbsTreePrivate.getId()));
-                });
+                //当前私有引用ids
+                List<String> collect = wbsTreePrivates2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+                idList2.addAll(collect);
             }
 
-            //新增节点ids
             List<String> saveIds = idList1.stream().filter(f -> !idList2.contains(f)).collect(Collectors.toList());
-            //删除节点ids
             List<String> delIds = idList2.stream().filter(f -> !idList1.contains(f)).collect(Collectors.toList());
 
-            /*-----------------1.同步-----------------*/
+            //1.同步修改节点基础信息、私有电签默认信息
             if (saveIds.size() == 0 && delIds.size() == 0) {
-                //同步的元素表DataList
-                List<WbsTreePrivate> insertDataPrivate1 = new ArrayList<>();
-                //同步到该项目下所有合同段下的DataList
-                List<WbsTreeContract> insertDataContract1 = new ArrayList<>();
-                //同步到该合同段下所有复制或新增的节点下的DataList
-                List<WbsTreeContract> insertDataContract2 = new ArrayList<>();
-
-                //1.项目表单同步
                 if (pawDTO.getReferenceType().equals("public")) {
-                    //公有同步新增元素表
-                    //获取公有wbs树新增的元素表
                     List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
-
                     //获取公有wbs树所有的节点、元素表
                     List<WbsTree> wbsTreeListAll = new ArrayList<>();
                     if (allNodeList != null) {
@@ -660,10 +641,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         wbsTreeListAll.addAll(wbsTreeList);
                     }
 
-                    //公有元素表的id
-                    List<WbsTree> wbsTreeListTables = wbsTreeListAll.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
-                    List<String> collect1 = wbsTreeListTables.stream().map(WbsTree::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
-
                     //获取项目私有wbs树下所有的节点、元素表
                     List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                             .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
@@ -671,117 +648,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             .eq(WbsTreePrivate::getStatus, 1)
                     );
 
-                    //私有元素表的id
-                    List<WbsTreePrivate> collect = wbsTreePrivatesAll.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
-                    List<String> collect2 = collect.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
-
-                    List<String> diffRent1 = DiffListUtil.getDiffRent(collect1, collect2);
-
                     //修改公有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
                     this.updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, pawDTO.getProjectId());
 
-                    if (diffRent1.size() == 0) {
-                        return true;
-
-                    } else {
-                        if (collect1.size() > collect2.size()) {
-                            //获取当前项目下所有施工合同段id
-                            List<ContractInfo> contractInfoIds = contractInfoMapper.selectContractIdByProjectId(pawDTO.getProjectId());
-                            //公有同步元素表
-                            for (String tableId : diffRent1) {
-                                WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
-                                if (wbsTree == null) {
-                                    continue;
-                                }
-                                //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
-                                WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
-                                        .eq(WbsTreePrivate::getId, wbsTree.getParentId())
-                                        .eq(WbsTreePrivate::getWbsId, wbsTree.getWbsId())
-                                        .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
-                                        .eq(WbsTreePrivate::getStatus, 1)
-                                );
-
-                                if (wbsTreePrivate1 != null) {
-                                    //同步元素表
-                                    Long snowId1 = SnowFlakeUtil.getId();
-                                    WbsTreePrivate wbsTreePrivate2 = BeanUtil.copyProperties(wbsTree, WbsTreePrivate.class);
-                                    assert wbsTreePrivate2 != null;
-                                    wbsTreePrivate2.setPKeyId(snowId1);
-                                    wbsTreePrivate2.setWbsType(String.valueOf(pawDTO.getWbsType()));
-                                    wbsTreePrivate2.setProjectId(pawDTO.getProjectId());
-                                    insertDataPrivate1.add(wbsTreePrivate2);
-                                    //wbsTreePrivateMapper.insert(wbsTreePrivate2);
-                                    //wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
-
-                                    /*//2.同步到该项目下所有合同段wbs树
-                                    //找到当前新增成功的元素表
-                                    //WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, snowId1));
-                                    WbsTreePrivate wbsTreePrivate = insertDataPrivate1.stream().filter(f -> f.getPKeyId().equals(snowId1)).findAny().orElse(null);
-
-                                    for (ContractInfo contractInfoId : contractInfoIds) {
-                                        WbsTreeContract wbsTreeContract = BeanUtil.copyProperties(wbsTreePrivate, WbsTreeContract.class);
-                                        if (wbsTreeContract != null) {
-                                            wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
-                                            wbsTreeContract.setWbsId(pawDTO.getWbsId());
-                                            wbsTreeContract.setProjectId(pawDTO.getProjectId());
-                                            wbsTreeContract.setContractType(pawDTO.getContractType());
-                                            wbsTreeContract.setContractId(String.valueOf(contractInfoId.getId()));
-                                            wbsTreeContract.setIsBussShow(1);
-                                            if (wbsTreePrivate.getType() == 2) {
-                                                wbsTreeContract.setIsTypePrivatePid(wbsTreePrivate.getPKeyId());
-                                            }
-
-                                            //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
-                                            WbsTreeContract wbsTreeContract1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                                                    .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
-                                                    .eq(WbsTreeContract::getContractId, contractInfoId.getId())
-                                                    .eq(WbsTreeContract::getType, 1)
-                                                    .eq(WbsTreeContract::getId, wbsTreePrivate.getParentId())
-                                            );
-                                            if (wbsTreeContract1 != null) {
-                                                insertDataContract1.add(wbsTreeContract);
-                                                //wbsTreeContractMapper.insert(wbsTreeContract);
-
-                                                //新增同步到对应的复制或新增的父级节点下
-                                                //获取当前新增表单的上级父节点
-                                                WbsTreeContract wbsTreeContracts1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                                                        .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
-                                                        .eq(WbsTreeContract::getContractId, contractInfoId.getId())
-                                                        .eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
-                                                        .eq(WbsTreeContract::getWbsId, pawDTO.getWbsId())
-                                                        .eq(WbsTreeContract::getType, 1)
-                                                );
-                                                if (wbsTreeContracts1 != null) {
-                                                    //获取上级父级节点同级别的复制或新增节点
-                                                    List<WbsTreeContract> wbsTreeContracts2 = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                                                            .eq(WbsTreeContract::getOldId, wbsTreeContracts1.getId())
-                                                            .eq(WbsTreeContract::getContractId, contractInfoId.getId())
-                                                            .eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
-                                                            .eq(WbsTreeContract::getWbsId, pawDTO.getWbsId())
-                                                            .eq(WbsTreeContract::getType, 1)
-                                                    );
-                                                    if (wbsTreeContracts2.size() > 0) {
-                                                        //将表单同步到复制或新增的节点下
-                                                        for (WbsTreeContract treeContract : wbsTreeContracts2) {
-                                                            wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
-                                                            wbsTreeContract.setParentId(treeContract.getId());
-                                                            //wbsTreeContractMapper.insert(wbsTreeContract);
-                                                            insertDataContract2.add(wbsTreeContract);
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                    */
-                                }
-                            }
-                            return true;
-                        }
-                    }
+                }
 
-                } else if (pawDTO.getReferenceType().equals("private")) {
-                    //私有同步新增元素表
+                if (pawDTO.getReferenceType().equals("private")) {
                     //获取私有引用项目的wbs树的所有节点、元素表
                     WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
                             .eq(WbsTreePrivate::getPKeyId, pawDTO.getPrimaryKeyId()));
@@ -790,22 +662,14 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
                             .eq(WbsTreePrivate::getStatus, 1)
                     );
-
-                    //私有引用项目的表单id
                     List<WbsTreePrivate> WbsTreePrivateTables = wbsTreePrivateAllOld.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
-                    List<String> collect1 = WbsTreePrivateTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
 
                     //获取当前项目私有wbs树下当前所有节点、元素表
                     List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                             .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
                             .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                     );
-
-                    //当前存在的表单的id
                     List<WbsTreePrivate> wbsTreePrivateNowTables = wbsTreePrivatesAllNow.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
-                    List<String> collect2 = wbsTreePrivateNowTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
-
-                    List<String> diffRent1 = DiffListUtil.getDiffRent(collect1, collect2);
 
                     //同步私有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
                     this.updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
@@ -813,119 +677,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     //同步私有-电签匹配数据、默认信息数据
                     this.insertTextDictInfoAsync(WbsTreePrivateTables, wbsTreePrivateNowTables);
 
-                    if (diffRent1.size() == 0) {
-                        return true;
-
-                    } else {
-                        if (collect1.size() > collect2.size()) {
-                            //获取当前项目下所有施工合同段id
-                            List<ContractInfo> contractInfoIds = contractInfoMapper.selectContractIdByProjectId(pawDTO.getProjectId());
-                            //私有同步元素表
-                            List<WbsTreePrivate> lists = new ArrayList<>();
-
-                            diffRent1.forEach(tableId -> {
-                                List<WbsTreePrivate> wbsTreePrivates3 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                        .eq(WbsTreePrivate::getId, tableId)
-                                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                                        .eq(WbsTreePrivate::getType, 2)
-                                );
-                                lists.addAll(wbsTreePrivates3);
-                            });
-
-                            for (WbsTreePrivate list : lists) {
-                                //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
-                                WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
-                                        .eq(WbsTreePrivate::getId, list.getParentId())
-                                        .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
-                                        .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
-                                        .eq(WbsTreePrivate::getStatus, 1)
-                                );
-
-                                if (wbsTreePrivate1 != null) {
-                                    //初始化元素表信息
-                                    list.setPKeyId(SnowFlakeUtil.getId());
-                                    list.setWbsId(pawDTO.getPrimaryKeyId());
-                                    list.setProjectId(pawDTO.getProjectId());
-                                    //同步新增元素表
-                                    //wbsTreePrivateService.save(list);
-                                    insertDataPrivate1.add(list);
-
-                                    //同步到该项目下的所有合同段
-                                    for (ContractInfo contractInfoId : contractInfoIds) {
-                                        WbsTreeContract wbsTreeContract = BeanUtil.copyProperties(list, WbsTreeContract.class);
-                                        if (wbsTreeContract != null) {
-                                            wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
-                                            wbsTreeContract.setWbsId(pawDTO.getPrimaryKeyId());
-                                            wbsTreeContract.setProjectId(pawDTO.getProjectId());
-                                            wbsTreeContract.setContractType(pawDTO.getContractType());
-                                            wbsTreeContract.setContractId(String.valueOf(contractInfoId.getId()));
-                                            wbsTreeContract.setIsBussShow(1);
-                                            if (list.getType() == 2) {
-                                                wbsTreeContract.setIsTypePrivatePid(list.getPKeyId());
-                                            }
-
-                                            //判断元素表是否存在上级节点,存在则新增;不存在则表示没被引用,不新增
-                                            WbsTreeContract wbsTreeContract1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                                                    .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
-                                                    .eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId())
-                                                    .eq(WbsTreeContract::getWbsId, wbsTreeContract.getWbsId())
-                                                    .eq(WbsTreeContract::getType, 1)
-                                                    .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
-                                            );
-                                            if (wbsTreeContract1 != null) {
-                                                //wbsTreeContractMapper.insert(wbsTreeContract);
-                                                insertDataContract1.add(wbsTreeContract);
-
-                                                //新增同步到对应的复制或新增的父级节点下
-                                                //获取当前新增表单的上级父节点
-                                                WbsTreeContract wbsTreeContracts1 = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                                                        .eq(WbsTreeContract::getId, wbsTreeContract.getParentId())
-                                                        .eq(WbsTreeContract::getContractId, contractInfoId.getId())
-                                                        .eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
-                                                        .eq(WbsTreeContract::getWbsId, pawDTO.getPrimaryKeyId())
-                                                        .eq(WbsTreeContract::getType, 1)
-                                                );
-                                                if (wbsTreeContracts1 != null) {
-                                                    //获取上级父级节点同级别的复制或新增节点
-                                                    List<WbsTreeContract> wbsTreeContracts2 = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                                                            .eq(WbsTreeContract::getOldId, wbsTreeContracts1.getId())
-                                                            .eq(WbsTreeContract::getContractId, contractInfoId.getId())
-                                                            .eq(WbsTreeContract::getProjectId, pawDTO.getProjectId())
-                                                            .eq(WbsTreeContract::getWbsId, pawDTO.getPrimaryKeyId())
-                                                            .eq(WbsTreeContract::getType, 1)
-                                                    );
-                                                    if (wbsTreeContracts2.size() > 0) {
-                                                        //将表单同步到复制或新增的节点下
-                                                        for (WbsTreeContract treeContract : wbsTreeContracts2) {
-                                                            wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
-                                                            wbsTreeContract.setParentId(treeContract.getId());
-                                                            //wbsTreeContractMapper.insert(wbsTreeContract);
-                                                            insertDataContract2.add(wbsTreeContract);
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-
-                //同步新增
-                if (insertDataPrivate1.size() > 0) {
-                    this.insertBatch(insertDataPrivate1, 1000);
-                } else if (insertDataContract1.size() > 0) {
-                    wbsTreeContractService.insertBatch(insertDataContract1, 1000);
-                } else if (insertDataContract2.size() > 0) {
-                    wbsTreeContractService.insertBatch(insertDataContract2, 1000);
                 }
 
             } else {
-
-                /*-----------------2.删除-----------------*/
+                //2.删除
                 if (delIds.size() > 0) {
                     if (pawDTO.getReferenceType().equals("public")) {
                         List<Long> ids1 = delIds.stream().map(Long::parseLong).collect(Collectors.toList());
@@ -974,7 +729,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     }
                 }
 
-                /*-----------------3.新增-----------------*/
+                //3.新增
                 if (saveIds.size() > 0) {
                     if (saveIds.size() >= 1000) { //新增1000个以上节点时
                         String redisValue = bladeRedis.get("submit-wbs-project:" + pawDTO.getProjectId());
@@ -992,7 +747,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                     if (pawDTO.getReferenceType().equals("public")) {
                         //引用公有
-                        //查询所有公共节点、表 saveIds=新增的节点id
                         List<WbsTree> addListData = new ArrayList<>();
                         //查询出当前wbs树下所有节点、表信息
                         List<WbsTree> treesAll = baseMapper.selectList(Wrappers.<WbsTree>query().lambda()
@@ -1023,7 +777,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                     } else if (pawDTO.getReferenceType().equals("private")) {
                         //引用私有
-                        //查询所有私有节点、表 saveIds=新增的节点id
                         List<WbsTreePrivate> addListData = new ArrayList<>();
 
                         //私有引用-电签匹配数据、默认信息数据
@@ -1080,28 +833,20 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         });
                     }
 
-                    //新增
                     if (pawDTO.getReferenceType().equals("public")) {
-                        //批量插入
                         this.insertBatch(insertData1, 1000);
-
                         projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
-
                     } else if (pawDTO.getReferenceType().equals("private")) {
-                        //批量插入
                         this.insertBatch(insertData2, 1000);
-
-                        //同步电签位置配置信息、编辑默认信息数据
                         textDictInfoService.saveBatch(insertData3, 1000);
-
                         projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
                     }
-
                     if (saveIds.size() >= 1000) {
                         bladeRedis.set("submit-wbs-project:" + pawDTO.getProjectId(), "1");
                         bladeRedis.expire("submit-wbs-project:" + pawDTO.getProjectId(), 60);
                     }
                 }
+
             }
             return true;
         } catch (Exception e) {

+ 1 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/DiffListUtil.java

@@ -1,9 +1,6 @@
 package org.springblade.manager.utils;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 public class DiffListUtil {