From a8ba01cf0078e518678da0af91281b81d2347c38 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 01:22:04 +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 --- .../src/main/java/com/xm/core/PubTool.java | 7 ++ .../com/xm/core/ctrl/XmTaskController.java | 93 +++++++++++++------ .../com/xm/core/service/XmTaskService.java | 21 +++-- 3 files changed, 87 insertions(+), 34 deletions(-) diff --git a/xm-core/src/main/java/com/xm/core/PubTool.java b/xm-core/src/main/java/com/xm/core/PubTool.java index 6bb986ad..78c034f1 100644 --- a/xm-core/src/main/java/com/xm/core/PubTool.java +++ b/xm-core/src/main/java/com/xm/core/PubTool.java @@ -1,5 +1,10 @@ package com.xm.core; +import org.springframework.util.StringUtils; + +import java.util.Arrays; +import java.util.Set; + public class PubTool { public static String getPidPaths(String pidPahts, String trimId){ @@ -10,4 +15,6 @@ public class PubTool { return pidPahts; } } + + } 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 1995613d..bda87495 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 @@ -481,8 +481,17 @@ public class XmTaskController { m.put("tips", tips); return m; } + if(!xmTask.getProjectId().equals(xmTaskDb.getProjectId())){ + return ResponseHelper.failed("projectId-err","请上送正确的项目编号[projectId]"); + } + if(xmTaskDb.getChildrenCnt()!=null && xmTaskDb.getChildrenCnt()>0){ + return ResponseHelper.failed("childrenCnt-no-0","有子任务不能删除"); + } + if(xmTaskService.checkExistsExecuser(xmTaskDb)){ + return ResponseHelper.failed("existsExecuser","有待验收、待结算的执行人,不能删除"); + }; xmTaskService.deleteTask(xmTask); - xmTaskService.sumParents(xmTaskDb); + xmRecordService.addXmTaskRecord(xmTaskDb.getProjectId(), xmTaskDb.getId(), "项目-任务-删除任务", "删除任务"+xmTaskDb.getName()); }catch (BizException e) { tips=e.getTips(); @@ -981,43 +990,75 @@ public class XmTaskController { m.put("tips", tips); return m; } - List allowTasks=new ArrayList<>(); - List noAllowTasks=new ArrayList<>(); - Map xmTaskMap=this.xmTaskService.selectTasksMapByTasks(xmTasks); - for (XmTask task : xmTaskMap.values()) { - if( !projectId.equals(task.getProjectId()) ){ + List allowDelNodes=new ArrayList<>(); + List noAllowNodes=new ArrayList<>(); + Map delNodesDbMap=this.xmTaskService.selectTasksMapByTasks(xmTasks); + for (XmTask node : delNodesDbMap.values()) { + if( !projectId.equals(node.getProjectId()) ){ tips.setFailureMsg("所有任务必须同属于一个项目"); m.put("tips", tips); return m; } - boolean isHead=groupService.checkUserIsOtherUserTeamHead(pgroups,task.getCreateUserid(),user.getUserid()); + boolean isHead=groupService.checkUserIsOtherUserTeamHead(pgroups,node.getCreateUserid(),user.getUserid()); + if(!isHead){ - noAllowTasks.add(task); + noAllowNodes.add(node); }else { - allowTasks.add(task); + allowDelNodes.add(node); } } - List noDelList=new ArrayList<>(); - List delTasks=new ArrayList<>(); - allowTasks.forEach(t->{ - try { - delTasks.add(t); - } catch (BizException e) { - noDelList.add(t.getName()); - } - }); - if(delTasks.size()>0){ - this.xmTaskService.doBatchDelete(delTasks); + if(allowDelNodes.size()==0){ + return ResponseHelper.failed("noqx-del","组长或者管理人员可以删除管辖范围的任务,您无权限删除所选任务"); } - if(noDelList.size()>0 && allowTasks.size()>noDelList.size()) { - tips.setOkMsg("成功删除"+(allowTasks.size()-noDelList.size())+"条任务,其中以下任务可能存在未结算的执行人或者存在子任务,不允许删除"+StringUtils.arrayToCommaDelimitedString(noDelList.toArray())); - }if(noDelList.size()>0 && allowTasks.size()==noDelList.size()) { - tips.setFailureMsg("无法删除,所选任务都存在未结算执行人或者子任务"); - }else { - tips.setOkMsg("成功删除"+allowTasks.size()+"条任务"); + List existsExecuserList=new ArrayList<>(); + List noExecuserList=new ArrayList<>(); + if(allowDelNodes.size()>0){ + for (XmTask node : allowDelNodes) { + if(this.xmTaskService.checkExistsExecuser(node)){ + existsExecuserList.add(node); + }else{ + noExecuserList.add(node); + } + } } + List hadChildNodes=new ArrayList<>(); + 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()){ + canDelNodes.add(node); + }else{ + hadChildNodes.add(node); + } + } + } + if(canDelNodes.size()>0){ + this.xmTaskService.doBatchDelete(canDelNodes); + } + List msgs=new ArrayList<>(); + msgs.add("删除了"+canDelNodes.size()+"个任务。"); + if(hadChildNodes.size()>0){ + msgs.add("以下"+hadChildNodes.size()+"个任务,【"+hadChildNodes.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】存在未删除的子任务,不能删除。"); + } + if(noAllowNodes.size()>0){ + msgs.add("以下"+noAllowNodes.size()+"个任务,【"+noAllowNodes.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】您无权删除。"); + } + if(existsExecuserList.size()>0){ + msgs.add("以下"+existsExecuserList.size()+"个任务,【"+existsExecuserList.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】存在待结算的执行人,不能删除。"); + } + if(canDelNodes.size()==0){ + tips.setFailureMsg(msgs.stream().collect(Collectors.joining("\n"))); + }else{ + tips.setOkMsg(msgs.stream().collect(Collectors.joining("\n"))); + } + }catch (BizException e) { tips=e.getTips(); logger.error("",e); 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 386f9675..27ff83a9 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 @@ -189,7 +189,6 @@ public class XmTaskService extends BaseService { public boolean checkExistsChildren(String taskId) { Long i=this.selectOne("checkExistsChildren", taskId); return i>0; - } /** * 有执行人,有子任务都不允许删除 @@ -197,17 +196,11 @@ public class XmTaskService extends BaseService { */ @Transactional public void deleteTask(XmTask xmTask) { - if(checkExistsChildren(xmTask.getId())) { - throw new BizException("有子任务,不允许删除"); - } - if(!"1".equals(xmTask.getNtype()) && checkExistsExecuser(xmTask.getId())>0) { - throw new BizException("有未结算的执行人,不允许删除该任务"); - } this.deleteByPk(xmTask); if(StringUtils.hasText(xmTask.getParentTaskid())){ this.updateTaskChildrenCntByTaskId(xmTask.getParentTaskid()); } - xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-删除任务", "删除任务"+xmTask.getName()); + this.sumParents(xmTask); } private Long checkExistsExecuser(String taskId) { @@ -598,5 +591,17 @@ public class XmTaskService extends BaseService { } } + + + public boolean checkExistsExecuser(XmTask node) { + String exec=node.getExeUserids(); + if(!StringUtils.hasText(exec)){ + return false; + } + if(exec.indexOf("(1)")>0 || exec.indexOf("(2)")>0|| exec.indexOf("(3)")>0|| exec.indexOf("(4)")>0|| exec.indexOf("(5)")>0){ + return false; + } + return true; + } }