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 b9878069..235efc1f 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 @@ -327,16 +327,7 @@ public class XmTaskController { if(ids==null || ids.size()==0){ ResponseHelper.failed("ids-0","ids不能为空"); } - XmTask xmTask= BaseUtils.fromMap(xmTaskMap,XmTask.class); - List xmTasksDb=xmTaskService.selectListByIds(ids); - if(xmTasksDb==null ||xmTasksDb.size()==0){ - ResponseHelper.failed("tasks-0","该任务已不存在"); - } - List can=new ArrayList<>(); - List no=new ArrayList<>(); - if(can.size()<=0){ - //return ResponseHelper.failed("noqx","您无权修改选中的任务。"); - } + Set fields=new HashSet<>(); fields.add("childrenCnt"); fields.add("ntype"); @@ -349,22 +340,55 @@ public class XmTaskController { Set fieldKey=xmTaskMap.keySet().stream().filter(i-> fieldsMap.containsKey(i)).collect(Collectors.toSet()); fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTaskMap.get(i) )).collect(Collectors.toSet()); - if(fieldKey.size()>0){ - fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTaskMap.get(i) )).collect(Collectors.toSet()); - - - if(fieldKey.contains("budgetWorkload")){//如果调整了预估工时,需要重新计算进度数据 - if(xmTasksDb.size()>0){ - this.xmTaskService.batchUpdateBudgetWorkloadAndRate(xmTasksDb.stream().map(i->i.getId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()),NumberUtil.getBigDecimal(xmTaskMap.get("budgetWorkload"))); - this.xmTaskService.batchSumParents(xmTasksDb); + if(fieldKey.size()<=0) { + return ResponseHelper.failed("fieldKey-0","没有需要更新的字段"); + } + XmTask xmTask= BaseUtils.fromMap(xmTaskMap,XmTask.class); + List xmTasksDb=xmTaskService.selectListByIds(ids); + if(xmTasksDb==null ||xmTasksDb.size()==0){ + return ResponseHelper.failed("tasks-0","该任务已不存在"); + } + List can=new ArrayList<>(); + List no=new ArrayList<>(); + User user = LoginUtils.getCurrentUserInfo(); + for (XmTask xmTaskDb : xmTasksDb) { + tips=groupService.checkIsAdmOrTeamHeadOrAssByPtype(user,user.getUserid(),xmTaskDb.getPtype(),xmTaskDb.getProductId(),xmTaskDb.getProjectId()); + if(!tips.isOk()){ + if(user.getUserid().equals(xmTaskDb.getExecutorUserid())||user.getUserid().equals(xmTaskDb.getCreateUserid())){ + can.add(xmTaskDb); + }else{ + no.add(xmTaskDb); } }else{ - xmTaskService.editSomeFields(xmTaskMap); + can.add(xmTaskDb); } - xmRecordService.addXmTaskRecord(xmTask.getProjectId(),xmTask.getId(),"修改项目任务","修改任务"+xmTask.getMenuName(),"", JSON.toJSONString(xmTask)); - } + if(can.size()>0){ + xmTaskMap.put("ids",can.stream().map(i->i.getId()).collect(Collectors.toList())); + + if(fieldKey.contains("budgetWorkload")){//如果调整了预估工时,需要重新计算进度数据 + if(xmTasksDb.size()>0){ + this.xmTaskService.batchUpdateBudgetWorkloadAndRate(xmTasksDb.stream().map(i->i.getId()).collect(Collectors.toSet()).stream().collect(Collectors.toList()),NumberUtil.getBigDecimal(xmTaskMap.get("budgetWorkload"))); + this.xmTaskService.batchSumParents(xmTasksDb); + } + }else{ + xmTaskService.editSomeFields(xmTaskMap); + } + xmRecordService.addXmTaskRecord(xmTask.getProjectId(),xmTask.getId(),"修改项目任务","修改任务"+xmTask.getMenuName(),"", JSON.toJSONString(xmTask)); + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + msgs.add(String.format("成功更新以下%s个任务",can.size())); + } + if(no.size()>0){ + msgs.add(String.format("以下%s个任务无权限更新",no.size())); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } //m.put("data",xmMenu); }catch (BizException e) { tips=e.getTips(); diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java index e9d52249..d1f11fae 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java @@ -450,7 +450,7 @@ public class XmTaskWorkloadController { List canChanges=new ArrayList<>(); List sstatusNot01=new ArrayList<>(); for (XmTaskWorkload xmTaskWorkload : xmTaskWorkloadsDb) { - if(!"1".equals(xmTaskWorkload.getSstatus()) && !"0".equals(xmTaskWorkload.getSstatus())){ + if(!"1".equals(xmTaskWorkload.getSstatus()) && !"0".equals(xmTaskWorkload.getSstatus()) &&StringUtils.hasText(xmTaskWorkload.getSstatus())){ sstatusNot01.add(xmTaskWorkload); }else{ canChanges.add(xmTaskWorkload); diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml index 5dfaba42..aae15845 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskWorkloadMapper.xml @@ -66,7 +66,7 @@