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 64a77096..96db8f04 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 @@ -1419,20 +1419,43 @@ public class XmTaskController { if(canOpxmTasks.size()==0){ return ResponseHelper.failed("same-parent","所有任务均属于【"+parentTask.getName()+"】,无需再变更"); } - if(canOpxmTasks.stream().filter(i->!i.getProjectId().equals(parentTask.getProjectId())).findAny().isPresent()){ - return ResponseHelper.failed("projectId-not-same", "所有任务或计划必须都是同一个项目之下"); + if(!"1".equals(parentTask.getPtype())){ + if(canOpxmTasks.stream().filter(i->!i.getProjectId().equals(parentTask.getProjectId())).findAny().isPresent()){ + return ResponseHelper.failed("projectId-not-same", "所有任务或计划必须都是同一个项目之下"); + } + }else { + if(canOpxmTasks.stream().filter(i->!i.getProductId().equals(parentTask.getProductId())).findAny().isPresent()){ + return ResponseHelper.failed("productId-not-same", "所有任务或计划必须都是同一个产品之下"); + } } + List pgroups =new ArrayList<>(); String projectId=parentTask.getProjectId(); - List pgroups=groupService.getProjectGroupVoList(projectId); - if(pgroups==null || pgroups.size()==0){ - tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); - m.put("tips", tips); - return m; + String productId=parentTask.getProductId(); + boolean isAdm=false; + if(!"1".equals(parentTask.getPtype())){ + isAdm=groupService.checkUserIsProductAdm(projectId,user.getUserid()); + pgroups=groupService.getProjectGroupVoList(projectId); + if( !isAdm && (pgroups==null || pgroups.size()==0)){ + tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); + m.put("tips", tips); + return m; + } + + }else { + isAdm=groupService.checkUserIsProjectAdm(projectId,user.getUserid()); + pgroups=groupService.getProductGroupVoList(productId); + if( !isAdm && ( pgroups==null || pgroups.size()==0 )){ + tips.setFailureMsg("该产品还未建立产品团队,请先进行团队成员维护"); + m.put("tips", tips); + return m; + } + } + Map allowTasksDbMap=new HashMap<>(); Map noAllowTasksDbMap=new HashMap<>(); - if(!groupService.checkUserIsProjectAdm(projectId,user.getUserid())){ + if(!isAdm){ for (XmTask task : canOpxmTasks) { boolean isHead=groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups,task.getCreateUserid(),user.getUserid()); if(!isHead){ @@ -1467,7 +1490,12 @@ public class XmTaskController { } if(allowTasksDbMap3.size()>0){ this.xmTaskService.batchChangeParent(allowTasksDbMap3.values().stream().collect(Collectors.toList()),parentTask); - this.xmRecordService.addXmTaskRecord(projectId,parentTask.getId(),"批量挂接子节点","成功将以下"+allowTasksDbMap3.size()+"个计划或任务及其所有子项挂接到【"+parentTask.getName()+"】上,【"+allowTasksDbMap3.values().stream().map(i->i.getName()).collect(Collectors.joining(","))+"】;"); + if("1".equals(parentTask.getPtype())){ + this.xmRecordService.addProductXmTaskRecord(productId,parentTask.getId(),"批量挂接子节点","成功将以下"+allowTasksDbMap3.size()+"个计划或任务及其所有子项挂接到【"+parentTask.getName()+"】上,【"+allowTasksDbMap3.values().stream().map(i->i.getName()).collect(Collectors.joining(","))+"】;"); + }else { + this.xmRecordService.addXmTaskRecord(projectId,parentTask.getId(),"批量挂接子节点","成功将以下"+allowTasksDbMap3.size()+"个计划或任务及其所有子项挂接到【"+parentTask.getName()+"】上,【"+allowTasksDbMap3.values().stream().map(i->i.getName()).collect(Collectors.joining(","))+"】;"); + } + } List msgs=new ArrayList<>(); diff --git a/xm-core/src/main/java/com/xm/core/service/XmRecordService.java b/xm-core/src/main/java/com/xm/core/service/XmRecordService.java index 26aa6ffa..7ca0b4b6 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmRecordService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmRecordService.java @@ -155,14 +155,30 @@ public class XmRecordService extends BaseService { @Async public void addXmTaskRecord(String projectId,String taskId,String action,String remarks) { XmRecord record=this.initXmRecord(); - record.setProjectId(projectId); + record.setProjectId(projectId); record.setBizId(taskId); record.setAction(action); record.setRemarks(remarks); record.setObjType("task"); this.insert(record); } - + /** + * 针对项目下的任务的所有操作用此方法 + * @param productId 产品编号 + * @param taskId 任务编号 + * @param action 操作如 新增任务,修改任务信息,修改任务进度 等 + * @param remarks 人性化语言描述 + */ + @Async + public void addProductXmTaskRecord(String productId,String taskId,String action,String remarks) { + XmRecord record=this.initXmRecord(); + record.setProductId(productId); + record.setBizId(taskId); + record.setAction(action); + record.setRemarks(remarks); + record.setObjType("task"); + this.insert(record); + } /** * 针对项目下的任务的所有操作用此方法 * @param projectId 项目编号