From 1c3d2ca9440d3a043045895d4779102715bcde33 Mon Sep 17 00:00:00 2001 From: hanbo <2608504783@qq.com> Date: Fri, 26 Nov 2021 15:57:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=B3=E7=AE=97=E5=88=A9=E6=B6=A6=E7=8E=87?= =?UTF-8?q?=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/palmte/work/bean/FinalBean.java | 26 +++++++++-- .../work/model/ProjectFinalProfitMargin.java | 44 +++++++++++++++++++ .../work/service/ProjectFinalSevice.java | 41 +++++++++++++++++ .../templates/admin/project_final_edit.ftl | 2 +- 4 files changed, 109 insertions(+), 4 deletions(-) diff --git a/src/main/java/cn/palmte/work/bean/FinalBean.java b/src/main/java/cn/palmte/work/bean/FinalBean.java index 6dc8338..666afe3 100644 --- a/src/main/java/cn/palmte/work/bean/FinalBean.java +++ b/src/main/java/cn/palmte/work/bean/FinalBean.java @@ -1,6 +1,7 @@ package cn.palmte.work.bean; import java.math.BigDecimal; +import java.math.RoundingMode; public class FinalBean { @@ -154,7 +155,13 @@ public class FinalBean { private BigDecimal grossProfitProfitMargin; public BigDecimal getGrossProfitProfitMargin() { - return grossProfitProfitMargin; + BigDecimal grossProfitFinalTotal = getGrossProfitFinalTotal(); + BigDecimal incomeTotal = getIncomeTotal(); + + if(null == grossProfitFinalTotal || null == incomeTotal){ + return null; + } + return grossProfitFinalTotal.divide(incomeTotal,4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); } public void setGrossProfitProfitMargin(BigDecimal grossProfitProfitMargin) { @@ -186,7 +193,14 @@ public class FinalBean { private BigDecimal contributionMarginProfitMargin; public BigDecimal getContributionMarginProfitMargin() { - return contributionMarginProfitMargin; + BigDecimal contributionMarginFinalTotal = getContributionMarginFinalTotal(); + BigDecimal incomeTotal = getIncomeTotal(); + + if(null == contributionMarginFinalTotal || null == incomeTotal){ + return null; + } + + return contributionMarginFinalTotal.divide(incomeTotal,4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); } public void setContributionMarginProfitMargin(BigDecimal contributionMarginProfitMargin) { @@ -217,7 +231,13 @@ public class FinalBean { private BigDecimal netMarginProfitMargin; public BigDecimal getNetMarginProfitMargin() { - return netMarginProfitMargin; + BigDecimal netMarginFinalTotal = getNetMarginFinalTotal(); + BigDecimal incomeTotal = getIncomeTotal(); + + if(null == netMarginFinalTotal || null == incomeTotal){ + return null; + } + return netMarginFinalTotal.divide(incomeTotal,4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); } public void setNetMarginProfitMargin(BigDecimal netMarginProfitMargin) { diff --git a/src/main/java/cn/palmte/work/model/ProjectFinalProfitMargin.java b/src/main/java/cn/palmte/work/model/ProjectFinalProfitMargin.java index 62b545e..d1ad7a9 100644 --- a/src/main/java/cn/palmte/work/model/ProjectFinalProfitMargin.java +++ b/src/main/java/cn/palmte/work/model/ProjectFinalProfitMargin.java @@ -53,6 +53,20 @@ public class ProjectFinalProfitMargin { @Column(name = "final_total_profit_margin") private BigDecimal finalTotalProfitMargin; + /** + * 利润率 + */ + @Column(name = "profit_margin") + private BigDecimal profitMargin; + + public BigDecimal getProfitMargin() { + return profitMargin; + } + + public void setProfitMargin(BigDecimal profitMargin) { + this.profitMargin = profitMargin; + } + public Integer getId() { return id; } @@ -77,5 +91,35 @@ public class ProjectFinalProfitMargin { this.type = type; } + public BigDecimal getEstimateTotalProfitMargin() { + return estimateTotalProfitMargin; + } + public void setEstimateTotalProfitMargin(BigDecimal estimateTotalProfitMargin) { + this.estimateTotalProfitMargin = estimateTotalProfitMargin; + } + + public BigDecimal getBudgetTotalProfitMargin() { + return budgetTotalProfitMargin; + } + + public void setBudgetTotalProfitMargin(BigDecimal budgetTotalProfitMargin) { + this.budgetTotalProfitMargin = budgetTotalProfitMargin; + } + + public BigDecimal getSettleTotalProfitMargin() { + return settleTotalProfitMargin; + } + + public void setSettleTotalProfitMargin(BigDecimal settleTotalProfitMargin) { + this.settleTotalProfitMargin = settleTotalProfitMargin; + } + + public BigDecimal getFinalTotalProfitMargin() { + return finalTotalProfitMargin; + } + + public void setFinalTotalProfitMargin(BigDecimal finalTotalProfitMargin) { + this.finalTotalProfitMargin = finalTotalProfitMargin; + } } \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/service/ProjectFinalSevice.java b/src/main/java/cn/palmte/work/service/ProjectFinalSevice.java index 21ceaeb..0adcfa4 100644 --- a/src/main/java/cn/palmte/work/service/ProjectFinalSevice.java +++ b/src/main/java/cn/palmte/work/service/ProjectFinalSevice.java @@ -55,6 +55,9 @@ public class ProjectFinalSevice { @Autowired private ProjectSettleService projectSettleService; + @Autowired + private ProjectFinalProfitMarginRepository projectFinalProfitMarginRepository; + @Transactional public void save(Project project, FinalBean finalBean) { //预算表数据 @@ -76,6 +79,9 @@ public class ProjectFinalSevice { //保存项目结算管理成本信息 saveProjectFinalCostManage(project,finalBean,estimate,budget,settle); + //保存项目决算利润率 + saveProjectFinalProfitMargin(project,finalBean,estimate,budget,settle); + //保存项目结算现金流量信息 saveProjectFinalCashFlux(project,finalBean,cashFlowBean,settle); @@ -103,6 +109,9 @@ public class ProjectFinalSevice { //保存项目结算管理成本信息 saveProjectFinalCostManage(project,finalBean,estimate,budget,settle); + //保存项目决算利润率 + saveProjectFinalProfitMargin(project,finalBean,estimate,budget,settle); + //保存项目结算现金流量信息 saveProjectFinalCashFlux(project,finalBean,cashFlowBean,settle); @@ -113,6 +122,38 @@ public class ProjectFinalSevice { } + private void saveProjectFinalProfitMargin(Project project, FinalBean finalBean, EstimateBean estimate, BudgetBean budget, FormerBean settle) { + ProjectFinalProfitMargin typeGrossProfit = new ProjectFinalProfitMargin(); + typeGrossProfit.setProjectId(project.getId()); + typeGrossProfit.setType(ProjectFinalProfitMargin.TYPE_GROSS_PROFIT); + typeGrossProfit.setEstimateTotalProfitMargin(estimate.getProjectGrossProfit()); + typeGrossProfit.setBudgetTotalProfitMargin(budget.getProjectGrossProfit()); + typeGrossProfit.setSettleTotalProfitMargin(settle.getGrossProfit()); + typeGrossProfit.setFinalTotalProfitMargin(finalBean.getGrossProfitFinalTotal()); + typeGrossProfit.setProfitMargin(finalBean.getGrossProfitProfitMargin()); + projectFinalProfitMarginRepository.saveAndFlush(typeGrossProfit); + + + ProjectFinalProfitMargin typeContributionMargin = new ProjectFinalProfitMargin(); + typeContributionMargin.setProjectId(project.getId()); + typeContributionMargin.setType(ProjectFinalProfitMargin.TYPE_CONTRIBUTION_MARGIN); + typeContributionMargin.setEstimateTotalProfitMargin(estimate.getProjectContributionProfit()); + typeContributionMargin.setBudgetTotalProfitMargin(budget.getProjectContributionProfit()); + typeContributionMargin.setSettleTotalProfitMargin(settle.getContributionProfit()); + typeContributionMargin.setFinalTotalProfitMargin(finalBean.getContributionMarginFinalTotal()); + typeContributionMargin.setProfitMargin(finalBean.getContributionMarginProfitMargin()); + projectFinalProfitMarginRepository.saveAndFlush(typeContributionMargin); + + ProjectFinalProfitMargin typeNetMargin = new ProjectFinalProfitMargin(); + typeNetMargin.setProjectId(project.getId()); + typeNetMargin.setType(ProjectFinalProfitMargin.TYPE_NET_MARGIN); + typeNetMargin.setSettleTotalProfitMargin(settle.getNetProfit()); + typeNetMargin.setFinalTotalProfitMargin(finalBean.getNetMarginFinalTotal()); + typeNetMargin.setProfitMargin(finalBean.getNetMarginProfitMargin()); + projectFinalProfitMarginRepository.saveAndFlush(typeNetMargin); + + } + public void saveProjectFinalCostManage(Project project, FinalBean finalBean,EstimateBean estimate,BudgetBean budget,FormerBean settle){ ProjectFinalCostManage expropriationManage = new ProjectFinalCostManage(); expropriationManage.setProjectId(project.getId()); diff --git a/src/main/resources/templates/admin/project_final_edit.ftl b/src/main/resources/templates/admin/project_final_edit.ftl index bf0e8a7..5525dd8 100644 --- a/src/main/resources/templates/admin/project_final_edit.ftl +++ b/src/main/resources/templates/admin/project_final_edit.ftl @@ -232,7 +232,7 @@