项目预算基本信息同步预算计算方式
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) {
|
||||
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";
|
||||
}
|
||||
|
||||
|
|
|
@ -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<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) {
|
||||
ProjectExtend extend = projectExtendRepository.findByProjectId(p.getId());
|
||||
if (extend == null) {
|
||||
|
|
Loading…
Reference in New Issue