فهرست منبع

Merge remote-tracking branch 'origin/master'

huangjn 2 سال پیش
والد
کامیت
3e9a4129d3

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java

@@ -239,4 +239,10 @@ public class WbsTreeContract extends BaseEntity {
     @ApiModelProperty(value = "导入wbs划分匹配字段")
     private String importMatchingInfo;
 
+    /**
+     * 是否为隐蔽工程节点 '0'否 '1'是
+     */
+    @ApiModelProperty(value = "是否为隐蔽工程节点 '0'否 '1'是")
+    private Integer isConcealedWorksNode;
+
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -67,6 +67,7 @@
         <result column="colorStatus" property="colorStatus"/>
         <result column="type" property="type"/>
         <result column="partitionCode" property="partitionCode"/>
+        <result column="isConcealedWorksNode" property="isConcealedWorksNode"/>
     </resultMap>
 
     <resultMap id="intResultMap" type="java.lang.Integer"/>
@@ -151,6 +152,7 @@
 
     <select id="queryContractTree" resultMap="queryContractTreeMap">
         SELECT
+            wtc.is_concealed_works_node AS "isConcealedWorksNode",
             wtc.p_key_id AS primaryKeyId,
             wtc.id,
             CASE wtc.parent_id

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -74,4 +74,11 @@ public class WbsTreeContractController extends BladeController {
         return R.status(iWbsTreeContractService.submitRelation(wbsTreeContractDTO2));
     }
 
+    @GetMapping("/concealed-works-node")
+    @ApiOperationSupport(order = 5)
+    @ApiOperation(value = "标记/取消隐蔽工程节点", notes = "传入节点pKeyId")
+    public R concealedWorksNode(@RequestParam String pKeyId) {
+        return R.status(iWbsTreeContractService.concealedWorksNode(pKeyId));
+    }
+
 }

+ 3 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -48,6 +48,7 @@
         <result column="is_type_private_pid" property="isTypePrivatePid"/>
         <result column="is_import_identification_node" property="isImportIdentificationNode"/>
         <result column="import_matching_info" property="importMatchingInfo"/>
+        <result column="is_concealed_works_node" property="isConcealedWorksNode"/>
     </resultMap>
 
     <resultMap id="resultMap2" type="org.springblade.manager.vo.WbsTreeContractVO">
@@ -518,8 +519,8 @@
                 full_name = #{item.nodeName},
                 node_type = #{item.nodeType},
                 major_data_type = #{item.majorDataType},
-                unique_code = #{item.uniqueCode},
-                partition_code = #{item.partitionCode},
+                /*unique_code = #{item.uniqueCode},
+                partition_code = #{item.partitionCode},*/
                 table_type = #{item.tableType},
                 table_owner = #{item.tableOwner}
             </set>

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -260,8 +260,8 @@
                 full_name = #{item.fullName},
                 node_type = #{item.nodeType},
                 major_data_type = #{item.majorDataType},
-                unique_code = #{item.uniqueCode},
-                partition_code = #{item.partitionCode},
+                /*unique_code = #{item.uniqueCode},
+                partition_code = #{item.partitionCode},*/
                 table_type = #{item.tableType},
                 table_owner = #{item.tableOwner},
                 fill_rate = #{item.fillRate},

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -44,4 +44,6 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     boolean submitRelation(WbsTreeContractDTO2 wbsTreeContractDTO2);
 
+    boolean concealedWorksNode(String pKeyId);
+
 }

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

@@ -3,6 +3,7 @@ package org.springblade.manager.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
@@ -223,6 +224,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                         wbsTreeContract.setIsBussShow(1);
                         wbsTreeContract.setProjectId(pawDTO.getProjectId());
                         wbsTreeContract.setContractId(pawDTO.getContractId());
+                        wbsTreeContract.setIsConcealedWorksNode(0);
                         if (wbsTreePrivate.getType() == 2) {
                             wbsTreeContract.setIsTypePrivatePid(wbsTreePrivate.getPKeyId());
                         }
@@ -418,6 +420,39 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return true;
     }
 
+    @Override
+    public boolean concealedWorksNode(String pKeyId) {
+        if (StringUtils.isNotEmpty(pKeyId)) {
+            //获取节点信息
+            WbsTreeContract wbsTreeContract = baseMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getPKeyId, pKeyId));
+            List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreeContract.getProjectId()).eq(ContractInfo::getStatus, 1));
+            List<WbsTreeContract> wbsTreeContractList = new ArrayList<>();
+            for (ContractInfo contractInfo : contractInfos) {
+                WbsTreeContract node = baseMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                        .eq(WbsTreeContract::getId, wbsTreeContract.getId())
+                        .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
+                        .eq(WbsTreeContract::getContractId, contractInfo.getId())
+                        .eq(WbsTreeContract::getStatus, 1)
+                        .eq(WbsTreeContract::getType, 1)
+                );
+                wbsTreeContractList.add(node);
+            }
+            //标记是否隐蔽工程节点
+            for (WbsTreeContract treeContract : wbsTreeContractList) {
+                if (ObjectUtils.isEmpty(treeContract.getIsConcealedWorksNode())) {
+                    treeContract.setIsConcealedWorksNode(0);
+                }
+                treeContract.setIsConcealedWorksNode(treeContract.getIsConcealedWorksNode().equals(0) ? 1 : 0);
+                LambdaUpdateWrapper<WbsTreeContract> updateWrapper = new LambdaUpdateWrapper<>();
+                updateWrapper.eq(WbsTreeContract::getPKeyId, treeContract.getPKeyId())
+                        .set(WbsTreeContract::getIsConcealedWorksNode, treeContract.getIsConcealedWorksNode());
+                baseMapper.update(null, updateWrapper);
+            }
+            return true;
+        }
+        return false;
+    }
+
     private List<WbsTreeContract> findAllNodeList(String wbsTreeIds, String projectId, String contractId, String wbsId) {
         String[] ids = wbsTreeIds.split(",");
         List<WbsTreeContract> list = new ArrayList<>();
@@ -627,6 +662,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                                     wbsTreeContract.setFullName(nodeName);
                                     wbsTreeContract.setPartitionCode(partitionCode);
                                     wbsTreeContract.setIsImportIdentificationNode(1);
+                                    wbsTreeContract.setIsConcealedWorksNode(0);
 
                                     baseMapper.insert(wbsTreeContract);
                                     WbsTreeContractVO wbsTreeContractVO = BeanUtil.copyProperties(wbsTreeContract, WbsTreeContractVO.class);
@@ -772,6 +808,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             wbsTreeContract.setType(1);
             wbsTreeContract.setNodeType(nodeType);
             wbsTreeContract.setIsImportIdentificationNode(0);  //识别失败
+            wbsTreeContract.setIsConcealedWorksNode(0);
             list.add(wbsTreeContract);
         }
         return list;

+ 98 - 40
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -323,15 +323,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 if (wbsTree.getId().equals(wbsTreePrivate.getId()) &&
                         (!wbsTree.getNodeName().equals(wbsTreePrivate.getNodeName())
                                 || (wbsTree.getNodeType() != null && !wbsTree.getNodeType().equals(wbsTreePrivate.getNodeType()))
-                                || (wbsTree.getPartitionCode() != null && !wbsTree.getPartitionCode().equals(wbsTreePrivate.getPartitionCode()))
-                                || (wbsTree.getUniqueCode() != null && !wbsTree.getUniqueCode().equals(wbsTreePrivate.getUniqueCode()))
+                                /*|| (wbsTree.getPartitionCode() != null && !wbsTree.getPartitionCode().equals(wbsTreePrivate.getPartitionCode()))
+                                || (wbsTree.getUniqueCode() != null && !wbsTree.getUniqueCode().equals(wbsTreePrivate.getUniqueCode()))*/
                                 || (wbsTree.getMajorDataType() != null && !wbsTree.getMajorDataType().equals(wbsTreePrivate.getMajorDataType()))
                                 || (wbsTree.getTableType() != null && !wbsTree.getTableType().equals(wbsTreePrivate.getTableType()))
                                 || (wbsTree.getTableOwner() != null && !wbsTree.getTableOwner().equals(wbsTreePrivate.getTableOwner()))
                                 || (wbsTree.getImportMatchingInfo() != null && !wbsTree.getImportMatchingInfo().equals(wbsTreePrivate.getImportMatchingInfo()))
                         )) {
                     //修改项目wbs信息
-                    //baseMapper.updateBatchByIds(wbsTree, projectId);
                     WbsTreePrivate wbsPrivate = new WbsTreePrivate();
                     BeanUtil.copyProperties(wbsTree, wbsPrivate);
                     wbsPrivate.setProjectId(projectId);
@@ -339,7 +338,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                     for (ContractInfo contractInfo : contractInfos) {
                         //修改合同段wbs信息
-                        //wbsTreeContractMapper.updateBatchByIds(wbsTree, contractInfo.getId());
                         WbsTreeContract wbsContract = new WbsTreeContract();
                         BeanUtil.copyProperties(wbsTree, wbsContract);
                         wbsContract.setContractId(String.valueOf(contractInfo.getId()));
@@ -375,15 +373,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 if (wbsTreePrivate.getId().equals(treePrivateNow.getId()) &&
                         (!wbsTreePrivate.getNodeName().equals(treePrivateNow.getNodeName())
                                 || (wbsTreePrivate.getNodeType() != null && !wbsTreePrivate.getNodeType().equals(treePrivateNow.getNodeType()))
-                                || (wbsTreePrivate.getPartitionCode() != null && !wbsTreePrivate.getPartitionCode().equals(treePrivateNow.getPartitionCode()))
-                                || (wbsTreePrivate.getUniqueCode() != null && !wbsTreePrivate.getUniqueCode().equals(treePrivateNow.getUniqueCode()))
+                                /*|| (wbsTreePrivate.getPartitionCode() != null && !wbsTreePrivate.getPartitionCode().equals(treePrivateNow.getPartitionCode()))
+                                || (wbsTreePrivate.getUniqueCode() != null && !wbsTreePrivate.getUniqueCode().equals(treePrivateNow.getUniqueCode()))*/
                                 || (wbsTreePrivate.getMajorDataType() != null && !wbsTreePrivate.getMajorDataType().equals(treePrivateNow.getMajorDataType()))
                                 || (wbsTreePrivate.getTableType() != null && !wbsTreePrivate.getTableType().equals(treePrivateNow.getTableType()))
                                 || (wbsTreePrivate.getTableOwner() != null && !wbsTreePrivate.getTableOwner().equals(treePrivateNow.getTableOwner()))
                                 || (wbsTreePrivate.getImportMatchingInfo() != null && !wbsTreePrivate.getImportMatchingInfo().equals(treePrivateNow.getImportMatchingInfo())))) {
 
                     //修改项目wbs信息
-                    //baseMapper.updateBatchByIds2(wbsTreePrivate, projectId, wbsId);
                     WbsTreePrivate wbsPrivate = new WbsTreePrivate();
                     BeanUtil.copyProperties(wbsTreePrivate, wbsPrivate);
                     wbsPrivate.setWbsId(wbsId);
@@ -392,7 +389,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                     for (ContractInfo contractInfo : contractInfos) {
                         //修改合同段wbs信息
-                        //wbsTreeContractMapper.updateBatchByIds2(wbsTreePrivate, contractInfo.getId());
                         WbsTreeContract wbsContract = new WbsTreeContract();
                         BeanUtil.copyProperties(wbsTreePrivate, wbsContract);
                         wbsContract.setContractId(String.valueOf(contractInfo.getId()));
@@ -605,7 +601,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         .eq(WbsTreePrivate::getStatus, 1)
                 );
                 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) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
+
+                List<WbsTreePrivate> wbsTreePrivatesProjectTables;
+                if (wbsTreePrivate.getAncestors().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.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
+                }
 
                 //获取新增的公有元素表addPublicTable
                 List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
@@ -620,6 +623,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 //获取当前项目下所有施工合同段id
                 List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
 
+                //获取当前项目下所有合同段树
+                List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
+                        .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
+                        .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) {
                     WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
@@ -649,27 +660,42 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                     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())
-                                );
+                                //判断元素表是否存在合同段,存在则不新增;不存在则表示没被引用,新增
+                                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 = treeContractListAllNodes.stream().filter(f ->
+                                        f.getContractId().equals(String.valueOf(contractInfo.getId()))
+                                                && f.getProjectId().equals(dataContract.getProjectId())
+                                                && f.getStatus().equals(1)
+                                                && f.getType().equals(1)
+                                                && f.getId().equals(dataContract.getParentId())
+                                ).findAny().orElse(null);
+
                                 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)
-                                    );
+                                    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())
+                                                    && f.getProjectId().equals(dataContractParent.getProjectId())
+                                                    && f.getStatus().equals(1)
+                                                    && f.getType().equals(1)
+                                    ).collect(Collectors.toList());
+
                                     if (dataContractEquallyNodes.size() > 0) {
                                         //将表单同步到复制或新增的节点下
                                         for (WbsTreeContract treeContractCopy : dataContractEquallyNodes) {
@@ -720,7 +746,13 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                 );
 
                 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) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
+                List<WbsTreePrivate> wbsTreePrivatesProjectTables;
+                if (wbsTreePrivate.getAncestors().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.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
+                }
 
                 //获取新增的私有元素表addPrivateTable
                 List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
@@ -735,6 +767,14 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
                 ).collect(Collectors.toList());
 
+                //获取当前项目下所有合同段树
+                List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
+                        .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
+                        .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) {
                     WbsTreePrivate dataPrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
@@ -759,25 +799,43 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                 if (dataPrivate.getType() == 2) {
                                     wbsTreeContract.setIsTypePrivatePid(dataPrivate.getPKeyId());
                                 }
+
+                                //判断元素表是否存在合同段,存在则不新增;不存在则新增
+                                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 = 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())
-                                );
+                                WbsTreeContract wbsTreeContract1 = treeContractListAllNodes.stream().filter(f ->
+                                        f.getContractId().equals(wbsTreeContract.getContractId())
+                                                && f.getProjectId().equals(wbsTreeContract.getProjectId())
+                                                && f.getWbsId().equals(wbsTreeContract.getWbsId())
+                                                && f.getStatus().equals(1)
+                                                && f.getType().equals(1)
+                                                && f.getId().equals(wbsTreeContract.getParentId())
+                                ).findAny().orElse(null);
+
                                 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)
-                                    );
+                                    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())
+                                                    && f.getProjectId().equals(wbsTreePrivate.getProjectId())
+                                                    && f.getStatus().equals(1)
+                                                    && f.getType().equals(1)
+                                    ).collect(Collectors.toList());
+
                                     if (wbsTreeContracts2.size() > 0) {
                                         //将表单同步到复制或新增的节点下
                                         for (WbsTreeContract treeContract : wbsTreeContracts2) {

+ 6 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
@@ -785,6 +786,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         //查询出当前wbs树下所有节点、表信息
                         List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectNodeAndTable(null, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
 
+                        //查询所有电签位置配置信息
+                        List<TextdictInfo> textDictInfosAll = textdictInfoMapper.selectList(Wrappers.<TextdictInfo>query().lambda());
+
                         for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
                             for (String id : saveIds) {
                                 if (Long.parseLong(id) == (wbsTreePrivate.getId())) {
@@ -795,7 +799,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                                     addListData.add(wbsTreePrivate);
 
                                     //根据元素表pKeyId,获取电签位置匹配信息、编辑默认信息
-                                    List<TextdictInfo> textDictInfos = textdictInfoMapper.selectList(Wrappers.<TextdictInfo>query().lambda().eq(TextdictInfo::getTabId, wbsTreePrivate.getPKeyId()));
+                                    List<TextdictInfo> textDictInfos = textDictInfosAll.stream().filter(f -> ObjectUtils.isNotEmpty(f.getTabId())
+                                            && f.getTabId().equals(String.valueOf(wbsTreePrivate.getPKeyId()))).collect(Collectors.toList());
                                     if (textDictInfos.size() > 0) {
                                         textDictInfoData.put(wbsTreePrivate.getPKeyId(), textDictInfos);
                                     }