diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java index c1e747a7..5dfab867 100644 --- a/xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java @@ -246,9 +246,13 @@ public class XmProjectPhaseController { xmProjectPhaseService.calcPhaseBudgetAmount(xmProjectPhase); xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhase); if(xmProjectPhase.getLvl()==1){ - tips=xmProjectPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); + if("1".equals(xmProject.getBudgetCtrl())){ + tips=xmProjectPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); + } }else { - tips=xmProjectPhaseService.judgetPhaseBudget(xmProjectPhase.getParentPhaseId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); + if("1".equals(xmProject.getPhaseBudgetCtrl())) { + tips = xmProjectPhaseService.judgetPhaseBudget(xmProjectPhase.getParentPhaseId(), xmProjectPhase.getPhaseBudgetAt(), null, null, null, excludePhaseIds); + } } if(!tips.isOk()){ return ResponseHelper.failed(tips); @@ -284,8 +288,15 @@ public class XmProjectPhaseController { Map m = new HashMap<>(); Tips tips=new Tips("成功删除一条数据"); try{ - XmProject xmProject=this.xmProjectService.getProjectFromCache(xmProjectPhase.getProjectId()); - List groupVoList=groupService.getProjectGroupVoList(xmProjectPhase.getProjectId()); + if(!StringUtils.hasText(xmProjectPhase.getId())){ + return ResponseHelper.failed("id-0","请上送计划编号"); + } + XmProjectPhase xmProjectPhaseDb=this.xmProjectPhaseService.selectOneObject(xmProjectPhase); + if(xmProjectPhaseDb==null){ + return ResponseHelper.failed("data-0","该计划已不存在"); + } + XmProject xmProject=this.xmProjectService.getProjectFromCache(xmProjectPhaseDb.getProjectId()); + List groupVoList=groupService.getProjectGroupVoList(xmProjectPhaseDb.getProjectId()); User user = LoginUtils.getCurrentUserInfo(); boolean meIsPm=groupService.checkUserIsProjectAdm(xmProject,user.getUserid()); boolean meIsTeamHead=groupService.checkUserIsOtherUserTeamHead(groupVoList,user.getUserid(),user.getUserid()); @@ -294,9 +305,9 @@ public class XmProjectPhaseController { m.put("tips", tips); return m; } - boolean meIsHisTeamHead=groupService.checkUserIsOtherUserTeamHead(groupVoList,xmProjectPhase.getMngUserid(),user.getUserid()); + boolean meIsHisTeamHead=groupService.checkUserIsOtherUserTeamHead(groupVoList,xmProjectPhaseDb.getMngUserid(),user.getUserid()); if( !meIsPm && !meIsHisTeamHead ){ - tips.setFailureMsg("您不是"+xmProjectPhase.getMngUsername()+"的组长,不允许删除其负责的计划"); + tips.setFailureMsg("您不是"+xmProjectPhaseDb.getMngUsername()+"的组长,不允许删除其负责的计划"); m.put("tips", tips); return m; } @@ -305,7 +316,7 @@ public class XmProjectPhaseController { if(exists>0) { tips.setFailureMsg("存在"+exists+"条任务,不允许删除"); }else { - XmProjectPhase xmProjectPhaseDb=this.xmProjectPhaseService.selectOneObject(xmProjectPhase); + if(xmProjectPhaseDb.getChildrenCnt()!=null && xmProjectPhaseDb.getChildrenCnt()>0){ tips.setFailureMsg("存在"+xmProjectPhaseDb.getChildrenCnt()+"条子计划,不允许删除"); } else { @@ -362,12 +373,19 @@ public class XmProjectPhaseController { xmProjectPhaseService.calcPhaseBudgetAmount(xmProjectPhase); List excludePhaseIds=new ArrayList<>(); excludePhaseIds.add(xmProjectPhase.getId()); - if("1".equals(xmProject.getBudgetCtrl())){ + XmProjectPhase xmProjectPhaseDb=this.xmProjectPhaseService.selectOneObject(xmProjectPhase); + //如果修改了预算数据,才进行预算判断 + if(xmProjectPhaseDb.getPhaseBudgetAt()!=null && xmProjectPhaseDb.getPhaseBudgetAt().compareTo(xmProjectPhase.getPhaseBudgetAt())!=0){ if(xmProjectPhase.getLvl()==1){ - tips=this.xmProjectPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); + if("1".equals(xmProject.getBudgetCtrl())){ + tips=this.xmProjectPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); + } }else{ - tips=this.xmProjectPhaseService.judgetPhaseBudget(xmProjectPhase.getParentPhaseId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); - } + if("1".equals(xmProject.getPhaseBudgetCtrl())) { + tips = this.xmProjectPhaseService.judgetPhaseBudget(xmProjectPhase.getParentPhaseId(), xmProjectPhase.getPhaseBudgetAt(), null, null, null, excludePhaseIds); + } + } + } if(!tips.isOk()) { return ResponseHelper.failed(tips); @@ -518,6 +536,7 @@ public class XmProjectPhaseController { g.setMngUserid(user.getUserid()); g.setMngUsername(user.getUsername()); g=xmProjectPhaseService.autoCalcWorkload(g); + xmProjectPhaseService.calcPhaseBudgetAmount(g); } xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); @@ -541,26 +560,28 @@ public class XmProjectPhaseController { BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; List excludeIds=children.stream().map(i->i.getId()).collect(Collectors.toList()); for (XmProjectPhase child : children) { - xmProjectPhaseService.calcPhaseBudgetAmount(child); phaseTotalBudgetAt=phaseTotalBudgetAt.add(child.getPhaseBudgetAt()); } - Tips tips2=xmProjectPhaseService.judgetPhaseBudget(parentId,phaseTotalBudgetAt,null,null,null,excludeIds); - if(!tips2.isOk()){ - tips2.setFailureMsg(tips2.getMsg()+" 相关计划为【"+children.stream().map(i->i.getPhaseName()).collect(Collectors.joining(","))+"】"); - return ResponseHelper.failed(tips2); + if("1".equals(xmProject.getPhaseBudgetCtrl())){ + Tips tips2=xmProjectPhaseService.judgetPhaseBudget(parentId,phaseTotalBudgetAt,null,null,null,excludeIds); + if(!tips2.isOk()){ + tips2.setFailureMsg(tips2.getMsg()+" 相关计划为【"+children.stream().map(i->i.getPhaseName()).collect(Collectors.joining(","))+"】"); + return ResponseHelper.failed(tips2); + } } } }else{//直接导入到项目之下,需要判断当前一级预算是否超出项目总预算 BigDecimal phaseTotalBudgetWorkload=BigDecimal.ZERO; BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; for (XmProjectPhase l1Phase : l1Phases) { - xmProjectPhaseService.calcPhaseBudgetAmount(l1Phase); phaseTotalBudgetWorkload=phaseTotalBudgetWorkload.add(l1Phase.getPhaseBudgetWorkload()); phaseTotalBudgetAt=phaseTotalBudgetAt.add(l1Phase.getPhaseBudgetAt()); } - tips=xmProjectPhaseService.judgetProjectBudget(projectId,phaseTotalBudgetAt,null,null,null,l1Phases.stream().map(i->i.getId()).collect(Collectors.toList())); - if(!tips.isOk()){ - return ResponseHelper.failed(tips); + if("1".equals(xmProject.getBudgetCtrl())) { + tips = xmProjectPhaseService.judgetProjectBudget(projectId, phaseTotalBudgetAt, null, null, null, l1Phases.stream().map(i -> i.getId()).collect(Collectors.toList())); + if (!tips.isOk()) { + return ResponseHelper.failed(tips); + } } } if(tips.isOk()) { @@ -620,6 +641,7 @@ public class XmProjectPhaseController { for (XmProjectPhase g : xmProjectPhases) { projectId=g.getProjectId(); g=xmProjectPhaseService.autoCalcWorkload(g); + xmProjectPhaseService.calcPhaseBudgetAmount(g); } List l1Phases=xmProjectPhases.stream().filter(i->1==i.getLvl()).collect(Collectors.toList()); if(l1Phases==null ||l1Phases.size()==0){//如果是导入到某个计划之下, @@ -641,26 +663,28 @@ public class XmProjectPhaseController { BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; List excludeIds=children.stream().map(i->i.getId()).collect(Collectors.toList()); for (XmProjectPhase child : children) { - xmProjectPhaseService.calcPhaseBudgetAmount(child); phaseTotalBudgetAt=phaseTotalBudgetAt.add(child.getPhaseBudgetAt()); } - Tips tips2=xmProjectPhaseService.judgetPhaseBudget(parentId,phaseTotalBudgetAt,null,null,null,excludeIds); - if(!tips2.isOk()){ - tips2.setFailureMsg(tips2.getMsg()+" 相关计划为【"+children.stream().map(i->i.getPhaseName()).collect(Collectors.joining(","))+"】"); - return ResponseHelper.failed(tips2); + if("1".equals(xmProject.getPhaseBudgetCtrl())) { + Tips tips2 = xmProjectPhaseService.judgetPhaseBudget(parentId, phaseTotalBudgetAt, null, null, null, excludeIds); + if (!tips2.isOk()) { + tips2.setFailureMsg(tips2.getMsg() + " 相关计划为【" + children.stream().map(i -> i.getPhaseName()).collect(Collectors.joining(",")) + "】"); + return ResponseHelper.failed(tips2); + } } } }else{//直接导入到项目之下,需要判断当前一级预算是否超出项目总预算 BigDecimal phaseTotalBudgetWorkload=BigDecimal.ZERO; BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; for (XmProjectPhase l1Phase : l1Phases) { - xmProjectPhaseService.calcPhaseBudgetAmount(l1Phase); phaseTotalBudgetWorkload=phaseTotalBudgetWorkload.add(l1Phase.getPhaseBudgetWorkload()); phaseTotalBudgetAt=phaseTotalBudgetAt.add(l1Phase.getPhaseBudgetAt()); } - tips=xmProjectPhaseService.judgetProjectBudget(projectId,phaseTotalBudgetAt,null,null,null,l1Phases.stream().map(i->i.getId()).collect(Collectors.toList())); - if(!tips.isOk()){ - return ResponseHelper.failed(tips); + if("1".equals(xmProject.getBudgetCtrl())){ + tips=xmProjectPhaseService.judgetProjectBudget(projectId,phaseTotalBudgetAt,null,null,null,l1Phases.stream().map(i->i.getId()).collect(Collectors.toList())); + if(!tips.isOk()){ + return ResponseHelper.failed(tips); + } } }