From f7144673cc88252f92b604b5abdfa5689b4dbd96 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Mon, 28 Oct 2024 20:57:12 +0800 Subject: [PATCH] =?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=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work/service/ProjectBudgetService.java | 66 +++++++++++-------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 09568ba..34774ed 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -660,21 +660,7 @@ 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 projectManageCost = new BigDecimal(0); BigDecimal earnestMoneyCost = new BigDecimal(0); BigDecimal deviceCost = new BigDecimal(0); @@ -694,26 +680,17 @@ public class ProjectBudgetService { if(CollectionUtil.isNotEmpty(projectBudgetPlanDetails)){ for (ProjectBudgetPlanDetail budgetPlan : projectBudgetPlanDetails) { - 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()); if (budgetPlan.getEngineerCost()!=null) { 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); + projectCost = projectCost.add(budgetPlan.getProjectCost()); + serviceCost = serviceCost.add(budgetPlan.getServiceCost()); + otherCost = otherCost.add(budgetPlan.getOtherCost()); totalCost = totalCost.add(budgetPlan.getTotalCost()); saleIncome = saleIncome.add(budgetPlan.getSaleIncome()); earnestMoneyIncome = earnestMoneyIncome.add(budgetPlan.getEarnestMoneyIncome()); @@ -759,6 +736,21 @@ public class ProjectBudgetService { List budgetCostProjectManageDetail, 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 = calDeviceCost(budgetCostDetail); BigDecimal engineerCost = calEngineerCost(budgetCostDetail); BigDecimal projectManageCost = calProjectManageCost(budgetCostProjectManageDetail); @@ -770,9 +762,25 @@ public class ProjectBudgetService { BigDecimal capitalInterest = new BigDecimal(0); BigDecimal underwrittenPlan = new BigDecimal(0); BigDecimal repaymentPlan = new BigDecimal(0); - + BigDecimal projectCost = new BigDecimal(0); + BigDecimal serviceCost = new BigDecimal(0); + BigDecimal otherCost = new BigDecimal(0); if(CollectionUtil.isNotEmpty(projectBudgetPlanDetails)){ for (ProjectBudgetPlanDetail budgetPlan : projectBudgetPlanDetails) { + String month = budgetPlan.getMonth(); + + Map projectPayments = monthlyProjectPaymentSum.getOrDefault(month, Collections.emptyMap()); + BigDecimal projectCostTemp = projectPayments.getOrDefault("2", BigDecimal.ZERO); + budgetPlan.setProjectCost(projectCostTemp); + projectCost = projectCost.add(projectCostTemp); + + BigDecimal serviceCostTemp = projectPayments.getOrDefault("3", BigDecimal.ZERO); + budgetPlan.setServiceCost(serviceCostTemp); + serviceCost = serviceCost.add(serviceCostTemp); + + BigDecimal otherCostTemp = projectPayments.getOrDefault("4", BigDecimal.ZERO); + budgetPlan.setOtherCost(otherCostTemp); + otherCost=otherCost.add(otherCostTemp); earnestMoneyCost = earnestMoneyCost.add(budgetPlan.getEarnestMoneyCost()); earnestMoneyIncome = earnestMoneyIncome.add(budgetPlan.getEarnestMoneyIncome()); capitalInterest = capitalInterest.add(budgetPlan.getCapitalInterest()); @@ -798,7 +806,9 @@ public class ProjectBudgetService { projectBudgetPlanDetail.setEarnestMoneyIncome(earnestMoneyIncome); projectBudgetPlanDetail.setTotalIncome(totalIncome); projectBudgetPlanDetail.setFundBalance(fundBalance); - + projectBudgetPlanDetail.setProjectCost(projectCost); + projectBudgetPlanDetail.setServiceCost(serviceCost); // 设置服务成本 + projectBudgetPlanDetail.setOtherCost(otherCost); // 设置其他成本 projectBudgetPlanDetail.setCapitalInterest(capitalInterest); projectBudgetPlanDetail.setUnderwrittenPlan(underwrittenPlan); projectBudgetPlanDetail.setRepaymentPlan(repaymentPlan);