From 1a4592a541d5042d0cb5d5b03832c3352b46e355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Tue, 22 Feb 2022 03:25:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8A=82=E7=82=B9=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E3=80=81=E6=A0=87=E7=AD=BE=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xm/core/ctrl/XmTaskController.java | 8 ++---- .../com/xm/core/service/XmTaskService.java | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java index 7bc62a82..c7b23129 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java @@ -1023,12 +1023,8 @@ public class XmTaskController { List canDelNodes=new ArrayList<>(); if(noExecuserList.size()>0){ for (XmTask node : noExecuserList) { - if(node.getChildrenCnt()==null || node.getChildrenCnt()<=0){ - canDelNodes.add(node); - continue; - } - long childCount=noExecuserList.stream().filter(i->node.getId().equals(i.getParentTaskid())).count(); - if(childCount>=node.getChildrenCnt()){ + boolean canDel=this.xmTaskService.checkCanDelAllChild(node,noExecuserList); + if(canDel){ canDelNodes.add(node); }else{ hadChildNodes.add(node); diff --git a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java index f3c1cd83..b45fdec9 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmTaskService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmTaskService.java @@ -596,5 +596,31 @@ public class XmTaskService extends BaseService { } return true; } + + /** + * 检查是否能删除干净所有儿子孙子节点。 + * @param delNode 当前删除节点 + * @param delNodes 本批量需要删除的全部节点 + * @return + */ + public boolean checkCanDelAllChild(XmTask delNode, List delNodes) { + if(delNode==null){ + return true; + } + if(delNode.getChildrenCnt()==null||delNode.getChildrenCnt()<=0){ + return true; + } + List childList=delNodes.stream().filter(i->delNode.getId().equals(i.getParentTaskid())).collect(Collectors.toList()); + if(childList==null||childList.size()