From 6e63e1b4e82db3495586b035f884f8c23013a48b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sun, 27 Feb 2022 02:46:13 +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 --- .../core/ctrl/XmProjectPhaseController.java | 6 ++++ .../core/service/XmProjectPhaseService.java | 32 ++++++++++++++----- .../com/xm/core/service/XmTaskService.java | 4 +-- .../xm/core/dao/XmProjectPhaseMapper.xml | 2 +- 4 files changed, 33 insertions(+), 11 deletions(-) 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 98f12730..7af7bd4e 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 @@ -243,6 +243,7 @@ public class XmProjectPhaseController { } List excludePhaseIds=new ArrayList<>(); excludePhaseIds.add(xmProjectPhase.getId()); + xmProjectPhaseService.calcPhaseBudgetAmount(xmProjectPhase); xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhase); if(xmProjectPhase.getLvl()==1){ tips=xmProjectPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); @@ -357,6 +358,7 @@ public class XmProjectPhaseController { m.put("tips", tips); return m; } + xmProjectPhaseService.calcPhaseBudgetAmount(xmProjectPhase); List excludePhaseIds=new ArrayList<>(); excludePhaseIds.add(xmProjectPhase.getId()); if(xmProjectPhase.getLvl()==1){ @@ -537,6 +539,7 @@ 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); @@ -549,6 +552,7 @@ public class XmProjectPhaseController { 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()); } @@ -635,6 +639,7 @@ 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); @@ -647,6 +652,7 @@ public class XmProjectPhaseController { 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()); } diff --git a/xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java b/xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java index 7527c1ee..1ee3412d 100644 --- a/xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java +++ b/xm-core/src/main/java/com/xm/core/service/XmProjectPhaseService.java @@ -133,10 +133,10 @@ public class XmProjectPhaseService extends BaseService { return tips; } - BigDecimal phaseBudgetCostAt=phaseBudgetCost.add(phaseBudgetInnerUserAt).add(phaseBudgetOutUserAt).add(phaseBudgetNouserAt); - phaseBudgetCostAt=phaseBudgetCostAt.add(addPhaseBudgetCost); - if(phaseBudgetCostAt.compareTo(planTotalCost)>0) { - tips.setFailureMsg("计划总体预算超出项目总预算"+phaseBudgetCostAt.subtract(planTotalCost)+"元"); + BigDecimal phaseBudgetAt=phaseBudgetCost.add(phaseBudgetInnerUserAt).add(phaseBudgetOutUserAt).add(phaseBudgetNouserAt); + phaseBudgetAt=phaseBudgetAt.add(addPhaseBudgetCost); + if(phaseBudgetAt.compareTo(planTotalCost)>0) { + tips.setFailureMsg("计划总体预算超出项目总预算"+phaseBudgetAt.subtract(planTotalCost)+"元"); return tips; }else { return tips; @@ -512,10 +512,10 @@ public class XmProjectPhaseService extends BaseService { BigDecimal planTotalCost=NumberUtil.getBigDecimal(g.get("pbudgetAmount"),zero); - BigDecimal phaseBudgetCostAt=phaseBudgetCost.add(phaseBudgetInnerUserAt).add(phaseBudgetOutUserAt).add(phaseBudgetNouserAt); - phaseBudgetCostAt=phaseBudgetCostAt.add(addPhaseBudgetCost); - if(phaseBudgetCostAt.compareTo(planTotalCost)>0) { - tips.setFailureMsg("计划总体预算超出产品总预算"+phaseBudgetCostAt.subtract(planTotalCost)+"元"); + BigDecimal phaseBudgetAt=phaseBudgetCost.add(phaseBudgetInnerUserAt).add(phaseBudgetOutUserAt).add(phaseBudgetNouserAt); + phaseBudgetAt=phaseBudgetAt.add(addPhaseBudgetCost); + if(phaseBudgetAt.compareTo(planTotalCost)>0) { + tips.setFailureMsg("计划总体预算超出产品总预算"+phaseBudgetAt.subtract(planTotalCost)+"元"); return tips; }else { return tips; @@ -539,6 +539,22 @@ public class XmProjectPhaseService extends BaseService { return this.selectOne("selectPhaseBudgetCost", p); } + public void calcPhaseBudgetAmount(XmProjectPhase phase){ + if(phase.getPhaseBudgetInnerUserAt()==null){ + phase.setPhaseBudgetInnerUserAt(BigDecimal.ZERO); + } + if(phase.getPhaseBudgetNouserAt()==null){ + phase.setPhaseBudgetNouserAt(BigDecimal.ZERO); + } + if(phase.getPhaseBudgetOutUserAt()==null){ + phase.setPhaseBudgetOutUserAt(BigDecimal.ZERO); + } + if(phase.getPhaseBudgetAt()==null){ + phase.setPhaseBudgetAt(BigDecimal.ZERO); + } + phase.setPhaseBudgetAt(phase.getPhaseBudgetInnerUserAt().add(phase.getPhaseBudgetNouserAt()).add(phase.getPhaseBudgetAt())); + } + /** * res2.id, * res2.phase_budget_workload, 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 a31ee10e..94b9e967 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 @@ -115,8 +115,8 @@ public class XmTaskService extends BaseService { return tips; } - BigDecimal phaseBudgetCostAt=phaseBudgetCost.add(phaseBudgetInnerUserAt).add(phaseBudgetOutUserAt).add(phaseBudgetNouserAt); - if(phaseBudgetCostAt.compareTo(taskBudgetTotalCost)<0) { + BigDecimal phaseBudgetAt=phaseBudgetCost.add(phaseBudgetInnerUserAt).add(phaseBudgetOutUserAt).add(phaseBudgetNouserAt); + if(phaseBudgetAt.compareTo(taskBudgetTotalCost)<0) { tips.setFailureMsg("任务合计总预算超出计划总预算"); return tips; }else { diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml index 7525e6fb..35785c4c 100644 --- a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectPhaseMapper.xml @@ -104,7 +104,7 @@ sum( ifnull(res.phase_budget_nouser_at,0) ) AS child_phase_budget_nouser_at, sum( ifnull(res.phase_budget_inner_user_at,0) ) AS child_phase_budget_inner_user_at, sum( ifnull(res.phase_budget_out_user_at,0) ) AS child_phase_budget_out_user_at, - sum( ifnull(res.phase_budget_at,0) ) AS child_phase_budget_at, + sum( ifnull(res.phase_budget_at,0) ) AS child_phase_budget_at FROM xm_project_phase res where res.parent_phase_id=#{id} and res.id not in