From acf0b64c96ca1a821a4ed799cbe02e5373fd11fb Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Mon, 28 Oct 2024 10:59:08 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat(project):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BB=98=E6=AC=BE=E8=AE=A1=E5=88=92=E5=8A=9F=E8=83=BD=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B5=84=E9=87=91=E8=AE=A1=E5=88=92=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ProjectBudgetPayPlan 相关实体类和 Repository - 在 ProjectBudgetService 中添加付款计划相关方法 - 修改资金计划计算逻辑,支持按月汇总付款计划- 在 ProjectController 中添加付款计划保存和查询接口 - 优化 ProjectGrossProfit 计算方法 --- .../cn/palmte/work/bean/IncomeCostBean.java | 46 ++++++---- .../controller/backend/ProjectController.java | 26 ++++++ .../work/model/ProjectBudgetPayPlan.java | 12 +++ .../work/model/ProjectBudgetPayPlanBase.java | 92 +++++++++++++++++++ .../model/ProjectBudgetPayPlanRepository.java | 12 +++ .../work/model/ProjectBudgetPlanDetail.java | 12 +++ .../work/service/ProjectBudgetService.java | 52 +++++++++-- 7 files changed, 228 insertions(+), 24 deletions(-) create mode 100644 src/main/java/cn/palmte/work/model/ProjectBudgetPayPlan.java create mode 100644 src/main/java/cn/palmte/work/model/ProjectBudgetPayPlanBase.java create mode 100644 src/main/java/cn/palmte/work/model/ProjectBudgetPayPlanRepository.java diff --git a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java index f5973ce..ddda8bb 100644 --- a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java +++ b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java @@ -45,7 +45,7 @@ public abstract class IncomeCostBean { * 服务采购成本含税 */ private BigDecimal costPurchaseServiceTaxInclude; - /*private BigDecimal costProjectManageTaxInclude;*/ + /* private BigDecimal costProjectManageTaxInclude; */ /** * 其他采购成本含税 */ @@ -264,7 +264,6 @@ public abstract class IncomeCostBean { this.costPurchaseServiceTaxInclude = costPurchaseServiceTaxInclude; } - /** * 项目管理成本含税=项目管理成本不含税 */ @@ -272,9 +271,12 @@ public abstract class IncomeCostBean { return getCostProjectManageTaxExclude(); } - /*public void setCostProjectManageTaxInclude(BigDecimal costProjectManageTaxInclude) { - this.costProjectManageTaxInclude = costProjectManageTaxInclude; - }*/ + /* + * public void setCostProjectManageTaxInclude(BigDecimal + * costProjectManageTaxInclude) { + * this.costProjectManageTaxInclude = costProjectManageTaxInclude; + * } + */ public BigDecimal getCostPurchaseOtherTaxInclude() { return handleSpecial(costPurchaseOtherTaxInclude); @@ -346,7 +348,6 @@ public abstract class IncomeCostBean { this.costOtherOtherTaxExclude = costOtherOtherTaxExclude; } - public BigDecimal getCostExpropriationTaxExclude() { return handleSpecial(costExpropriationTaxExclude); } @@ -377,7 +378,6 @@ public abstract class IncomeCostBean { return costExpropriationTaxExclude.add(costCompanyManageTaxExclude); } - /** * 计算所有的含税收入 */ @@ -485,7 +485,8 @@ public abstract class IncomeCostBean { */ public BigDecimal getProjectGrossProfitA() { BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude(); - BigDecimal costTotalTaxExclude = getCostPurchaseDeviceTaxExclude().add(getCostPurchaseBuildTaxExclude()).add(getCostPurchaseServiceTaxExclude()).add(getCostPurchaseOtherTaxExclude()); + BigDecimal costTotalTaxExclude = getCostPurchaseDeviceTaxExclude().add(getCostPurchaseBuildTaxExclude()) + .add(getCostPurchaseServiceTaxExclude()).add(getCostPurchaseOtherTaxExclude()); if (null == incomeTotalTaxExclude) { return handleSpecial(null); } @@ -514,18 +515,31 @@ public abstract class IncomeCostBean { /** * 计算项目毛利 - * 收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税) + * 项目毛利B=项目毛利A-财务费用-项目管理费用 */ public BigDecimal getProjectGrossProfit() { - BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude(); - BigDecimal costTotalTaxExclude = getCostTotalTaxExclude(); - BigDecimal costExpropriationTaxExclude = getCostExpropriationTaxExclude(); - if (null == incomeTotalTaxExclude || null == costTotalTaxExclude || null == costExpropriationTaxExclude) { + // BigDecimal incomeTotalTaxExclude = getIncomeTotalTaxExclude(); + // BigDecimal costTotalTaxExclude = getCostTotalTaxExclude(); + // BigDecimal costExpropriationTaxExclude = getCostExpropriationTaxExclude(); + // if (null == incomeTotalTaxExclude || null == costTotalTaxExclude || null == + // costExpropriationTaxExclude) { + // return handleSpecial(null); + // } + // return incomeTotalTaxExclude + // .subtract(costTotalTaxExclude) + // .subtract(costExpropriationTaxExclude); + + BigDecimal projectGrossProfitA = getProjectGrossProfitA(); // 项目毛利A + BigDecimal costExpropriationTaxExclude = getCostExpropriationTaxExclude(); // 财务费用 + BigDecimal costProjectManageTaxExclude = getCostProjectManageTaxExclude(); // 项目管理费用 + + if (null == projectGrossProfitA || null == costExpropriationTaxExclude || null == costProjectManageTaxExclude) { return handleSpecial(null); } - return incomeTotalTaxExclude - .subtract(costTotalTaxExclude) - .subtract(costExpropriationTaxExclude); + + return projectGrossProfitA + .subtract(costExpropriationTaxExclude) + .subtract(costProjectManageTaxExclude); } /** 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 69aae1a..4c4dbe4 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -402,6 +402,9 @@ public class ProjectController extends BaseController { //收入计划 List budgetIncomePlanDetail = projectBudgetService.getBudgetIncomePlanDetail(project); model.put("incomePlanDetails", budgetIncomePlanDetail); + //付款计划表 + List budgetPayPlan = projectBudgetService.getBudgetPayPlan(project); + model.put("budgetPayPlan", budgetPayPlan); BigDecimal incomePlanTotalReceiveAmount = projectBudgetService.getBudgetIncomePlanReceiveAmount(project); model.put("incomePlanTotal", incomePlanTotalReceiveAmount); //成本明细 @@ -594,6 +597,26 @@ public class ProjectController extends BaseController { return ResponseMsg.buildSuccessMsg("成功"); } + /** + * 保存付款计划表 + */ + @RequestMapping("/budgetEditSaveBudgetPayPlan") + @ResponseBody + public ResponseMsg budgetEditSaveBudgetPayPlan(@RequestBody String body) { + JSONObject jsonObject = JSON.parseObject(body); + JSONArray details = jsonObject.getJSONArray(DETAILS); + List detailList = new ArrayList<>(details.size()); + for (int i = 0; i < details.size(); i++) { + ProjectBudgetPayPlan detail = details.getObject(i, ProjectBudgetPayPlan.class); + detailList.add(detail); + } + + Project project = projectService.getProject(jsonObject.getInteger(PROJECT_ID)); + + projectBudgetService.saveBudgetPayPlan(project, detailList); + + return ResponseMsg.buildSuccessMsg("成功"); + } /** @@ -696,6 +719,9 @@ public class ProjectController extends BaseController { model.put("incomePlanDetails", budgetIncomePlanDetail); BigDecimal incomePlanTotalReceiveAmount = projectBudgetService.getBudgetIncomePlanReceiveAmount(project); model.put("incomePlanTotal", incomePlanTotalReceiveAmount); + //付款计划表 + List budgetPayPlan = projectBudgetService.getBudgetPayPlan(project); + model.put("budgetPayPlan", budgetPayPlan); //成本明细 List budgetCostDetail = projectBudgetService.getBudgetCostDetail(project); model.put("costDetails", budgetCostDetail); diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlan.java b/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlan.java new file mode 100644 index 0000000..5a24531 --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlan.java @@ -0,0 +1,12 @@ +package cn.palmte.work.model; + +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * 项目付款计划表 + */ +@Entity +@Table(name = "project_budget_pay_plan") +public class ProjectBudgetPayPlan extends ProjectBudgetPayPlanBase { +} \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlanBase.java b/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlanBase.java new file mode 100644 index 0000000..99b3eb1 --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlanBase.java @@ -0,0 +1,92 @@ +package cn.palmte.work.model; + +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.math.BigDecimal; +import java.util.Date; + +@MappedSuperclass +public class ProjectBudgetPayPlanBase { + + /** + * id + */ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @GenericGenerator(name = "persistenceGenerator", strategy = "increment") + private Integer id; + + @Column(name = "project_id") + private int projectId; + + @Column(name = "pay_point") + private String payPoint; + + @Column(name = "pay_time") + @Temporal(TemporalType.TIMESTAMP) + private Date payTime; + + @Column(name = "pay_amount") + private BigDecimal payAmount; + @Column(name = "pay_project") + private String payProject; + @Column(name = "supplier") + private String supplier; + + 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 String getPayPoint() { + return payPoint; + } + + public void setPayPoint(String payPoint) { + this.payPoint = payPoint; + } + + public Date getPayTime() { + return payTime; + } + + public void setPayTime(Date payTime) { + this.payTime = payTime; + } + + public BigDecimal getPayAmount() { + return payAmount; + } + + public void setPayAmount(BigDecimal payAmount) { + this.payAmount = payAmount; + } + + public String getPayProject() { + return payProject; + } + + public void setPayProject(String payProject) { + this.payProject = payProject; + } + + public String getSupplier() { + return supplier; + } + + public void setSupplier(String supplier) { + this.supplier = supplier; + } +} \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlanRepository.java b/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlanRepository.java new file mode 100644 index 0000000..d6f121a --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetPayPlanRepository.java @@ -0,0 +1,12 @@ +package cn.palmte.work.model; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.math.BigDecimal; +import java.util.List; + +public interface ProjectBudgetPayPlanRepository extends JpaRepository { + List findAllByProjectIdEquals(int id); + +} diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java b/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java index 8f4418a..20a20be 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java @@ -1,11 +1,23 @@ package cn.palmte.work.model; +import lombok.Data; + import javax.persistence.*; +import java.math.BigDecimal; /** * 资金计划明细表 */ @Entity @Table(name = "project_budget_plan_detail") +@Data public class ProjectBudgetPlanDetail extends ProjectBudgetPlanDetailBase{ + //服务支出 + private BigDecimal serviceCost; + // private BigDecimal deviceCost; + + // private BigDecimal projectCost; + //其它支出 + private BigDecimal otherCost; + } \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 3f3b0d5..d73a5dc 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -15,6 +15,7 @@ import top.jfunc.common.utils.CollectionUtil; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -38,6 +39,8 @@ public class ProjectBudgetService { @Autowired private ProjectBudgetIncomePlanDetailRepository projectBudgetIncomePlanDetailRepository; @Autowired + private ProjectBudgetPayPlanRepository projectBudgetPayPlanRepository; + @Autowired private ProjectBudgetIncomePlanDetailTempRepository projectBudgetIncomePlanDetailTempRepository; @Autowired private ProjectBudgetCostDetailRepository projectBudgetCostDetailRepository; @@ -656,10 +659,25 @@ public class ProjectBudgetService { * 根据每个月的计算资金计划的总 */ public ProjectBudgetPlanDetail getProjectBudgetPlanDetailTotal(Project project, List projectBudgetPlanDetails) { + List budgetPayPlan = projectBudgetService.getBudgetPayPlan(project); + + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); + + Map> monthlyProjectPaymentSum = budgetPayPlan.stream() + .collect(Collectors.groupingBy( + plan -> formatter.format(plan.getPayTime()), // 将 Date 转换为 yyyy-MM 格式的字符串 + Collectors.groupingBy( + ProjectBudgetPayPlan::getPayProject, + Collectors.mapping( + ProjectBudgetPayPlan::getPayAmount, + Collectors.reducing(BigDecimal.ZERO, BigDecimal::add) + ) + ) + )); BigDecimal deviceCost = new BigDecimal(0); BigDecimal engineerCost = new BigDecimal(0); - BigDecimal projectManageCost = new BigDecimal(0); - BigDecimal earnestMoneyCost = new BigDecimal(0); + BigDecimal serviceCost = new BigDecimal(0); + BigDecimal otherCost = new BigDecimal(0); BigDecimal totalCost = new BigDecimal(0); BigDecimal saleIncome = new BigDecimal(0); BigDecimal earnestMoneyIncome = new BigDecimal(0); @@ -672,10 +690,14 @@ public class ProjectBudgetService { if(CollectionUtil.isNotEmpty(projectBudgetPlanDetails)){ for (ProjectBudgetPlanDetail budgetPlan : projectBudgetPlanDetails) { - deviceCost = deviceCost.add(budgetPlan.getDeviceCost()); - engineerCost = engineerCost.add(budgetPlan.getEngineerCost()); - projectManageCost = projectManageCost.add(budgetPlan.getProjectManageCost()); - earnestMoneyCost = earnestMoneyCost.add(budgetPlan.getEarnestMoneyCost()); + String month = budgetPlan.getMonth(); + + Map projectPayments = monthlyProjectPaymentSum.getOrDefault(month, Collections.emptyMap()); + + deviceCost = deviceCost.add(projectPayments.getOrDefault("设备成本", BigDecimal.ZERO)); + engineerCost = engineerCost.add(projectPayments.getOrDefault("工程成本", BigDecimal.ZERO)); + serviceCost = serviceCost.add(projectPayments.getOrDefault("服务成本", BigDecimal.ZERO)); + otherCost = otherCost.add(projectPayments.getOrDefault("其他成本", BigDecimal.ZERO)); totalCost = totalCost.add(budgetPlan.getTotalCost()); saleIncome = saleIncome.add(budgetPlan.getSaleIncome()); earnestMoneyIncome = earnestMoneyIncome.add(budgetPlan.getEarnestMoneyIncome()); @@ -695,8 +717,8 @@ public class ProjectBudgetService { projectBudgetPlanDetail.setMonth("合计"); projectBudgetPlanDetail.setDeviceCost(deviceCost); projectBudgetPlanDetail.setEngineerCost(engineerCost); - projectBudgetPlanDetail.setProjectManageCost(projectManageCost); - projectBudgetPlanDetail.setEarnestMoneyCost(earnestMoneyCost); + projectBudgetPlanDetail.setServiceCost(serviceCost); // 设置服务成本 + projectBudgetPlanDetail.setOtherCost(otherCost); // 设置其他成本 projectBudgetPlanDetail.setTotalCost(totalCost); projectBudgetPlanDetail.setSaleIncome(saleIncome); projectBudgetPlanDetail.setEarnestMoneyIncome(earnestMoneyIncome); @@ -1300,4 +1322,18 @@ public class ProjectBudgetService { temp.setRemark((String) o1); costDetailTempList.add(temp); } + + public List getBudgetPayPlan(Project project) { + return projectBudgetPayPlanRepository.findAllByProjectIdEquals(project.getId()); + } + + public void saveBudgetPayPlan(Project project, List detailList) { + if(CollectionUtil.isNotEmpty(detailList)){ + for (ProjectBudgetPayPlan temp : detailList) { + temp.setProjectId(project.getId()); + // temp.setUnderwrittenTaxRate(project.getUnderwrittenTaxRate()); + } + projectBudgetPayPlanRepository.save(detailList); + } + } } From c8169c50930aab9363175b79e59ecc349634121d Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Mon, 28 Oct 2024 11:30:42 +0800 Subject: [PATCH 2/5] =?UTF-8?q?refactor(budget):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E9=A2=84=E7=AE=97=E7=BB=9F=E8=AE=A1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 IncomeCostBean 中的成本项目管理税金相关计算 - 在 ProjectBudgetPlanDetail 中添加服务支出和其他支出的 transient 字段 - 更新 ProjectBudgetService 中的月度预算统计逻辑,增加项目管理成本和定金成本的计算 --- src/main/java/cn/palmte/work/bean/IncomeCostBean.java | 6 +++--- .../java/cn/palmte/work/model/ProjectBudgetPlanDetail.java | 3 +++ .../java/cn/palmte/work/service/ProjectBudgetService.java | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java index ddda8bb..09f418b 100644 --- a/src/main/java/cn/palmte/work/bean/IncomeCostBean.java +++ b/src/main/java/cn/palmte/work/bean/IncomeCostBean.java @@ -425,13 +425,13 @@ public abstract class IncomeCostBean { BigDecimal costPurchaseBuildTaxInclude = getCostPurchaseBuildTaxInclude(); BigDecimal costPurchaseServiceTaxInclude = getCostPurchaseServiceTaxInclude(); BigDecimal costPurchaseOtherTaxInclude = getCostPurchaseOtherTaxInclude(); - BigDecimal costProjectManageTaxInclude = getCostProjectManageTaxInclude(); + // BigDecimal costProjectManageTaxInclude = getCostProjectManageTaxInclude(); BigDecimal costOtherOtherTaxInclude = getCostOtherOtherTaxInclude(); if (null == costPurchaseDeviceTaxInclude || null == costPurchaseBuildTaxInclude || null == costPurchaseServiceTaxInclude || null == costPurchaseOtherTaxInclude - || null == costProjectManageTaxInclude + // || null == costProjectManageTaxInclude || null == costOtherOtherTaxInclude) { return handleSpecial(null); } @@ -439,7 +439,7 @@ public abstract class IncomeCostBean { .add(costPurchaseBuildTaxInclude) .add(costPurchaseServiceTaxInclude) .add(costPurchaseOtherTaxInclude) - .add(costProjectManageTaxInclude) + // .add(costProjectManageTaxInclude) .add(costOtherOtherTaxInclude); } diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java b/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java index 20a20be..9ef6a9c 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java @@ -12,12 +12,15 @@ import java.math.BigDecimal; @Table(name = "project_budget_plan_detail") @Data public class ProjectBudgetPlanDetail extends ProjectBudgetPlanDetailBase{ + //服务支出 + @Transient private BigDecimal serviceCost; // private BigDecimal deviceCost; // private BigDecimal projectCost; //其它支出 + @Transient private BigDecimal otherCost; } \ No newline at end of file diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index d73a5dc..fa2ce87 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -674,6 +674,8 @@ public class ProjectBudgetService { ) ) )); + BigDecimal projectManageCost = new BigDecimal(0); + BigDecimal earnestMoneyCost = new BigDecimal(0); BigDecimal deviceCost = new BigDecimal(0); BigDecimal engineerCost = new BigDecimal(0); BigDecimal serviceCost = new BigDecimal(0); @@ -694,6 +696,8 @@ public class ProjectBudgetService { Map projectPayments = monthlyProjectPaymentSum.getOrDefault(month, Collections.emptyMap()); + projectManageCost = projectManageCost.add(budgetPlan.getProjectManageCost()); + earnestMoneyCost = earnestMoneyCost.add(budgetPlan.getEarnestMoneyCost()); deviceCost = deviceCost.add(projectPayments.getOrDefault("设备成本", BigDecimal.ZERO)); engineerCost = engineerCost.add(projectPayments.getOrDefault("工程成本", BigDecimal.ZERO)); serviceCost = serviceCost.add(projectPayments.getOrDefault("服务成本", BigDecimal.ZERO)); @@ -719,6 +723,8 @@ public class ProjectBudgetService { projectBudgetPlanDetail.setEngineerCost(engineerCost); projectBudgetPlanDetail.setServiceCost(serviceCost); // 设置服务成本 projectBudgetPlanDetail.setOtherCost(otherCost); // 设置其他成本 + projectBudgetPlanDetail.setProjectManageCost(projectManageCost); + projectBudgetPlanDetail.setEarnestMoneyCost(earnestMoneyCost); projectBudgetPlanDetail.setTotalCost(totalCost); projectBudgetPlanDetail.setSaleIncome(saleIncome); projectBudgetPlanDetail.setEarnestMoneyIncome(earnestMoneyIncome); From eb6ff2c2979b719435b53418a8c8afb6df4ff44b Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Mon, 28 Oct 2024 14:24:16 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat=20=E6=94=B6=E5=85=A5=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8:=201:=E6=94=B9=E4=B8=BA=E6=89=8B=E5=8A=A8=E8=BE=93?= =?UTF-8?q?=E5=85=A5=20=E4=B8=8D=E5=86=8D=E7=94=B1=E5=8D=95=E4=BB=B7*?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E8=BF=9B=E8=A1=8C=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work/model/ProjectBudgetIncomeDetailBase.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetailBase.java b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetailBase.java index c1b6e8e..dfa3035 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetailBase.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetailBase.java @@ -30,6 +30,12 @@ public class ProjectBudgetIncomeDetailBase { private String param; + public void setTotalTaxInclude(BigDecimal totalTaxInclude) { + this.totalTaxInclude = totalTaxInclude; + } + + private BigDecimal totalTaxInclude; + private String unit; private BigDecimal amount; private BigDecimal price; @@ -130,10 +136,15 @@ public class ProjectBudgetIncomeDetailBase { } public BigDecimal getTotalTaxInclude(){ + // 之前含税总金额为单价*价格 后续更改为手动数据 兼容之前版本数据 + if (totalTaxInclude!=null){ + return totalTaxInclude; + } if(null == price){ return BigDecimal.ZERO; } return price.multiply(amount); + // return totalIn } public BigDecimal getTotalTaxExclude(){ BigDecimal totalTaxInclude = getTotalTaxInclude(); From 3bbf91127acd2341582e8c1b81ccbf50fcdbfc1d Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Mon, 28 Oct 2024 14:50:07 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat=20=E6=94=B6=E5=85=A5=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8:=201:=E8=B5=84=E9=87=91=E8=AE=A1=E5=88=92=E8=A1=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work/model/ProjectBudgetPlanDetail.java | 4 ++-- .../work/service/ProjectBudgetService.java | 20 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java b/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java index 9ef6a9c..5cc0e05 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetPlanDetail.java @@ -17,8 +17,8 @@ public class ProjectBudgetPlanDetail extends ProjectBudgetPlanDetailBase{ @Transient private BigDecimal serviceCost; // private BigDecimal deviceCost; - - // private BigDecimal projectCost; + @Transient + private BigDecimal projectCost; //其它支出 @Transient private BigDecimal otherCost; diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index fa2ce87..47781ff 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -677,6 +677,7 @@ public class ProjectBudgetService { BigDecimal projectManageCost = new BigDecimal(0); BigDecimal earnestMoneyCost = new BigDecimal(0); BigDecimal deviceCost = new BigDecimal(0); + BigDecimal projectCost = new BigDecimal(0); BigDecimal engineerCost = new BigDecimal(0); BigDecimal serviceCost = new BigDecimal(0); BigDecimal otherCost = new BigDecimal(0); @@ -695,13 +696,21 @@ public class ProjectBudgetService { String month = budgetPlan.getMonth(); Map projectPayments = monthlyProjectPaymentSum.getOrDefault(month, Collections.emptyMap()); - + deviceCost=deviceCost.add(budgetPlan.getDeviceCost()); projectManageCost = projectManageCost.add(budgetPlan.getProjectManageCost()); earnestMoneyCost = earnestMoneyCost.add(budgetPlan.getEarnestMoneyCost()); - deviceCost = deviceCost.add(projectPayments.getOrDefault("设备成本", BigDecimal.ZERO)); - engineerCost = engineerCost.add(projectPayments.getOrDefault("工程成本", BigDecimal.ZERO)); - serviceCost = serviceCost.add(projectPayments.getOrDefault("服务成本", BigDecimal.ZERO)); - otherCost = otherCost.add(projectPayments.getOrDefault("其他成本", BigDecimal.ZERO)); + engineerCost = engineerCost.add(budgetPlan.getEngineerCost()); + BigDecimal projectCostTemp = projectPayments.getOrDefault("工程成本", BigDecimal.ZERO); + budgetPlan.setProjectCost(projectCostTemp); + projectCost = projectCost.add(projectCostTemp); + + BigDecimal serviceCostTemp = projectPayments.getOrDefault("服务成本", BigDecimal.ZERO); + budgetPlan.setServiceCost(serviceCostTemp); + serviceCost = serviceCost.add(serviceCostTemp); + + BigDecimal otherCostTemp = projectPayments.getOrDefault("其他成本", BigDecimal.ZERO); + budgetPlan.setOtherCost(otherCostTemp); + otherCost = otherCost.add(otherCostTemp); totalCost = totalCost.add(budgetPlan.getTotalCost()); saleIncome = saleIncome.add(budgetPlan.getSaleIncome()); earnestMoneyIncome = earnestMoneyIncome.add(budgetPlan.getEarnestMoneyIncome()); @@ -721,6 +730,7 @@ public class ProjectBudgetService { projectBudgetPlanDetail.setMonth("合计"); projectBudgetPlanDetail.setDeviceCost(deviceCost); projectBudgetPlanDetail.setEngineerCost(engineerCost); + projectBudgetPlanDetail.setProjectCost(projectCost); projectBudgetPlanDetail.setServiceCost(serviceCost); // 设置服务成本 projectBudgetPlanDetail.setOtherCost(otherCost); // 设置其他成本 projectBudgetPlanDetail.setProjectManageCost(projectManageCost); From 4e13d9ca7b8c9d1010f213fa5d50c182f31dabf6 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Mon, 28 Oct 2024 15:48:34 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat=20=E6=94=B6=E5=85=A5=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8:=201:=E8=B5=84=E9=87=91=E8=AE=A1=E5=88=92=E8=A1=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/palmte/work/service/ProjectBudgetService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 47781ff..7994279 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -699,7 +699,9 @@ public class ProjectBudgetService { deviceCost=deviceCost.add(budgetPlan.getDeviceCost()); projectManageCost = projectManageCost.add(budgetPlan.getProjectManageCost()); earnestMoneyCost = earnestMoneyCost.add(budgetPlan.getEarnestMoneyCost()); - engineerCost = engineerCost.add(budgetPlan.getEngineerCost()); + if (budgetPlan.getEngineerCost()!=null) { + engineerCost = engineerCost.add(budgetPlan.getEngineerCost()); + } BigDecimal projectCostTemp = projectPayments.getOrDefault("工程成本", BigDecimal.ZERO); budgetPlan.setProjectCost(projectCostTemp); projectCost = projectCost.add(projectCostTemp);