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 140aad3..dc36cc8 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -455,6 +455,7 @@ public class ProjectController extends BaseController { public String budgetEditSave(Project project, ProjectBudget projectBudget, BindingResult bindingResult, BudgetBean budgetBean, Map model) { Project projectInDb = projectService.getProject(project.getId()); projectBudgetService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT, projectBudget); + projectBudgetService.saveProjectBudget(projectInDb, projectBudget); return "redirect:/project/list"; } diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 5693d54..01de437 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -874,6 +874,8 @@ public class ProjectBudgetService { budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING, projectBudget); + saveProjectBudget(projectInDb, projectBudget); + saveProjectExtend(projectInDb); budgetApprove(approveStatusBudget, projectInDb, admin); @@ -922,7 +924,6 @@ public class ProjectBudgetService { p.setApproveStatusBudget(approveStatusEnum.getApproveStatus()); p = projectRepository.saveAndFlush(p); - saveProjectBudget(p, projectBudget); //清空重新保存概算信息 clearBudget(p); saveBudget(p, budgetBean); @@ -933,10 +934,11 @@ public class ProjectBudgetService { return p; } - private void saveProjectBudget(Project p, ProjectBudget budget) { + public void saveProjectBudget(Project p, ProjectBudget budget) { ProjectBudget projectBudget = projectBudgetRepository.findFirstByProjectId(p.getId()); BeanUtils.copyProperties(budget, projectBudget, "id"); - + saveProjectBudgetByCal(p, projectBudget); + projectBudget.setTypeDescBudget(TypeEnum.parseType(projectBudget.getTypeBudget()).getTypeDesc()); projectBudget.setUnderwrittenModeStrBudget(UnderwrittenModeEnum.parseUnderwrittenMode(projectBudget.getUnderwrittenModeBudget()).getUnderwrittenModeStr()); projectBudget.setCooperateTypeStrBudget(CooperateTypeEnum.parseCooperateType(projectBudget.getCooperateTypeBudget()).getCooperateTypeStr()); @@ -948,6 +950,41 @@ public class ProjectBudgetService { projectBudgetRepository.save(projectBudget); } + private void saveProjectBudgetByCal(Project p, ProjectBudget budget) { + List projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(p); + ProjectUnderwrittenPlanStatisticBean bean = projectBudgetService.getProjectUnderwrittenPlanStatisticBean(projectBudgetPlanDetails); + budget.setAdvanceInterestAmountBudget(bean.getCapitalInterest()); + budget.setAdvancePeakAmountBudget(bean.getAmount()); + + BudgetBean budgetBean = projectBudgetService.getBudget(p); + BigDecimal grossProfit = budgetBean.getProjectGrossProfit(); + if (grossProfit != null) { + budget.setGrossProfitBudget(grossProfit); + budget.setGrossProfitMarginBudget(budgetBean.getProjectGrossProfitRate()); + } + + List projectBudgetIncomeDetails = projectBudgetIncomeDetailRepository.findAllByProjectIdEquals(p.getId()); + if (projectBudgetIncomeDetails.size() > 0) { + BigDecimal contractAmount = projectBudgetIncomeDetails.stream().map(ProjectBudgetIncomeDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add); + budget.setContractAmountBudget(contractAmount); + } + + List projectBudgetCostDetails = projectBudgetCostDetailRepository.findAllByProjectIdEquals(p.getId()); + if (projectBudgetCostDetails.size() > 0) { + ProcurementType huizhiType = procurementTypeRepository.findByName("汇智产品"); + BigDecimal huizhi = projectBudgetCostDetails.stream().filter(a -> a.getCategory() == huizhiType.getId()).map(ProjectBudgetCostDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add); + budget.setHuizhiProductAmountBudget(huizhi); + ProcurementType huazhiType = procurementTypeRepository.findByName("华智产品"); + BigDecimal huazhi = projectBudgetCostDetails.stream().filter(a -> a.getCategory() == huazhiType.getId()).map(ProjectBudgetCostDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add); + budget.setHuazhiProductAmountBudget(huazhi); + ProcurementType huasanType = procurementTypeRepository.findByName("华三产品"); + BigDecimal huasan = projectBudgetCostDetails.stream().filter(a -> a.getCategory() == huasanType.getId()).map(ProjectBudgetCostDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add); + budget.setHuasanProductAmountBudget(huasan); + BigDecimal other = projectBudgetCostDetails.stream().filter(a -> a.getCategory() != huizhiType.getId() && a.getCategory() != huazhiType.getId() && a.getCategory() != huasanType.getId()).map(ProjectBudgetCostDetail::getTotalTaxInclude).reduce(new BigDecimal(0), BigDecimal::add); + budget.setZiguangOtherAmountBudget(other); + } + } + private void saveProjectExtend(Project p) { ProjectExtend extend = projectExtendRepository.findByProjectId(p.getId()); if (extend == null) {