ソースを参照

同步功能逻辑复验

LHB 4 ヶ月 前
コミット
406b026a98

+ 172 - 176
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1643,13 +1643,11 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             }
 
 
-
-
             //通过递归的方式去获取祖级路径
 
             if (addData.isEmpty()) {
                 return null;
-            }else{
+            } else {
                 try {
                     String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
                     Set<String> urls = new HashSet<>();
@@ -1675,8 +1673,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             }
 
 
-
-
             //查询出当前项目所有节点
             List<WbsTreePrivate> addList = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
                     .eq(WbsTreePrivate::getIsDeleted, 0)
@@ -1708,12 +1704,12 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             //获取当前节点对应节点信息
             WbsTreePrivate wbsTreePrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, primaryKeyId));
-            if(StringUtils.isEmpty(wbsTreePrivate.getAncestorsPId())){
+            if (StringUtils.isEmpty(wbsTreePrivate.getAncestorsPId())) {
                 throw new RuntimeException("当前节点祖级路径数据异常,请联系工作人员修复数据");
             }
             //查询当前选中节点下的子节点是否为表单 如果子节点还有子节点就不允许同步
             Long count = baseMapper.selectCount(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPId, wbsTreePrivate.getPKeyId()).eq(WbsTreePrivate::getType, 1));
-            if(count > 0){
+            if (count > 0) {
                 throw new RuntimeException("请选择底层节点");
             }
             //获取项目信息
@@ -1723,178 +1719,177 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             List<WbsTreeContract> insertDataContractList = new ArrayList<>();
 
 //            if (("1").equals(wbsTreePrivate.getWbsType())) {
-                if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
-                    /*-------------------------------------质检公有引用同步--------------------------------------------*/
-                    //获取当前节点对应的公有引用树下的元素表
-                    List<WbsTree> wbsTrees = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery()
-                            .select(WbsTree::getAncestors, WbsTree::getWbsId, WbsTree::getId)
-                            .and(wq -> wq.eq(WbsTree::getId, wbsTreePrivate.getId())
-                                    .or()
-                                    .eq(WbsTree::getId, wbsTreePrivate.getTreePId()))
+            if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
+                /*-------------------------------------质检公有引用同步--------------------------------------------*/
+                //获取当前节点对应的公有引用树下的元素表
+                List<WbsTree> wbsTrees = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery()
+                        .select(WbsTree::getAncestors, WbsTree::getWbsId, WbsTree::getId)
+                        .and(wq -> wq.eq(WbsTree::getId, wbsTreePrivate.getTreePId())
+                                .or()
+                                .eq(WbsTree::getId, wbsTreePrivate.getTreePId()))
+                );
+                List<WbsTree> wbsTreesPublicTables;
+                WbsTree wbsTree = wbsTrees.get(0);
+                if (wbsTree.getAncestors().equals("0")) {
+                    //根节点
+                    wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                                    .select(WbsTree::getId, WbsTree::getParentId)
+                                    .eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
+                            /*.eq(WbsTree::getStatus,1)*/
                     );
-                    List<WbsTree> wbsTreesPublicTables;
-                    WbsTree wbsTree = wbsTrees.get(0);
-                    if (wbsTree.getAncestors().equals("0")) {
-                        //根节点
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                        .select(WbsTree::getId, WbsTree::getParentId)
-                                        .eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
-                                /*.eq(WbsTree::getStatus,1)*/
-                        );
-                    } else {
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .select(WbsTree::getId, WbsTree::getParentId)
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
-                                /*.eq(WbsTree::getStatus,1)*/
-                                .like(WbsTree::getAncestors, wbsTree.getId())
-                        );
-                    }
-
-                    //获取当前项目树下的元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                    .select(WbsTreePrivate::getType, WbsTreePrivate::getId, WbsTreePrivate::getAncestorsPId, WbsTreePrivate::getTreePId)
-                                    .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                                    .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            /*.eq(WbsTreePrivate::getStatus, 1)*/
+                } else {
+                    wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                            .select(WbsTree::getId, WbsTree::getParentId)
+                            .eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2)
+                            /*.eq(WbsTree::getStatus,1)*/
+                            .like(WbsTree::getAncestors, wbsTree.getId())
                     );
-                    List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
+                }
 
-                    List<WbsTreePrivate> wbsTreePrivatesProjectTables;
-                    if (wbsTreePrivate.getAncestorsPId().equals("0")) {
-                        //根节点
-                        wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
-                    } else {
-                        wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestorsPId().contains(String.valueOf(wbsTreePrivate.getPKeyId()))).collect(Collectors.toList());
-                    }
+                //获取当前项目树下的元素表 节点
+                List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                                .select(WbsTreePrivate::getType, WbsTreePrivate::getAncestorsPId, WbsTreePrivate::getTreePId)
+                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                        /*.eq(WbsTreePrivate::getStatus, 1)*/
+                );
+
+                List<WbsTreePrivate> wbsTreePrivatesProjectTables;
+                if (wbsTreePrivate.getAncestorsPId().equals("0")) {
+                    //根节点
+                    wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
+                } else {
+                    wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestorsPId().contains(String.valueOf(wbsTreePrivate.getPKeyId()))).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());
-                    Set<Long> privateIdsAndPids = wbsTreePrivatesProjectTables.stream()
-                            .flatMap(p -> Stream.of(p.getId(), p.getTreePId()))
-                            .collect(Collectors.toSet());
+                Set<Long> privateIdsAndPids = wbsTreePrivatesProjectTables.stream()
+                        .map(WbsTreePrivate::getTreePId)
+                        .collect(Collectors.toSet());
+
+                // 过滤 wbsTreesPublicTables
+                List<WbsTree> addPublicTable = wbsTreesPublicTables.stream()
+                        .filter(f -> !privateIdsAndPids.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());
+
+                //构造
+                List<Long> ids = addPublicTable.stream().map(WbsTree::getId).collect(Collectors.toList());
+                if (ids.size() > 0) {
+                    List<WbsTree> resultDataList = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, ids));
+                    for (WbsTree tree : resultDataList) {
+                        WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
+                        if (dataPrivate != null) {
+                            dataPrivate.setPKeyId(SnowFlakeUtil.getId());
+                            dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
+                            dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
+                            dataPrivate.setFullName(dataPrivate.getNodeName());
+                            dataPrivate.setInitTableId(tree.getInitTableId().toString());
+                            dataPrivate.setIsAddConceal(0);
+                            dataPrivate.setParentId(wbsTreePrivate.getId());
+                            //TODO
+                            dataPrivate.setTreePId(tree.getId());
+                            //TODO
+                            dataPrivate.setPId(wbsTreePrivate.getPKeyId());
+                            //TODO
+                            dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPKeyId());
 
-                    // 过滤 wbsTreesPublicTables
-                    List<WbsTree> addPublicTable = wbsTreesPublicTables.stream()
-                            .filter(f -> !privateIdsAndPids.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());
-
-                    //构造
-                    List<Long> ids = addPublicTable.stream().map(WbsTree::getId).collect(Collectors.toList());
-                    if (ids.size() > 0) {
-                        List<WbsTree> resultDataList = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId, ids));
-                        for (WbsTree tree : resultDataList) {
-                            WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
-                            if (dataPrivate != null) {
-                                dataPrivate.setPKeyId(SnowFlakeUtil.getId());
-                                dataPrivate.setWbsType(wbsTreePrivate.getWbsType());
-                                dataPrivate.setProjectId(wbsTreePrivate.getProjectId());
-                                dataPrivate.setFullName(dataPrivate.getNodeName());
-                                dataPrivate.setInitTableId(tree.getInitTableId().toString());
-                                dataPrivate.setIsAddConceal(0);
-                                dataPrivate.setParentId(wbsTreePrivate.getId());
-                                //TODO
-                                dataPrivate.setTreePId(tree.getId());
-                                //TODO
-                                dataPrivate.setPId(wbsTreePrivate.getPKeyId());
-                                //TODO
-                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + dataPrivate.getPId());
-
-                                insertDataPrivateList.add(dataPrivate);//新增
-                            }
+                            insertDataPrivateList.add(dataPrivate);//新增
                         }
                     }
+                }
 
-                } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
-                    /*-------------------------------------质检私有引用同步--------------------------------------------*/
-                    //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
-                    WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
-                            .eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
-
-                    //获取到私有模板的当前节点的子节点数据
-
-                    //获取当前私有引用树的元素表信息
-                    List<WbsTreePrivate> wbsTreePrivateRootTables;
-                    if (wbsTreePrivate.getAncestorsPId().equals("0")) {
-                        //根节点
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                                        .select(WbsTreePrivate::getId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
-                                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                        .eq(WbsTreePrivate::getType, 2)
-                                /*.eq(WbsTreePrivate::getStatus, 1)*/
-                        );
-                    } else {
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                                .select(WbsTreePrivate::getId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                /*.eq(WbsTreePrivate::getStatus, 1)*/
-                                .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId()));
-                    }
-                    if(CollectionUtil.isEmpty(wbsTreePrivateRootTables)){
-                        throw new ServiceException("私有模板无法找到此节点");
-                    }
-
-                    //获取当前项目选择的节点下的所有元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                                    .select(WbsTreePrivate::getType, WbsTreePrivate::getId, WbsTreePrivate::getAncestorsPId, WbsTreePrivate::getPKeyId)
-                                    .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                                    .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+            } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
+                /*-------------------------------------质检私有引用同步--------------------------------------------*/
+                //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
+                WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
+                        .eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
+
+                //根据模板跟节点信息 查询选中节点的信息
+                wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
+                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
+
+                        .eq(WbsTreePrivate::getTreePId, wbsTreePrivate.getTreePId()));
+
+                //获取当前私有引用树的元素表信息
+                List<WbsTreePrivate> wbsTreePrivateRootTables;
+                if (wbsTreePrivate.getAncestorsPId().equals("0")) {
+                    //根节点
+                    wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                    .select(WbsTreePrivate::getTreePId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
+                                    .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
+                                    .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
+                                    .eq(WbsTreePrivate::getType, 2)
                             /*.eq(WbsTreePrivate::getStatus, 1)*/
                     );
+                } else {
+                    wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                            .select(WbsTreePrivate::getTreePId, WbsTreePrivate::getParentId, WbsTreePrivate::getPKeyId)
+                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
+                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
+                            .eq(WbsTreePrivate::getType, 2)
+                            /*.eq(WbsTreePrivate::getStatus, 1)*/
+                            .like(WbsTreePrivate::getAncestorsPId, wbsTreePrivateRoot.getPKeyId()));
+                }
+                if (CollectionUtil.isEmpty(wbsTreePrivateRootTables)) {
+                    throw new ServiceException("私有模板无法找到此节点");
+                }
 
-                    List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
-                    List<WbsTreePrivate> wbsTreePrivatesProjectTables;
-                    if (wbsTreePrivate.getAncestorsPId().equals("0")) {
-                        //根节点
-                        wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
-                    } else {
-                        try {
-                            wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestorsPId().contains(String.valueOf(wbsTreePrivate.getPKeyId()))).collect(Collectors.toList());
-                        } catch (Exception e) {
-                            throw new ServiceException("祖级路径数据异常,请联系工作人员修复数据");
-                        }
+                //获取当前项目选择的节点下的所有元素表 节点
+                List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                                .select(WbsTreePrivate::getType, WbsTreePrivate::getTreePId, WbsTreePrivate::getAncestorsPId, WbsTreePrivate::getPKeyId)
+                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                        /*.eq(WbsTreePrivate::getStatus, 1)*/
+                );
+
+                List<WbsTreePrivate> wbsTreePrivatesProjectTables;
+                if (wbsTreePrivate.getAncestorsPId().equals("0")) {
+                    //根节点
+                    wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
+                } else {
+                    try {
+                        wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestorsPId().contains(String.valueOf(wbsTreePrivate.getPKeyId()))).collect(Collectors.toList());
+                    } catch (Exception e) {
+                        throw new ServiceException("祖级路径数据异常,请联系工作人员修复数据");
                     }
+                }
 
-                    //获取新增的私有元素表addPrivateTable
-                    List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
-
-                    //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
-                    List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
-                    //构造
-                    List<Long> ids = addPrivateTables.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
-                    if (ids.size() > 0) {
-                        List<WbsTreePrivate> resultDataList = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getPKeyId, ids));
-                        for (WbsTreePrivate tree : resultDataList) {
-                            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());
-                                dataPrivate.setInitTableId(tree.getInitTableId());
-                                dataPrivate.setIsAddConceal(0);
-
-                                //TODO
-                                dataPrivate.setTreePId(dataPrivate.getId());
-                                //TODO
-                                dataPrivate.setPId(wbsTreePrivate.getPKeyId());
-                                //TODO
-                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPId());
-
-
-                                insertDataPrivateList.add(dataPrivate);
-                            }
+                //获取新增的私有元素表addPrivateTable
+                List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
+                        !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getTreePId).collect(Collectors.toList()).contains(f.getTreePId())).collect(Collectors.toList());
+
+                //构造
+                List<Long> ids = addPrivateTable.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
+                if (ids.size() > 0) {
+                    List<WbsTreePrivate> resultDataList = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getPKeyId, ids));
+                    for (WbsTreePrivate tree : resultDataList) {
+                        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());
+                            dataPrivate.setInitTableId(tree.getInitTableId());
+                            dataPrivate.setIsAddConceal(0);
+
+                            //TODO
+                            dataPrivate.setTreePId(tree.getId());
+                            //TODO
+                            dataPrivate.setPId(wbsTreePrivate.getPKeyId());
+                            //TODO
+                            dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPKeyId());
+
+
+                            insertDataPrivateList.add(dataPrivate);
                         }
                     }
                 }
+            }
 //            }
 
 //            if (("2").equals(wbsTreePrivate.getWbsType())) {
@@ -1967,7 +1962,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 //                                //TODO
 //                                dataPrivate.setPId(wbsTreePrivate.getPKeyId());
 //                                //TODO
-//                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPId());
+//                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPKeyId());
 //
 //
 //                                insertDataPrivateList.add(dataPrivate);//新增
@@ -2047,7 +2042,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 //                                //TODO
 //                                dataPrivate.setPId(wbsTreePrivate.getPKeyId());
 //                                //TODO
-//                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPId());
+//                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPKeyId());
 //
 //
 //                                insertDataPrivateList.add(dataPrivate);
@@ -2126,7 +2121,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 //                                //TODO
 //                                dataPrivate.setPId(wbsTreePrivate.getPKeyId());
 //                                //TODO
-//                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPId());
+//                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPKeyId());
 //
 //
 //                                insertDataPrivateList.add(dataPrivate);//新增
@@ -2203,7 +2198,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 //                                //TODO
 //                                dataPrivate.setPId(wbsTreePrivate.getPKeyId());
 //                                //TODO
-//                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPId());
+//                                dataPrivate.setAncestorsPId(wbsTreePrivate.getAncestorsPId() + "," + wbsTreePrivate.getPKeyId());
 //
 //
 //                                insertDataPrivateList.add(dataPrivate);
@@ -2246,18 +2241,18 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 }
             }
 
+            //--------------------------------------------------------可能使用事务管理---------------------------------------------------------
             //同步到合同段(合同段中可能不存在原始节点(那么分配wsb处就同步不成功),但合同段存在新增、复制的节点,所以单独处理)
             if (!insertDataPrivateList.isEmpty()) {
-                //
-                for (WbsTreePrivate treePrivate : insertDataPrivateList) {
-                    WbsTreePrivate treePrivateP = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId, treePrivate.getParentId()).eq(WbsTreePrivate::getProjectId, treePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, treePrivate.getWbsId()));
-                    List<WbsTreeContract> addOrCo = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getIsTypePrivatePid, treePrivateP.getPKeyId())
-                            .eq(WbsTreeContract::getIsDeleted, 0)
+                //查询合同段当前节点父级的所有对应的合同段节点
+                List<WbsTreeContract> addOrCo = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+                        .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
+                        .eq(WbsTreeContract::getIsTypePrivatePid, wbsTreePrivate.getPKeyId())
+                        .eq(WbsTreeContract::getIsDeleted, 0)
+                );
+                if (addOrCo.size() > 0) {
 
-                    );
-                    if (addOrCo.size() > 0) {
+                    insertDataPrivateList.forEach(treePrivate -> {
                         for (WbsTreeContract addwbsTreeC : addOrCo) {
                             WbsTreeContract wbsTreeContract = BeanUtil.copyProperties(treePrivate, WbsTreeContract.class);
                             wbsTreeContract.setIsBussShow(1);
@@ -2266,16 +2261,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                             wbsTreeContract.setIsTypePrivatePid(treePrivate.getPKeyId()); //记录原始表的pKeyId
                             wbsTreeContract.setPKeyId(SnowFlakeUtil.getId());
                             wbsTreeContract.setParentId(addwbsTreeC.getId());
+                            wbsTreeContract.setAncestors(addwbsTreeC.getAncestors() + "," + addwbsTreeC.getId());
                             //TODO
                             wbsTreeContract.setTreePId(wbsTreeContract.getId());
                             //TODO
                             wbsTreeContract.setPId(addwbsTreeC.getPKeyId());
                             //TODO
-                            wbsTreeContract.setAncestorsPId(addwbsTreeC.getAncestorsPId() + "," + wbsTreeContract.getPId());
+                            wbsTreeContract.setAncestorsPId(addwbsTreeC.getAncestorsPId() + "," + addwbsTreeC.getPKeyId());
                             wbsTreeContract.setContractId(addwbsTreeC.getContractId());
                             insertDataContractList.add(wbsTreeContract);
                         }
-                    }
+                    });
                 }
 
                 /*Map<Long, List<WbsTreePrivate>> tabParentNodesGroup = insertDataPrivateList.stream().collect(Collectors.groupingBy(WbsTreePrivate::getParentId));