项目预算基本信息同步预算计算方式
parent
3b36524aca
commit
1eadf7fd26
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue