项目预算基本信息同步预算计算方式

master
OathK1per 2023-08-29 15:06:58 +08:00
parent 3b36524aca
commit 1eadf7fd26
2 changed files with 41 additions and 3 deletions

View File

@ -455,6 +455,7 @@ public class ProjectController extends BaseController {
public String budgetEditSave(Project project, ProjectBudget projectBudget, BindingResult bindingResult, BudgetBean budgetBean, Map<String, Object> model) { public String budgetEditSave(Project project, ProjectBudget projectBudget, BindingResult bindingResult, BudgetBean budgetBean, Map<String, Object> model) {
Project projectInDb = projectService.getProject(project.getId()); Project projectInDb = projectService.getProject(project.getId());
projectBudgetService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT, projectBudget); projectBudgetService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT, projectBudget);
projectBudgetService.saveProjectBudget(projectInDb, projectBudget);
return "redirect:/project/list"; return "redirect:/project/list";
} }

View File

@ -874,6 +874,8 @@ public class ProjectBudgetService {
budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING, projectBudget); budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING, projectBudget);
saveProjectBudget(projectInDb, projectBudget);
saveProjectExtend(projectInDb); saveProjectExtend(projectInDb);
budgetApprove(approveStatusBudget, projectInDb, admin); budgetApprove(approveStatusBudget, projectInDb, admin);
@ -922,7 +924,6 @@ public class ProjectBudgetService {
p.setApproveStatusBudget(approveStatusEnum.getApproveStatus()); p.setApproveStatusBudget(approveStatusEnum.getApproveStatus());
p = projectRepository.saveAndFlush(p); p = projectRepository.saveAndFlush(p);
saveProjectBudget(p, projectBudget);
//清空重新保存概算信息 //清空重新保存概算信息
clearBudget(p); clearBudget(p);
saveBudget(p, budgetBean); saveBudget(p, budgetBean);
@ -933,9 +934,10 @@ public class ProjectBudgetService {
return p; return p;
} }
private void saveProjectBudget(Project p, ProjectBudget budget) { public void saveProjectBudget(Project p, ProjectBudget budget) {
ProjectBudget projectBudget = projectBudgetRepository.findFirstByProjectId(p.getId()); ProjectBudget projectBudget = projectBudgetRepository.findFirstByProjectId(p.getId());
BeanUtils.copyProperties(budget, projectBudget, "id"); BeanUtils.copyProperties(budget, projectBudget, "id");
saveProjectBudgetByCal(p, projectBudget);
projectBudget.setTypeDescBudget(TypeEnum.parseType(projectBudget.getTypeBudget()).getTypeDesc()); projectBudget.setTypeDescBudget(TypeEnum.parseType(projectBudget.getTypeBudget()).getTypeDesc());
projectBudget.setUnderwrittenModeStrBudget(UnderwrittenModeEnum.parseUnderwrittenMode(projectBudget.getUnderwrittenModeBudget()).getUnderwrittenModeStr()); projectBudget.setUnderwrittenModeStrBudget(UnderwrittenModeEnum.parseUnderwrittenMode(projectBudget.getUnderwrittenModeBudget()).getUnderwrittenModeStr());
@ -948,6 +950,41 @@ public class ProjectBudgetService {
projectBudgetRepository.save(projectBudget); projectBudgetRepository.save(projectBudget);
} }
private void saveProjectBudgetByCal(Project p, ProjectBudget budget) {
List<ProjectBudgetPlanDetail> 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<ProjectBudgetIncomeDetail> 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<ProjectBudgetCostDetail> 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) { private void saveProjectExtend(Project p) {
ProjectExtend extend = projectExtendRepository.findByProjectId(p.getId()); ProjectExtend extend = projectExtendRepository.findByProjectId(p.getId());
if (extend == null) { if (extend == null) {