Selaa lähdekoodia

新增节点bug

liuyc 2 vuotta sitten
vanhempi
commit
c1197aa7b2

+ 19 - 20
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -192,26 +192,26 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     public List<WbsTreePrivateVO> addNodeTree(String pKeyId) {
         WbsTreeContract parentNodeRoot = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, pKeyId).eq(WbsTreeContract::getStatus, 1));
         if (parentNodeRoot != null) {
-            //oldId不等于空,说明是复制节点,通过oldId,获取原始节点
+            //oldId不等于空,说明是复制节点,通过oldId,获取原始节点
             if (parentNodeRoot.getOldId() != null) {
                 parentNodeRoot = this.recursionFindResourceRootNode(parentNodeRoot);
             }
-            List<WbsTreeContract> allNodes = this.getChildNodes(parentNodeRoot);
+
+            //获取对应的项目树的节点
+            WbsTreePrivate wbsTreePrivateRoot = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId, parentNodeRoot.getId())
+                    .eq(WbsTreePrivate::getProjectId, parentNodeRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, parentNodeRoot.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
+
+            //获取项目树所有子节点
+            List<WbsTreePrivate> allNodes = this.getChildNodes(wbsTreePrivateRoot);
             if (allNodes == null) {
                 //如果是最底层节点,那么直接返回null,最底层节点无法新增子节点
                 return null;
             }
-            allNodes.add(parentNodeRoot);
+            allNodes.add(wbsTreePrivateRoot);
 
-            //获取所有合同段树原始节点对应的项目树节点
-            List<Long> nodeIds = allNodes.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
-
-            //重新赋值
-            List<WbsTreePrivate> projectTreeNodes = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getId, nodeIds)
-                    .eq(WbsTreePrivate::getProjectId, parentNodeRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, parentNodeRoot.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
             //构造树
-            List<WbsTreePrivateVO> resultAllNodes = BeanUtil.copyProperties(projectTreeNodes, WbsTreePrivateVO.class);
-            WbsTreePrivateVO parentNodeRootProject = BeanUtil.copyProperties(parentNodeRoot, WbsTreePrivateVO.class);
+            List<WbsTreePrivateVO> resultAllNodes = BeanUtil.copyProperties(allNodes, WbsTreePrivateVO.class);
+            WbsTreePrivateVO parentNodeRootProject = BeanUtil.copyProperties(wbsTreePrivateRoot, WbsTreePrivateVO.class);
             return buildWbsTreeByStreamChildNodeTreeProject(resultAllNodes, parentNodeRootProject);
         }
         return null;
@@ -239,24 +239,23 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         return obj;
     }
 
-    private List<WbsTreeContract> getChildNodes(WbsTreeContract obj) {
-        List<WbsTreeContract> wbsTreeContracts = Collections.singletonList(obj);
-        List<WbsTreeContract> result = new ArrayList<>();
-        this.recursionGetChildNodes(wbsTreeContracts, result, obj.getContractId());
+    private List<WbsTreePrivate> getChildNodes(WbsTreePrivate obj) {
+        List<WbsTreePrivate> wbsTreePrivates = Collections.singletonList(obj);
+        List<WbsTreePrivate> result = new ArrayList<>();
+        this.recursionGetChildNodes(wbsTreePrivates, result, obj.getProjectId(), obj.getWbsId());
         if (result.size() > 0) {
             return result;
         }
         return null;
     }
 
-    private void recursionGetChildNodes(List<WbsTreeContract> list, List<WbsTreeContract> result, String contractId) {
-        List<Long> ids = list.stream().map(WbsTreeContract::getId).collect(Collectors.toList());
+    private void recursionGetChildNodes(List<WbsTreePrivate> list, List<WbsTreePrivate> result, String projectId, String wbsId) {
+        List<Long> ids = list.stream().map(WbsTreePrivate::getId).collect(Collectors.toList());
         if (ids.size() > 0) {
-            //只查询原始节点
-            List<WbsTreeContract> query = jdbcTemplate.query("select * from m_wbs_tree_contract where type = 1 and old_id is null and parent_id in(" + org.apache.commons.lang.StringUtils.join(ids, ",") + ") and status = 1 and is_deleted = 0 and contract_id = " + contractId, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            List<WbsTreePrivate> query = jdbcTemplate.query("select * from m_wbs_tree_private where type = 1 and parent_id in(" + org.apache.commons.lang.StringUtils.join(ids, ",") + ") and status = 1 and is_deleted = 0 and project_id = " + projectId + " and wbs_id = " + wbsId, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
             if (query.size() > 0) {
                 result.addAll(query);
-                recursionGetChildNodes(query, result, contractId);
+                recursionGetChildNodes(query, result, projectId, wbsId);
             }
         }
     }