From dbff79eb73571a3b84b00ea13a65d0b98e7911a7 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期六, 07 三月 2026 13:24:07 +0800
Subject: [PATCH] refactor(plan): 优化删除多余节点逻辑

---
 src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java |   17 +++++++++--------
 1 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java b/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
index 6856bb6..0a32691 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
@@ -21,10 +21,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -72,11 +69,15 @@
         }
 
         // 鍒犻櫎澶氫綑鑺傜偣
-        List<PlanNode> needDeleteNode = planNodeMapper.selectList(new LambdaQueryWrapper<PlanNode>()
+        List<Long> existNodeIds = savePlanNodeVos.stream().map(SavePlanNodeVo::getId).filter(Objects::nonNull).collect(Collectors.toList());
+        LambdaQueryWrapper<PlanNode> planNodeLambdaQueryWrapper = new LambdaQueryWrapper<PlanNode>()
                 .select(PlanNode::getId)
-                .eq(PlanNode::getProjectManagementPlanId, planId)
-                .ne(PlanNode::getId, savePlanNodeVos.get(0).getId())
-                .notIn(PlanNode::getId, savePlanNodeVos.stream().map(SavePlanNodeVo::getId).collect(Collectors.toList())));
+                .eq(PlanNode::getProjectManagementPlanId, planId);
+        if(CollUtil.isNotEmpty(existNodeIds)){
+            planNodeLambdaQueryWrapper.notIn(PlanNode::getId, existNodeIds);
+        }
+        List<PlanNode> needDeleteNode = planNodeMapper.selectList(planNodeLambdaQueryWrapper);
+
         deletePlanNode(needDeleteNode.stream().map(PlanNode::getId).collect(Collectors.toList()));
 
         List<PlanNode> planNodes = BeanUtil.copyToList(savePlanNodeVos, PlanNode.class);

--
Gitblit v1.9.3