From 9a237fa852177f36a920b3f86ce15fc9769134aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Wed, 9 Mar 2022 05:06:39 +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 | 54 +++++-------------- .../com/xm/core/service/XmTaskService.java | 25 +++++++++ .../mapper/xm/core/dao/XmTaskMapper.xml | 10 ++++ 3 files changed, 48 insertions(+), 41 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 058b2c21..8db6f2fe 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 @@ -130,7 +130,6 @@ public class XmTaskController { String taskOut= (String) xmTask.get("taskOut"); if(!"1".equals(taskOut)){ String projectId= (String) xmTask.get("projectId"); - String projectPhaseId= (String) xmTask.get("projectPhaseId"); String myExecuserStatus= (String) xmTask.get("myExecuserStatus"); String isMy= (String) xmTask.get("isMy"); String myFocus= (String) xmTask.get("myFocus"); @@ -141,7 +140,7 @@ public class XmTaskController { String iterationId= (String) xmTask.get("iterationId"); User user = LoginUtils.getCurrentUserInfo(); xmTask.put("userid",user.getUserid()); - if( !(StringUtils.hasText(projectId) || StringUtils.hasText(projectPhaseId) + if( !(StringUtils.hasText(projectId) || StringUtils.hasText(myExecuserStatus)|| StringUtils.hasText(isMy)|| StringUtils.hasText(myFocus)|| StringUtils.hasText(createUserid) || StringUtils.hasText(executorUserid) || StringUtils.hasText(menuId) || StringUtils.hasText(productId)|| StringUtils.hasText(iterationId)) ){ @@ -329,10 +328,11 @@ public class XmTaskController { if(!StringUtils.hasText(xmTaskVo.getProjectId())){ return ResponseHelper.failed("projectId-0","项目编号不能为空"); } - + /** if(!StringUtils.hasText(xmTaskVo.getProjectPhaseId())){ return ResponseHelper.failed("ProjectPhaseId-0","项目计划编号不能为空"); } + **/ User user=LoginUtils.getCurrentUserInfo(); xmTaskVo.setCreateUserid(user.getUserid()); xmTaskVo.setCreateUsername(user.getUsername()); @@ -352,16 +352,15 @@ public class XmTaskController { xmTaskVo.setRate(BigDecimal.ZERO); if( !StringUtils.hasText(xmTaskVo.getMilestone()) ){ xmTaskVo.setMilestone("0"); - } - String projectPhaseId=xmTaskVo.getProjectPhaseId(); + } if(xmTaskVo.getBudgetCost()==null){ xmTaskVo.setBudgetCost(BigDecimal.ZERO); } this.xmTaskService.parentIdPathsCalcBeforeSave(xmTaskVo); if(xmTaskVo.getBudgetCost()!=null && xmTaskVo.getBudgetCost().compareTo(BigDecimal.ZERO)>0){ if(xmTaskVo.getLvl()<=1){ - tips=xmTaskService.judgetPhaseBudget(projectPhaseId, xmTaskVo.getBudgetCost(),null,null,null,null); - }else{ + xmTaskService.judgetProjectBudget(xmTaskVo.getProjectId(),xmTaskVo.getBudgetCost(),null); + }else{ tips=xmTaskService.judgetTaskBudget(xmTaskVo.getParentTaskid(), xmTaskVo.getBudgetCost(),null,null,null,null); } } @@ -434,9 +433,8 @@ public class XmTaskController { String taskOut= (String) xmTask.get("taskOut"); if(!"1".equals(taskOut)){ String projectId= (String) xmTask.get("projectId"); - String projectPhaseId= (String) xmTask.get("projectPhaseId"); String userid= (String) xmTask.get("userid"); - if( !(StringUtils.hasText(projectId) || StringUtils.hasText(projectPhaseId)|| StringUtils.hasText(userid) ) ){ + if( !(StringUtils.hasText(projectId) || StringUtils.hasText(userid) ) ){ User user = LoginUtils.getCurrentUserInfo(); xmTask.put("cbranchId",user.getBranchId()); } @@ -623,7 +621,6 @@ public class XmTaskController { } } - String projectPhaseId=xmTaskDb.getProjectPhaseId(); this.xmTaskService.parentIdPathsCalcBeforeSave(xmTaskVo); if(xmTaskVo.getBudgetCost()==null)xmTaskVo.setBudgetCost(BigDecimal.ZERO); if(xmTaskDb.getBudgetCost()==null)xmTaskDb.setBudgetCost(BigDecimal.ZERO); @@ -631,7 +628,7 @@ public class XmTaskController { excludeIds.add(xmTaskDb.getId()); if( xmTaskDb.getBudgetCost().compareTo(xmTaskVo.getBudgetCost())!=0){ if(xmTaskVo.getLvl()<=1){ - tips=xmTaskService.judgetPhaseBudget(projectPhaseId, xmTaskVo.getBudgetCost(),null,null,null,excludeIds); + tips=xmTaskService.judgetProjectBudget(xmTaskDb.getProjectId(), xmTaskVo.getBudgetCost(),excludeIds); }else{ tips=xmTaskService.judgetTaskBudget(xmTaskDb.getParentTaskid(), xmTaskVo.getBudgetCost(),null,null,null,excludeIds); } @@ -787,18 +784,12 @@ public class XmTaskController { return m; } XmTask xmTask=xmTasks.get(0); - String projectPhaseId=xmTask.getProjectPhaseId(); String projectId=xmTask.getProjectId(); if( !StringUtils.hasText(projectId) ){ tips.setFailureMsg("项目编号不能为空"); m.put("tips", tips); return m; } - if( !StringUtils.hasText(projectPhaseId) ){ - tips.setFailureMsg("计划编号不能为空"); - m.put("tips", tips); - return m; - } List pgroups=groupService.getProjectGroupVoList(projectId); if(pgroups==null || pgroups.size()==0){ @@ -813,11 +804,6 @@ public class XmTaskController { return m; } for (XmTask g : xmTasks) { - if(!projectPhaseId.equals(g.getProjectPhaseId())){ - tips.setFailureMsg("只能在同一个计划下批量导入任务"); - m.put("tips", tips); - return m; - } if(!projectId.equals(g.getProjectId())){ tips.setFailureMsg("只能在同一个项目下批量导入任务"); m.put("tips", tips); @@ -841,7 +827,7 @@ public class XmTaskController { totalTaskBudgetCost=totalTaskBudgetCost.add(task.getBudgetCost()); } if(totalTaskBudgetCost.compareTo(BigDecimal.ZERO)>0){ - tips=xmTaskService.judgetPhaseBudget(projectPhaseId,totalTaskBudgetCost,null,null,null,tasksLvl1.stream().map(i->i.getId()).collect(Collectors.toList())); + tips=xmTaskService.judgetProjectBudget(projectId,totalTaskBudgetCost,tasksLvl1.stream().map(i->i.getId()).collect(Collectors.toList())); if(!tips.isOk()){ tips.setFailureMsg(tips.getMsg()+"相关任务【"+tasksLvl1.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】"); return ResponseHelper.failed(tips); @@ -890,7 +876,8 @@ public class XmTaskController { return m; } - + /** + * @ApiOperation( value = "批量将任务与一个项目计划关联",notes="") @ApiResponses({ @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") @@ -989,6 +976,7 @@ public class XmTaskController { m.put("tips", tips); return m; } + **/ @ApiOperation( value = "批量将多个任务与一个用户需求关联",notes="") @ApiResponses({ @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") @@ -1250,17 +1238,11 @@ public class XmTaskController { } XmTask xmTask=xmTasks.get(0); String projectId=xmTask.getProjectId(); - String projectPhaseId=xmTask.getProjectPhaseId(); if( !StringUtils.hasText(projectId) ){ tips.setFailureMsg("项目编号不能为空"); m.put("tips", tips); return m; } - if( !StringUtils.hasText(projectPhaseId) ){ - tips.setFailureMsg("计划编号不能为空"); - m.put("tips", tips); - return m; - } List pgroups=groupService.getProjectGroupVoList(projectId); if(pgroups==null || pgroups.size()==0){ tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); @@ -1281,11 +1263,6 @@ public class XmTaskController { m.put("tips", tips); return m; } - if(!projectPhaseId.equals(task.getProjectPhaseId())){ - tips.setFailureMsg("只能在同一个计划下批量修改任务"); - m.put("tips", tips); - return m; - } if(task.getBudgetCost()==null){ task.setBudgetCost(BigDecimal.ZERO); } @@ -1309,11 +1286,6 @@ public class XmTaskController { tips.setFailureMsg("所有任务必须同属于一个项目"); m.put("tips", tips); return m; - } - if(!projectPhaseId.equals(task.getProjectPhaseId())){ - tips.setFailureMsg("只能在同一个计划下批量修改任务"); - m.put("tips", tips); - return m; } boolean isHead=groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups,task.getCreateUserid(),user.getUserid()); if(!isHead){ @@ -1333,7 +1305,7 @@ public class XmTaskController { totalTaskBudgetCost=totalTaskBudgetCost.add(task.getBudgetCost()); } if(totalTaskBudgetCost.compareTo(BigDecimal.ZERO)>0){ - tips=xmTaskService.judgetPhaseBudget(projectPhaseId,totalTaskBudgetCost,null,null,null,tasksLvl1.stream().map(i->i.getId()).collect(Collectors.toList())); + tips=xmTaskService.judgetProjectBudget(projectId,totalTaskBudgetCost,tasksLvl1.stream().map(i->i.getId()).collect(Collectors.toList())); if(!tips.isOk()){ tips.setFailureMsg(tips.getMsg()+"相关任务【"+tasksLvl1.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】"); return ResponseHelper.failed(tips); 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 f8214acd..1f0063f7 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 @@ -671,5 +671,30 @@ public class XmTaskService extends BaseService { public void batchRelTasksWithPhase(BatchRelTasksWithPhase tasksPhase) { super.update("batchRelTasksWithPhase",tasksPhase); } + + public Map calcProjectAndTaskBudget(String projectId,List excludeTaskIds){ + Map map=new HashMap<>(); + if(excludeTaskIds!=null){ + map.put("excludeTaskIds",excludeTaskIds); + } + map.put("projectId",projectId); + return super.selectOne("calcProjectAndTaskBudget",map); + } + public Tips judgetProjectBudget(String projectId, BigDecimal addBudgetCost, List excludeTaskIds) { + Tips tips=new Tips("成功"); + Map data=this.calcProjectAndTaskBudget(projectId,excludeTaskIds); + if(data==null || data.isEmpty()){ + tips.setFailureMsg("项目不存在"); + return tips; + } + BigDecimal planTotalCost=NumberUtil.getBigDecimal(map().get("planTotalCost"),BigDecimal.ZERO); + BigDecimal taskBudgetCost=NumberUtil.getBigDecimal(map().get("budgetCost"),BigDecimal.ZERO); + BigDecimal chaochu=taskBudgetCost.add(addBudgetCost).subtract(planTotalCost); + if(chaochu.compareTo(BigDecimal.ZERO)>0){ + tips.setFailureMsg("超出项目总预算"+chaochu+"元"); + return tips; + } + return tips; + } } diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml index 10730fa3..d0b39698 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml @@ -302,6 +302,16 @@ and res.ntype='1' + + +