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);