From 9294265d828a9c1c89f8bbe0060882978f59d147 Mon Sep 17 00:00:00 2001 From: xxssyyyyssxx Date: Tue, 2 Nov 2021 15:51:52 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=AE=97=E8=A1=A8=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/palmte/work/bean/BudgetBean.java | 4 +- .../cn/palmte/work/bean/EstimateBean.java | 234 +-------------- .../cn/palmte/work/bean/IncomeCostBean.java | 282 ++++++++++++++++++ .../controller/backend/ProjectController.java | 8 +- .../palmte/work/model/ProjectBudgetCost.java | 90 ++++++ .../work/model/ProjectBudgetCostManage.java | 63 ++++ .../ProjectBudgetCostManageRepository.java | 9 + .../model/ProjectBudgetCostRepository.java | 9 + ...teProfit.java => ProjectBudgetIncome.java} | 30 +- .../model/ProjectBudgetIncomeRepository.java | 9 + .../work/model/ProjectEstimateCostManage.java | 2 +- .../ProjectEstimateProfitRepository.java | 6 - .../work/service/ProjectBudgetService.java | 197 ++++++++++++ 13 files changed, 687 insertions(+), 256 deletions(-) create mode 100644 src/main/java/cn/palmte/work/bean/IncomeCostBean.java create mode 100644 src/main/java/cn/palmte/work/model/ProjectBudgetCost.java create mode 100644 src/main/java/cn/palmte/work/model/ProjectBudgetCostManage.java create mode 100644 src/main/java/cn/palmte/work/model/ProjectBudgetCostManageRepository.java create mode 100644 src/main/java/cn/palmte/work/model/ProjectBudgetCostRepository.java rename src/main/java/cn/palmte/work/model/{ProjectEstimateProfit.java => ProjectBudgetIncome.java} (68%) create mode 100644 src/main/java/cn/palmte/work/model/ProjectBudgetIncomeRepository.java delete mode 100644 src/main/java/cn/palmte/work/model/ProjectEstimateProfitRepository.java create mode 100644 src/main/java/cn/palmte/work/service/ProjectBudgetService.java diff --git a/src/main/java/cn/palmte/work/bean/BudgetBean.java b/src/main/java/cn/palmte/work/bean/BudgetBean.java index 5b6de08..433460a 100644 --- a/src/main/java/cn/palmte/work/bean/BudgetBean.java +++ b/src/main/java/cn/palmte/work/bean/BudgetBean.java @@ -1,8 +1,8 @@ package cn.palmte.work.bean; /** - * @see EstimateBean 貌似完全一样 + * 预算页面 * @author xiongshiyan at 2021/11/1 , contact me with email yanshixiong@126.com or phone 15208384257 */ -public class BudgetBean extends EstimateBean{ +public class BudgetBean extends IncomeCostBean{ } diff --git a/src/main/java/cn/palmte/work/bean/EstimateBean.java b/src/main/java/cn/palmte/work/bean/EstimateBean.java index 9934207..a71d960 100644 --- a/src/main/java/cn/palmte/work/bean/EstimateBean.java +++ b/src/main/java/cn/palmte/work/bean/EstimateBean.java @@ -1,238 +1,8 @@ package cn.palmte.work.bean; -import java.math.BigDecimal; - /** + * 概算页面 * @author xiongshiyan at 2021/11/1 , contact me with email yanshixiong@126.com or phone 15208384257 */ -public class EstimateBean { - private BigDecimal incomeDeviceTaxInclude; - private BigDecimal incomeEngineerTaxInclude; - private BigDecimal incomeServiceTaxInclude; - - private BigDecimal incomeDeviceTaxExclude; - private BigDecimal incomeEngineerTaxExclude; - private BigDecimal incomeServiceTaxExclude; - - private BigDecimal costPurchaseDeviceTaxInclude; - private BigDecimal costPurchaseBuildTaxInclude; - private BigDecimal costPurchaseServiceTaxInclude; - private BigDecimal costProjectManageTaxInclude; - private BigDecimal costPurchaseOtherTaxInclude; - private BigDecimal costOtherOtherTaxInclude; - - private BigDecimal costPurchaseDeviceTaxExclude; - private BigDecimal costPurchaseBuildTaxExclude; - private BigDecimal costPurchaseServiceTaxExclude; - private BigDecimal costPurchaseOtherTaxExclude; - private BigDecimal costProjectManageTaxExclude; - private BigDecimal costOtherOtherTaxExclude; - - private BigDecimal costExpropriationTaxExclude; - private BigDecimal costCompanyManageTaxExclude; - - public BigDecimal getIncomeDeviceTaxInclude() { - return incomeDeviceTaxInclude; - } - - public void setIncomeDeviceTaxInclude(BigDecimal incomeDeviceTaxInclude) { - this.incomeDeviceTaxInclude = incomeDeviceTaxInclude; - } - - public BigDecimal getIncomeEngineerTaxInclude() { - return incomeEngineerTaxInclude; - } - - public void setIncomeEngineerTaxInclude(BigDecimal incomeEngineerTaxInclude) { - this.incomeEngineerTaxInclude = incomeEngineerTaxInclude; - } - - public BigDecimal getIncomeServiceTaxInclude() { - return incomeServiceTaxInclude; - } - - public void setIncomeServiceTaxInclude(BigDecimal incomeServiceTaxInclude) { - this.incomeServiceTaxInclude = incomeServiceTaxInclude; - } - - public BigDecimal getIncomeTotalTaxInclude() { - return incomeDeviceTaxInclude.add(incomeEngineerTaxInclude) - .add(incomeServiceTaxInclude); - } - - public BigDecimal getIncomeDeviceTaxExclude() { - return incomeDeviceTaxExclude; - } - - public void setIncomeDeviceTaxExclude(BigDecimal incomeDeviceTaxExclude) { - this.incomeDeviceTaxExclude = incomeDeviceTaxExclude; - } - - public BigDecimal getIncomeEngineerTaxExclude() { - return incomeEngineerTaxExclude; - } - - public void setIncomeEngineerTaxExclude(BigDecimal incomeEngineerTaxExclude) { - this.incomeEngineerTaxExclude = incomeEngineerTaxExclude; - } - - public BigDecimal getIncomeServiceTaxExclude() { - return incomeServiceTaxExclude; - } - - public void setIncomeServiceTaxExclude(BigDecimal incomeServiceTaxExclude) { - this.incomeServiceTaxExclude = incomeServiceTaxExclude; - } - - public BigDecimal getIncomeTotalTaxExclude() { - return incomeDeviceTaxExclude.add(incomeEngineerTaxExclude) - .add(incomeServiceTaxExclude); - } - - public BigDecimal getCostPurchaseDeviceTaxInclude() { - return costPurchaseDeviceTaxInclude; - } - - public void setCostPurchaseDeviceTaxInclude(BigDecimal costPurchaseDeviceTaxInclude) { - this.costPurchaseDeviceTaxInclude = costPurchaseDeviceTaxInclude; - } - - public BigDecimal getCostPurchaseBuildTaxInclude() { - return costPurchaseBuildTaxInclude; - } - - public void setCostPurchaseBuildTaxInclude(BigDecimal costPurchaseBuildTaxInclude) { - this.costPurchaseBuildTaxInclude = costPurchaseBuildTaxInclude; - } - - public BigDecimal getCostPurchaseServiceTaxInclude() { - return costPurchaseServiceTaxInclude; - } - - public void setCostPurchaseServiceTaxInclude(BigDecimal costPurchaseServiceTaxInclude) { - this.costPurchaseServiceTaxInclude = costPurchaseServiceTaxInclude; - } - - public BigDecimal getCostProjectManageTaxInclude() { - return costProjectManageTaxInclude; - } - - public void setCostProjectManageTaxInclude(BigDecimal costProjectManageTaxInclude) { - this.costProjectManageTaxInclude = costProjectManageTaxInclude; - } - - public BigDecimal getCostPurchaseOtherTaxInclude() { - return costPurchaseOtherTaxInclude; - } - - public void setCostPurchaseOtherTaxInclude(BigDecimal costPurchaseOtherTaxInclude) { - this.costPurchaseOtherTaxInclude = costPurchaseOtherTaxInclude; - } - - public BigDecimal getCostOtherOtherTaxInclude() { - return costOtherOtherTaxInclude; - } - - public void setCostOtherOtherTaxInclude(BigDecimal costOtherOtherTaxInclude) { - this.costOtherOtherTaxInclude = costOtherOtherTaxInclude; - } - - public BigDecimal getCostTotalTaxInclude() { - return costPurchaseDeviceTaxInclude - .add(costPurchaseBuildTaxInclude) - .add(costPurchaseServiceTaxInclude) - .add(costPurchaseOtherTaxInclude) - .add(costProjectManageTaxInclude) - .add(costOtherOtherTaxInclude); - } - - public BigDecimal getCostPurchaseDeviceTaxExclude() { - return costPurchaseDeviceTaxExclude; - } - - public void setCostPurchaseDeviceTaxExclude(BigDecimal costPurchaseDeviceTaxExclude) { - this.costPurchaseDeviceTaxExclude = costPurchaseDeviceTaxExclude; - } - - public BigDecimal getCostPurchaseBuildTaxExclude() { - return costPurchaseBuildTaxExclude; - } - - public void setCostPurchaseBuildTaxExclude(BigDecimal costPurchaseBuildTaxExclude) { - this.costPurchaseBuildTaxExclude = costPurchaseBuildTaxExclude; - } - - public BigDecimal getCostPurchaseServiceTaxExclude() { - return costPurchaseServiceTaxExclude; - } - - public void setCostPurchaseServiceTaxExclude(BigDecimal costPurchaseServiceTaxExclude) { - this.costPurchaseServiceTaxExclude = costPurchaseServiceTaxExclude; - } - - public BigDecimal getCostPurchaseOtherTaxExclude() { - return costPurchaseOtherTaxExclude; - } - - public void setCostPurchaseOtherTaxExclude(BigDecimal costPurchaseOtherTaxExclude) { - this.costPurchaseOtherTaxExclude = costPurchaseOtherTaxExclude; - } - - public BigDecimal getCostProjectManageTaxExclude() { - return costProjectManageTaxExclude; - } - - public void setCostProjectManageTaxExclude(BigDecimal costProjectManageTaxExclude) { - this.costProjectManageTaxExclude = costProjectManageTaxExclude; - } - - public BigDecimal getCostOtherOtherTaxExclude() { - return costOtherOtherTaxExclude; - } - - public void setCostOtherOtherTaxExclude(BigDecimal costOtherOtherTaxExclude) { - this.costOtherOtherTaxExclude = costOtherOtherTaxExclude; - } - - public BigDecimal getCostTotalTaxExclude() { - return costPurchaseDeviceTaxExclude.add(costPurchaseBuildTaxExclude) - .add(costPurchaseServiceTaxExclude) - .add(costPurchaseOtherTaxExclude) - .add(costProjectManageTaxExclude) - .add(costOtherOtherTaxExclude); - } - - - public BigDecimal getCostExpropriationTaxExclude() { - return costExpropriationTaxExclude; - } - - public void setCostExpropriationTaxExclude(BigDecimal costExpropriationTaxExclude) { - this.costExpropriationTaxExclude = costExpropriationTaxExclude; - } - - public BigDecimal getCostCompanyManageTaxExclude() { - return costCompanyManageTaxExclude; - } - - public void setCostCompanyManageTaxExclude(BigDecimal costCompanyManageTaxExclude) { - this.costCompanyManageTaxExclude = costCompanyManageTaxExclude; - } - - public BigDecimal getProjectGrossProfit() { - return getIncomeTotalTaxExclude().subtract(getCostTotalTaxExclude()).subtract(getCostExpropriationTaxExclude()); - } - - - public BigDecimal getProjectGrossProfitRate() { - return getProjectGrossProfit().multiply(new BigDecimal(100)).divide(getIncomeTotalTaxExclude(),2,BigDecimal.ROUND_HALF_UP); - } - - public BigDecimal getProjectContributionProfit() { - return getProjectGrossProfit().subtract(getCostCompanyManageTaxExclude()); - } - - public BigDecimal getProjectContributionProfitRate() { - return getProjectContributionProfit().multiply(new BigDecimal(100)).divide(getIncomeTotalTaxExclude(), 2,BigDecimal.ROUND_HALF_UP); - } +public class EstimateBean extends IncomeCostBean{ } diff --git a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java new file mode 100644 index 0000000..62cac7c --- /dev/null +++ b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java @@ -0,0 +1,282 @@ +package cn.palmte.work.bean; + +import java.math.BigDecimal; + +/** + * 预算概算页面的公共属性 + * @author xiongshiyan at 2021/11/1 , contact me with email yanshixiong@126.com or phone 15208384257 + */ +public class IncomeCostBean { + private BigDecimal incomeDeviceTaxInclude; + private BigDecimal incomeEngineerTaxInclude; + private BigDecimal incomeServiceTaxInclude; + + private BigDecimal incomeDeviceTaxExclude; + private BigDecimal incomeEngineerTaxExclude; + private BigDecimal incomeServiceTaxExclude; + + private BigDecimal costPurchaseDeviceTaxInclude; + private BigDecimal costPurchaseBuildTaxInclude; + private BigDecimal costPurchaseServiceTaxInclude; + private BigDecimal costProjectManageTaxInclude; + private BigDecimal costPurchaseOtherTaxInclude; + private BigDecimal costOtherOtherTaxInclude; + + private BigDecimal costPurchaseDeviceTaxExclude; + private BigDecimal costPurchaseBuildTaxExclude; + private BigDecimal costPurchaseServiceTaxExclude; + private BigDecimal costPurchaseOtherTaxExclude; + private BigDecimal costProjectManageTaxExclude; + private BigDecimal costOtherOtherTaxExclude; + + private BigDecimal costExpropriationTaxExclude; + private BigDecimal costCompanyManageTaxExclude; + + public BigDecimal getIncomeDeviceTaxInclude() { + return incomeDeviceTaxInclude; + } + + public void setIncomeDeviceTaxInclude(BigDecimal incomeDeviceTaxInclude) { + this.incomeDeviceTaxInclude = incomeDeviceTaxInclude; + } + + public BigDecimal getIncomeEngineerTaxInclude() { + return incomeEngineerTaxInclude; + } + + public void setIncomeEngineerTaxInclude(BigDecimal incomeEngineerTaxInclude) { + this.incomeEngineerTaxInclude = incomeEngineerTaxInclude; + } + + public BigDecimal getIncomeServiceTaxInclude() { + return incomeServiceTaxInclude; + } + + public void setIncomeServiceTaxInclude(BigDecimal incomeServiceTaxInclude) { + this.incomeServiceTaxInclude = incomeServiceTaxInclude; + } + + public BigDecimal getIncomeTotalTaxInclude() { + if(null == incomeDeviceTaxInclude || null == incomeEngineerTaxInclude || null == incomeServiceTaxInclude){ + return null; + } + return incomeDeviceTaxInclude.add(incomeEngineerTaxInclude) + .add(incomeServiceTaxInclude); + } + + public BigDecimal getIncomeDeviceTaxExclude() { + return incomeDeviceTaxExclude; + } + + public void setIncomeDeviceTaxExclude(BigDecimal incomeDeviceTaxExclude) { + this.incomeDeviceTaxExclude = incomeDeviceTaxExclude; + } + + public BigDecimal getIncomeEngineerTaxExclude() { + return incomeEngineerTaxExclude; + } + + public void setIncomeEngineerTaxExclude(BigDecimal incomeEngineerTaxExclude) { + this.incomeEngineerTaxExclude = incomeEngineerTaxExclude; + } + + public BigDecimal getIncomeServiceTaxExclude() { + return incomeServiceTaxExclude; + } + + public void setIncomeServiceTaxExclude(BigDecimal incomeServiceTaxExclude) { + this.incomeServiceTaxExclude = incomeServiceTaxExclude; + } + + public BigDecimal getIncomeTotalTaxExclude() { + if(null == incomeDeviceTaxExclude || null == incomeEngineerTaxExclude || null ==incomeServiceTaxExclude){ + return null; + } + return incomeDeviceTaxExclude.add(incomeEngineerTaxExclude) + .add(incomeServiceTaxExclude); + } + + public BigDecimal getCostPurchaseDeviceTaxInclude() { + return costPurchaseDeviceTaxInclude; + } + + public void setCostPurchaseDeviceTaxInclude(BigDecimal costPurchaseDeviceTaxInclude) { + this.costPurchaseDeviceTaxInclude = costPurchaseDeviceTaxInclude; + } + + public BigDecimal getCostPurchaseBuildTaxInclude() { + return costPurchaseBuildTaxInclude; + } + + public void setCostPurchaseBuildTaxInclude(BigDecimal costPurchaseBuildTaxInclude) { + this.costPurchaseBuildTaxInclude = costPurchaseBuildTaxInclude; + } + + public BigDecimal getCostPurchaseServiceTaxInclude() { + return costPurchaseServiceTaxInclude; + } + + public void setCostPurchaseServiceTaxInclude(BigDecimal costPurchaseServiceTaxInclude) { + this.costPurchaseServiceTaxInclude = costPurchaseServiceTaxInclude; + } + + public BigDecimal getCostProjectManageTaxInclude() { + return costProjectManageTaxInclude; + } + + public void setCostProjectManageTaxInclude(BigDecimal costProjectManageTaxInclude) { + this.costProjectManageTaxInclude = costProjectManageTaxInclude; + } + + public BigDecimal getCostPurchaseOtherTaxInclude() { + return costPurchaseOtherTaxInclude; + } + + public void setCostPurchaseOtherTaxInclude(BigDecimal costPurchaseOtherTaxInclude) { + this.costPurchaseOtherTaxInclude = costPurchaseOtherTaxInclude; + } + + public BigDecimal getCostOtherOtherTaxInclude() { + return costOtherOtherTaxInclude; + } + + public void setCostOtherOtherTaxInclude(BigDecimal costOtherOtherTaxInclude) { + this.costOtherOtherTaxInclude = costOtherOtherTaxInclude; + } + + public BigDecimal getCostTotalTaxInclude() { + if(null == costPurchaseDeviceTaxInclude + || null == costPurchaseBuildTaxInclude + || null == costPurchaseServiceTaxInclude + || null == costPurchaseOtherTaxInclude + || null == costProjectManageTaxInclude + || null == costOtherOtherTaxInclude){ + return null; + } + return costPurchaseDeviceTaxInclude + .add(costPurchaseBuildTaxInclude) + .add(costPurchaseServiceTaxInclude) + .add(costPurchaseOtherTaxInclude) + .add(costProjectManageTaxInclude) + .add(costOtherOtherTaxInclude); + } + + public BigDecimal getCostPurchaseDeviceTaxExclude() { + return costPurchaseDeviceTaxExclude; + } + + public void setCostPurchaseDeviceTaxExclude(BigDecimal costPurchaseDeviceTaxExclude) { + this.costPurchaseDeviceTaxExclude = costPurchaseDeviceTaxExclude; + } + + public BigDecimal getCostPurchaseBuildTaxExclude() { + return costPurchaseBuildTaxExclude; + } + + public void setCostPurchaseBuildTaxExclude(BigDecimal costPurchaseBuildTaxExclude) { + this.costPurchaseBuildTaxExclude = costPurchaseBuildTaxExclude; + } + + public BigDecimal getCostPurchaseServiceTaxExclude() { + return costPurchaseServiceTaxExclude; + } + + public void setCostPurchaseServiceTaxExclude(BigDecimal costPurchaseServiceTaxExclude) { + this.costPurchaseServiceTaxExclude = costPurchaseServiceTaxExclude; + } + + public BigDecimal getCostPurchaseOtherTaxExclude() { + return costPurchaseOtherTaxExclude; + } + + public void setCostPurchaseOtherTaxExclude(BigDecimal costPurchaseOtherTaxExclude) { + this.costPurchaseOtherTaxExclude = costPurchaseOtherTaxExclude; + } + + public BigDecimal getCostProjectManageTaxExclude() { + return costProjectManageTaxExclude; + } + + public void setCostProjectManageTaxExclude(BigDecimal costProjectManageTaxExclude) { + this.costProjectManageTaxExclude = costProjectManageTaxExclude; + } + + public BigDecimal getCostOtherOtherTaxExclude() { + return costOtherOtherTaxExclude; + } + + public void setCostOtherOtherTaxExclude(BigDecimal costOtherOtherTaxExclude) { + this.costOtherOtherTaxExclude = costOtherOtherTaxExclude; + } + + public BigDecimal getCostTotalTaxExclude() { + if(null == costPurchaseDeviceTaxExclude + || null == costPurchaseBuildTaxExclude + || null == costPurchaseServiceTaxExclude + || null == costPurchaseOtherTaxExclude + || null == costProjectManageTaxExclude + || null == costOtherOtherTaxExclude){ + return null; + } + return costPurchaseDeviceTaxExclude.add(costPurchaseBuildTaxExclude) + .add(costPurchaseServiceTaxExclude) + .add(costPurchaseOtherTaxExclude) + .add(costProjectManageTaxExclude) + .add(costOtherOtherTaxExclude); + } + + + public BigDecimal getCostExpropriationTaxExclude() { + return costExpropriationTaxExclude; + } + + public void setCostExpropriationTaxExclude(BigDecimal costExpropriationTaxExclude) { + this.costExpropriationTaxExclude = costExpropriationTaxExclude; + } + + public BigDecimal getCostCompanyManageTaxExclude() { + return costCompanyManageTaxExclude; + } + + public void setCostCompanyManageTaxExclude(BigDecimal costCompanyManageTaxExclude) { + this.costCompanyManageTaxExclude = costCompanyManageTaxExclude; + } + + public BigDecimal getProjectGrossProfit() { + BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude(); + BigDecimal costTotalTaxExclude = getCostTotalTaxExclude(); + BigDecimal costExpropriationTaxExclude = getCostExpropriationTaxExclude(); + if(null == incomeTotalTaxExclude || null == costTotalTaxExclude || null == costExpropriationTaxExclude){ + return null; + } + return incomeTotalTaxExclude.subtract(costTotalTaxExclude).subtract(costExpropriationTaxExclude); + } + + + public BigDecimal getProjectGrossProfitRate() { + BigDecimal projectGrossProfit = getProjectGrossProfit(); + BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude(); + if(null == projectGrossProfit || null == incomeTotalTaxExclude){ + return null; + } + return projectGrossProfit.multiply(new BigDecimal(100)).divide(incomeTotalTaxExclude,2,BigDecimal.ROUND_HALF_UP); + } + + public BigDecimal getProjectContributionProfit() { + BigDecimal projectGrossProfit = getProjectGrossProfit(); + BigDecimal costCompanyManageTaxExclude = getCostCompanyManageTaxExclude(); + if(null == projectGrossProfit || null == costCompanyManageTaxExclude){ + return null; + } + return projectGrossProfit.subtract(costCompanyManageTaxExclude); + } + + public BigDecimal getProjectContributionProfitRate() { + BigDecimal projectContributionProfit = getProjectContributionProfit(); + BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude(); + if(null == projectContributionProfit || null == incomeTotalTaxExclude){ + return null; + } + return projectContributionProfit.multiply(new BigDecimal(100)).divide(incomeTotalTaxExclude, 2,BigDecimal.ROUND_HALF_UP); + } +} diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index 907d85d..3b36c6d 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -1,10 +1,12 @@ package cn.palmte.work.controller.backend; import cn.palmte.work.bean.ApproveStatusEnum; +import cn.palmte.work.bean.BudgetBean; import cn.palmte.work.bean.EstimateBean; import cn.palmte.work.model.Dept; import cn.palmte.work.model.DeptRepository; import cn.palmte.work.model.Project; +import cn.palmte.work.service.ProjectBudgetService; import cn.palmte.work.service.ProjectEstimateService; import cn.palmte.work.service.ProjectService; import cn.palmte.work.utils.InterfaceUtil; @@ -40,6 +42,8 @@ public class ProjectController extends BaseController{ private ProjectService projectService; @Autowired private ProjectEstimateService projectEstimateService; + @Autowired + private ProjectBudgetService projectBudgetService; /** * 项目列表 @@ -136,8 +140,8 @@ public class ProjectController extends BaseController{ public String budget(@RequestParam("id") int id,Map model) { Project project = projectService.getProject(id); model.put("project", project); - EstimateBean estimateBean = projectEstimateService.getEstimate(project); - model.put("budgetBean", estimateBean); + BudgetBean budgetBean = projectBudgetService.getBudget(project); + model.put("budgetBean", budgetBean); return "admin/project_budget_edit"; } diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetCost.java b/src/main/java/cn/palmte/work/model/ProjectBudgetCost.java new file mode 100644 index 0000000..3daf5c2 --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetCost.java @@ -0,0 +1,90 @@ +package cn.palmte.work.model; + +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.math.BigDecimal; + +/** + * 项目预算成本表 + */ +@Entity +@Table(name = "project_budget_cost") +public class ProjectBudgetCost { + public static final int FEE_PURCHASE = 1; + public static final int FEE_PROJECT_MANAGE = 2; + public static final int FEE_OTHER = 3; + + public static final int TYPE_DEVICE = 1; + public static final int TYPE_BUILDING = 2; + public static final int TYPE_SERVICE = 3; + public static final int TYPE_OTHER = 4; + public static final int TYPE_PROJECT_MANAGE = 5; + public static final int TYPE_OTHER_OTHER = 6; + /** + * id + */ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @GenericGenerator(name = "persistenceGenerator", strategy = "increment") + private Integer id; + + @Column(name = "project_id") + private int projectId; + + private int fee; + private int type; + + @Column(name = "cost_tax_include") + private BigDecimal costTaxInclude; + @Column(name = "cost_tax_exclude") + private BigDecimal costTaxExclude; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public int getProjectId() { + return projectId; + } + + public void setProjectId(int projectId) { + this.projectId = projectId; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public int getFee() { + return fee; + } + + public void setFee(int fee) { + this.fee = fee; + } + + public BigDecimal getCostTaxInclude() { + return costTaxInclude; + } + + public void setCostTaxInclude(BigDecimal costTaxInclude) { + this.costTaxInclude = costTaxInclude; + } + + public BigDecimal getCostTaxExclude() { + return costTaxExclude; + } + + public void setCostTaxExclude(BigDecimal costTaxExclude) { + this.costTaxExclude = costTaxExclude; + } +} \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetCostManage.java b/src/main/java/cn/palmte/work/model/ProjectBudgetCostManage.java new file mode 100644 index 0000000..c1e310e --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetCostManage.java @@ -0,0 +1,63 @@ +package cn.palmte.work.model; + +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.math.BigDecimal; + +/** + * 项目预算管理成本表 + */ +@Entity +@Table(name = "project_budget_cost_manage") +public class ProjectBudgetCostManage { + public static final int TYPE_EXPROPRIATION = 1; + public static final int TYPE_COMPANY_MANAGE = 2; + /** + * id + */ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @GenericGenerator(name = "persistenceGenerator", strategy = "increment") + private Integer id; + + @Column(name = "project_id") + private int projectId; + + private int type; + + @Column(name = "cost_tax_exclude") + private BigDecimal costTaxExclude; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public int getProjectId() { + return projectId; + } + + public void setProjectId(int projectId) { + this.projectId = projectId; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public BigDecimal getCostTaxExclude() { + return costTaxExclude; + } + + public void setCostTaxExclude(BigDecimal costTaxExclude) { + this.costTaxExclude = costTaxExclude; + } +} \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetCostManageRepository.java b/src/main/java/cn/palmte/work/model/ProjectBudgetCostManageRepository.java new file mode 100644 index 0000000..3940fe5 --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetCostManageRepository.java @@ -0,0 +1,9 @@ +package cn.palmte.work.model; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ProjectBudgetCostManageRepository extends JpaRepository { + List findAllByProjectIdEquals(int id); +} diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetCostRepository.java b/src/main/java/cn/palmte/work/model/ProjectBudgetCostRepository.java new file mode 100644 index 0000000..5609bf1 --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetCostRepository.java @@ -0,0 +1,9 @@ +package cn.palmte.work.model; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ProjectBudgetCostRepository extends JpaRepository { + List findAllByProjectIdEquals(int id); +} diff --git a/src/main/java/cn/palmte/work/model/ProjectEstimateProfit.java b/src/main/java/cn/palmte/work/model/ProjectBudgetIncome.java similarity index 68% rename from src/main/java/cn/palmte/work/model/ProjectEstimateProfit.java rename to src/main/java/cn/palmte/work/model/ProjectBudgetIncome.java index 40faf5a..8498e0f 100644 --- a/src/main/java/cn/palmte/work/model/ProjectEstimateProfit.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetIncome.java @@ -6,11 +6,15 @@ import javax.persistence.*; import java.math.BigDecimal; /** - * 项目概算利润率 + * 项目预算收入表 */ @Entity -@Table(name = "project_estimate_profit") -public class ProjectEstimateProfit { +@Table(name = "project_budget_income") +public class ProjectBudgetIncome { + public static final int TYPE_DEVICE = 1; + public static final int TYPE_ENGINEER = 2; + public static final int TYPE_SERVICE = 3; + /** * id */ @@ -24,10 +28,10 @@ public class ProjectEstimateProfit { private int type; + @Column(name = "income_tax_include") + private BigDecimal incomeTaxInclude; @Column(name = "income_tax_exclude") private BigDecimal incomeTaxExclude; - @Column(name = "profit_rate") - private BigDecimal profitRate; public Integer getId() { return id; @@ -53,6 +57,14 @@ public class ProjectEstimateProfit { this.type = type; } + public BigDecimal getIncomeTaxInclude() { + return incomeTaxInclude; + } + + public void setIncomeTaxInclude(BigDecimal incomeTaxInclude) { + this.incomeTaxInclude = incomeTaxInclude; + } + public BigDecimal getIncomeTaxExclude() { return incomeTaxExclude; } @@ -60,12 +72,4 @@ public class ProjectEstimateProfit { public void setIncomeTaxExclude(BigDecimal incomeTaxExclude) { this.incomeTaxExclude = incomeTaxExclude; } - - public BigDecimal getProfitRate() { - return profitRate; - } - - public void setProfitRate(BigDecimal profitRate) { - this.profitRate = profitRate; - } } \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeRepository.java b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeRepository.java new file mode 100644 index 0000000..67eea29 --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeRepository.java @@ -0,0 +1,9 @@ +package cn.palmte.work.model; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ProjectBudgetIncomeRepository extends JpaRepository { + List findAllByProjectIdEquals(int id); +} diff --git a/src/main/java/cn/palmte/work/model/ProjectEstimateCostManage.java b/src/main/java/cn/palmte/work/model/ProjectEstimateCostManage.java index 5f296bf..30e0085 100644 --- a/src/main/java/cn/palmte/work/model/ProjectEstimateCostManage.java +++ b/src/main/java/cn/palmte/work/model/ProjectEstimateCostManage.java @@ -6,7 +6,7 @@ import javax.persistence.*; import java.math.BigDecimal; /** - * 项目概算管理表 + * 项目概算管理成本表 */ @Entity @Table(name = "project_estimate_cost_manage") diff --git a/src/main/java/cn/palmte/work/model/ProjectEstimateProfitRepository.java b/src/main/java/cn/palmte/work/model/ProjectEstimateProfitRepository.java deleted file mode 100644 index 4fd54b3..0000000 --- a/src/main/java/cn/palmte/work/model/ProjectEstimateProfitRepository.java +++ /dev/null @@ -1,6 +0,0 @@ -package cn.palmte.work.model; - -import org.springframework.data.jpa.repository.JpaRepository; - -public interface ProjectEstimateProfitRepository extends JpaRepository { -} diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java new file mode 100644 index 0000000..ae81a09 --- /dev/null +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -0,0 +1,197 @@ +package cn.palmte.work.service; + +import cn.palmte.work.bean.BudgetBean; +import cn.palmte.work.model.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import top.jfunc.common.utils.CollectionUtil; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 项目预算service + * @author xiongshiyan at 2021/10/29 , contact me with email yanshixiong@126.com or phone 15208384257 + */ +@Service +public class ProjectBudgetService { + @Autowired + private ProjectBudgetIncomeRepository projectBudgetIncomeRepository; + @Autowired + private ProjectBudgetCostRepository projectBudgetCostRepository; + @Autowired + private ProjectBudgetCostManageRepository projectBudgetCostManageRepository; + + + public void clearBudget(Project project){ + List incomes = projectBudgetIncomeRepository.findAllByProjectIdEquals(project.getId()); + if(CollectionUtil.isNotEmpty(incomes)){ + projectBudgetIncomeRepository.deleteInBatch(incomes); + } + + List costs = projectBudgetCostRepository.findAllByProjectIdEquals(project.getId()); + if(CollectionUtil.isNotEmpty(costs)){ + projectBudgetCostRepository.deleteInBatch(costs); + } + + List costManages = projectBudgetCostManageRepository.findAllByProjectIdEquals(project.getId()); + if(CollectionUtil.isNotEmpty(costManages)){ + projectBudgetCostManageRepository.deleteInBatch(costManages); + } + + } + + public void saveBudget(Project project, BudgetBean budgetBean){ + //收入记录 + income(project, budgetBean); + //成本记录 + cost(project, budgetBean); + //管理记录 + costManage(project, budgetBean); + } + + private void cost(Project project, BudgetBean budgetBean) { + ProjectBudgetCost projectBudgetCostDevice = new ProjectBudgetCost(); + projectBudgetCostDevice.setProjectId(project.getId()); + projectBudgetCostDevice.setFee(ProjectBudgetCost.FEE_PURCHASE); + projectBudgetCostDevice.setType(ProjectBudgetCost.TYPE_DEVICE); + projectBudgetCostDevice.setCostTaxInclude(budgetBean.getCostPurchaseDeviceTaxInclude()); + projectBudgetCostDevice.setCostTaxExclude(budgetBean.getCostPurchaseDeviceTaxExclude()); + projectBudgetCostRepository.saveAndFlush(projectBudgetCostDevice); + + + ProjectBudgetCost projectBudgetCostBuild = new ProjectBudgetCost(); + projectBudgetCostBuild.setProjectId(project.getId()); + projectBudgetCostBuild.setFee(ProjectBudgetCost.FEE_PURCHASE); + projectBudgetCostBuild.setType(ProjectBudgetCost.TYPE_BUILDING); + projectBudgetCostBuild.setCostTaxInclude(budgetBean.getCostPurchaseBuildTaxInclude()); + projectBudgetCostBuild.setCostTaxExclude(budgetBean.getCostPurchaseBuildTaxExclude()); + projectBudgetCostRepository.saveAndFlush(projectBudgetCostBuild); + + ProjectBudgetCost projectBudgetCostService = new ProjectBudgetCost(); + projectBudgetCostService.setProjectId(project.getId()); + projectBudgetCostService.setFee(ProjectBudgetCost.FEE_PURCHASE); + projectBudgetCostService.setType(ProjectBudgetCost.TYPE_SERVICE); + projectBudgetCostService.setCostTaxInclude(budgetBean.getCostPurchaseServiceTaxInclude()); + projectBudgetCostService.setCostTaxExclude(budgetBean.getCostPurchaseServiceTaxExclude()); + projectBudgetCostRepository.saveAndFlush(projectBudgetCostService); + + ProjectBudgetCost projectBudgetCostOther = new ProjectBudgetCost(); + projectBudgetCostOther.setProjectId(project.getId()); + projectBudgetCostOther.setFee(ProjectBudgetCost.FEE_PURCHASE); + projectBudgetCostOther.setType(ProjectBudgetCost.TYPE_OTHER); + projectBudgetCostOther.setCostTaxInclude(budgetBean.getCostPurchaseOtherTaxInclude()); + projectBudgetCostOther.setCostTaxExclude(budgetBean.getCostPurchaseOtherTaxExclude()); + projectBudgetCostRepository.saveAndFlush(projectBudgetCostOther); + + ProjectBudgetCost projectBudgetCostProject = new ProjectBudgetCost(); + projectBudgetCostProject.setProjectId(project.getId()); + projectBudgetCostProject.setFee(ProjectBudgetCost.FEE_PROJECT_MANAGE); + projectBudgetCostProject.setType(ProjectBudgetCost.TYPE_PROJECT_MANAGE); + projectBudgetCostProject.setCostTaxInclude(budgetBean.getCostProjectManageTaxInclude()); + projectBudgetCostProject.setCostTaxExclude(budgetBean.getCostProjectManageTaxExclude()); + projectBudgetCostRepository.saveAndFlush(projectBudgetCostProject); + + ProjectBudgetCost projectBudgetCostOtherOther = new ProjectBudgetCost(); + projectBudgetCostOtherOther.setProjectId(project.getId()); + projectBudgetCostOtherOther.setFee(ProjectBudgetCost.FEE_OTHER); + projectBudgetCostOtherOther.setType(ProjectBudgetCost.TYPE_OTHER_OTHER); + projectBudgetCostOtherOther.setCostTaxInclude(budgetBean.getCostOtherOtherTaxInclude()); + projectBudgetCostOtherOther.setCostTaxExclude(budgetBean.getCostOtherOtherTaxExclude()); + projectBudgetCostRepository.saveAndFlush(projectBudgetCostOtherOther); + + } + private void costManage(Project project, BudgetBean budgetBean) { + ProjectBudgetCostManage projectBudgetCostZijin = new ProjectBudgetCostManage(); + projectBudgetCostZijin.setProjectId(project.getId()); + projectBudgetCostZijin.setType(ProjectBudgetCostManage.TYPE_EXPROPRIATION); + projectBudgetCostZijin.setCostTaxExclude(budgetBean.getCostExpropriationTaxExclude()); + projectBudgetCostManageRepository.saveAndFlush(projectBudgetCostZijin); + + ProjectBudgetCostManage projectBudgetCostManage = new ProjectBudgetCostManage(); + projectBudgetCostManage.setProjectId(project.getId()); + projectBudgetCostManage.setType(ProjectBudgetCostManage.TYPE_COMPANY_MANAGE); + projectBudgetCostManage.setCostTaxExclude(budgetBean.getCostCompanyManageTaxExclude()); + projectBudgetCostManageRepository.saveAndFlush(projectBudgetCostManage); + } + private void income(Project project, BudgetBean budgetBean) { + ProjectBudgetIncome projectBudgetIncomeDevice = new ProjectBudgetIncome(); + projectBudgetIncomeDevice.setProjectId(project.getId()); + projectBudgetIncomeDevice.setType(ProjectBudgetIncome.TYPE_DEVICE); + projectBudgetIncomeDevice.setIncomeTaxInclude(budgetBean.getIncomeDeviceTaxInclude()); + projectBudgetIncomeDevice.setIncomeTaxExclude(budgetBean.getIncomeDeviceTaxExclude()); + projectBudgetIncomeRepository.saveAndFlush(projectBudgetIncomeDevice); + + ProjectBudgetIncome projectBudgetIncomeEngineer = new ProjectBudgetIncome(); + projectBudgetIncomeEngineer.setProjectId(project.getId()); + projectBudgetIncomeEngineer.setType(ProjectBudgetIncome.TYPE_ENGINEER); + projectBudgetIncomeEngineer.setIncomeTaxInclude(budgetBean.getIncomeEngineerTaxInclude()); + projectBudgetIncomeEngineer.setIncomeTaxExclude(budgetBean.getIncomeEngineerTaxExclude()); + projectBudgetIncomeRepository.saveAndFlush(projectBudgetIncomeEngineer); + + ProjectBudgetIncome projectBudgetIncomeService = new ProjectBudgetIncome(); + projectBudgetIncomeService.setProjectId(project.getId()); + projectBudgetIncomeService.setType(ProjectBudgetIncome.TYPE_SERVICE); + projectBudgetIncomeService.setIncomeTaxInclude(budgetBean.getIncomeServiceTaxInclude()); + projectBudgetIncomeService.setIncomeTaxExclude(budgetBean.getIncomeServiceTaxExclude()); + projectBudgetIncomeRepository.saveAndFlush(projectBudgetIncomeService); + } + + + public BudgetBean getBudget(Project project) { + BudgetBean budgetBean = new BudgetBean(); + + List incomes = projectBudgetIncomeRepository.findAllByProjectIdEquals(project.getId()); + + List collect = incomes.stream().filter(d -> d.getType() == ProjectBudgetIncome.TYPE_DEVICE).collect(Collectors.toList()); + if(CollectionUtil.isEmpty(collect)){ + //要么全部,要么没有 + return budgetBean; + } + ProjectBudgetIncome projectBudgetIncomeDevice = collect.get(0); + budgetBean.setIncomeDeviceTaxInclude(projectBudgetIncomeDevice.getIncomeTaxInclude()); + budgetBean.setIncomeDeviceTaxExclude(projectBudgetIncomeDevice.getIncomeTaxExclude()); + + ProjectBudgetIncome projectBudgetIncomeEngineer = incomes.stream().filter(d -> d.getType() == ProjectBudgetIncome.TYPE_ENGINEER).collect(Collectors.toList()).get(0); + budgetBean.setIncomeEngineerTaxInclude(projectBudgetIncomeEngineer.getIncomeTaxInclude()); + budgetBean.setIncomeEngineerTaxExclude(projectBudgetIncomeEngineer.getIncomeTaxExclude()); + + ProjectBudgetIncome projectBudgetIncomeService = incomes.stream().filter(d -> d.getType() == ProjectBudgetIncome.TYPE_SERVICE).collect(Collectors.toList()).get(0); + budgetBean.setIncomeServiceTaxInclude(projectBudgetIncomeService.getIncomeTaxInclude()); + budgetBean.setIncomeServiceTaxExclude(projectBudgetIncomeService.getIncomeTaxExclude()); + + List costs = projectBudgetCostRepository.findAllByProjectIdEquals(project.getId()); + + ProjectBudgetCost projectBudgetCostDevice = costs.stream().filter(d -> d.getType() == ProjectBudgetCost.TYPE_DEVICE).collect(Collectors.toList()).get(0); + budgetBean.setCostPurchaseDeviceTaxInclude(projectBudgetCostDevice.getCostTaxInclude()); + budgetBean.setCostPurchaseDeviceTaxExclude(projectBudgetCostDevice.getCostTaxExclude()); + + ProjectBudgetCost projectBudgetCostBuild = costs.stream().filter(d -> d.getType() == ProjectBudgetCost.TYPE_BUILDING).collect(Collectors.toList()).get(0); + budgetBean.setCostPurchaseBuildTaxInclude(projectBudgetCostBuild.getCostTaxInclude()); + budgetBean.setCostPurchaseBuildTaxExclude(projectBudgetCostBuild.getCostTaxExclude()); + + ProjectBudgetCost projectBudgetCostService = costs.stream().filter(d -> d.getType() == ProjectBudgetCost.TYPE_SERVICE).collect(Collectors.toList()).get(0); + budgetBean.setCostPurchaseServiceTaxInclude(projectBudgetCostService.getCostTaxInclude()); + budgetBean.setCostPurchaseServiceTaxExclude(projectBudgetCostService.getCostTaxExclude()); + + ProjectBudgetCost projectBudgetCostOther = costs.stream().filter(d -> d.getType() == ProjectBudgetCost.TYPE_OTHER).collect(Collectors.toList()).get(0); + budgetBean.setCostPurchaseOtherTaxInclude(projectBudgetCostOther.getCostTaxInclude()); + budgetBean.setCostPurchaseOtherTaxExclude(projectBudgetCostOther.getCostTaxExclude()); + + ProjectBudgetCost projectBudgetCostProjectManage = costs.stream().filter(d -> d.getType() == ProjectBudgetCost.TYPE_PROJECT_MANAGE).collect(Collectors.toList()).get(0); + budgetBean.setCostProjectManageTaxInclude(projectBudgetCostProjectManage.getCostTaxInclude()); + budgetBean.setCostProjectManageTaxExclude(projectBudgetCostProjectManage.getCostTaxExclude()); + + ProjectBudgetCost projectBudgetCostOtherOther = costs.stream().filter(d -> d.getType() == ProjectBudgetCost.TYPE_OTHER_OTHER).collect(Collectors.toList()).get(0); + budgetBean.setCostOtherOtherTaxInclude(projectBudgetCostOtherOther.getCostTaxInclude()); + budgetBean.setCostOtherOtherTaxExclude(projectBudgetCostOtherOther.getCostTaxExclude()); + + List manages = projectBudgetCostManageRepository.findAllByProjectIdEquals(project.getId()); + ProjectBudgetCostManage costManageExpropriation = manages.stream().filter(d -> d.getType() == ProjectBudgetCostManage.TYPE_EXPROPRIATION).collect(Collectors.toList()).get(0); + budgetBean.setCostExpropriationTaxExclude(costManageExpropriation.getCostTaxExclude()); + ProjectBudgetCostManage costManageCompany = manages.stream().filter(d -> d.getType() == ProjectBudgetCostManage.TYPE_COMPANY_MANAGE).collect(Collectors.toList()).get(0); + budgetBean.setCostCompanyManageTaxExclude(costManageCompany.getCostTaxExclude()); + + return budgetBean; + } +}