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()