保存或更新决算信息前先清理旧数据

master
hanbo 2021-12-03 11:53:25 +08:00
parent 7a392df760
commit c7300c2aa6
3 changed files with 82 additions and 71 deletions

View File

@ -7,7 +7,6 @@ import cn.palmte.work.model.ProjectSettleIncome;
import cn.palmte.work.model.ProjectSettleIncomeRepository; import cn.palmte.work.model.ProjectSettleIncomeRepository;
import cn.palmte.work.service.*; import cn.palmte.work.service.*;
import cn.palmte.work.utils.FreeMarkerUtil; import cn.palmte.work.utils.FreeMarkerUtil;
import cn.palmte.work.utils.InterfaceUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;

View File

@ -2,6 +2,10 @@ package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ProjectFinalProfitMarginRepository extends JpaRepository<ProjectFinalProfitMargin,Integer> { public interface ProjectFinalProfitMarginRepository extends JpaRepository<ProjectFinalProfitMargin,Integer> {
List<ProjectFinalProfitMargin> findByProjectIdEquals(int projectId);
} }

View File

@ -60,66 +60,74 @@ public class ProjectFinalSevice {
@Transactional @Transactional
public void save(Project project, FinalBean finalBean) { public void save(Project project, FinalBean finalBean) {
//预算表数据 clearAndSave(project, finalBean);
EstimateBean estimate = projectEstimateService.getEstimate(project);
//概算表数据
BudgetBean budget = projectBudgetService.getBudget(project);
FormerBean settle = projectSettleService.getCurrentSettle(project, null);
//现金流量表数据
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project);
CashFlowBean cashFlowBean = projectBudgetService.getCashFlowBean(project, projectBudgetPlanDetails);
//保存项目决算收入信息
saveProjectFinalIncome(project,finalBean,estimate,budget,settle);
//保存项目决算成本信息
saveProjectFinalCost(project,finalBean,estimate,budget,settle);
//保存项目结算管理成本信息
saveProjectFinalCostManage(project,finalBean,estimate,budget,settle);
//保存项目决算利润率
saveProjectFinalProfitMargin(project,finalBean,estimate,budget,settle);
//保存项目结算现金流量信息
saveProjectFinalCashFlux(project,finalBean,cashFlowBean,settle);
projectService.updateStatusAndApproveStatus(project.getId(), StatusEnum.FINAL_ACCOUNTS, ApproveStatusEnum.APPROVAL_UNCOMMIT); projectService.updateStatusAndApproveStatus(project.getId(), StatusEnum.FINAL_ACCOUNTS, ApproveStatusEnum.APPROVAL_UNCOMMIT);
} }
@Transactional @Transactional
public void saveAndApprove(Project project, FinalBean finalBean) throws Exception { public void saveAndApprove(Project project, FinalBean finalBean) throws Exception {
FormerBean settle = projectSettleService.getCurrentSettle(project, null); clearAndSave(project, finalBean);
//更新项目和审批状态
projectService.updateStatusAndApproveStatus(project.getId(), StatusEnum.FINAL_ACCOUNTS, ApproveStatusEnum.APPROVAL_PENDING);
//发起流程
projectInstanceService.startFinalProcessInstance(project.getId(), InterfaceUtil.getAdmin());
}
public void clearAndSave(Project project, FinalBean finalBean) {
//清楚旧数据
clearFinal(project);
//预算表数据 //预算表数据
EstimateBean estimate = projectEstimateService.getEstimate(project); EstimateBean estimate = projectEstimateService.getEstimate(project);
//概算表数据 //概算表数据
BudgetBean budget = projectBudgetService.getBudget(project); BudgetBean budget = projectBudgetService.getBudget(project);
FormerBean settle = projectSettleService.getCurrentSettle(project, null);
//现金流量表数据 //现金流量表数据
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project); List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project);
CashFlowBean cashFlowBean = projectBudgetService.getCashFlowBean(project, projectBudgetPlanDetails); CashFlowBean cashFlowBean = projectBudgetService.getCashFlowBean(project, projectBudgetPlanDetails);
//保存项目决算收入信息 //保存项目决算收入信息
saveProjectFinalIncome(project,finalBean,estimate,budget,settle); saveProjectFinalIncome(project, finalBean, estimate, budget, settle);
//保存项目决算成本信息 //保存项目决算成本信息
saveProjectFinalCost(project,finalBean,estimate,budget,settle); saveProjectFinalCost(project, finalBean, estimate, budget, settle);
//保存项目结算管理成本信息 //保存项目结算管理成本信息
saveProjectFinalCostManage(project,finalBean,estimate,budget,settle); saveProjectFinalCostManage(project, finalBean, estimate, budget, settle);
//保存项目决算利润率 //保存项目决算利润率
saveProjectFinalProfitMargin(project,finalBean,estimate,budget,settle); saveProjectFinalProfitMargin(project, finalBean, estimate, budget, settle);
//保存项目结算现金流量信息 //保存项目结算现金流量信息
saveProjectFinalCashFlux(project,finalBean,cashFlowBean,settle); saveProjectFinalCashFlux(project, finalBean, cashFlowBean, settle);
}
//更新项目和审批状态 private void clearFinal(Project project) {
projectService.updateStatusAndApproveStatus(project.getId(), StatusEnum.FINAL_ACCOUNTS, ApproveStatusEnum.APPROVAL_PENDING); List<ProjectFinalCost> projectFinalCosts = projectFinalCostRepository.findByProjectIdEquals(project.getId());
//发起流程 if (CollectionUtil.isNotEmpty(projectFinalCosts)) {
projectInstanceService.startFinalProcessInstance(project.getId(), InterfaceUtil.getAdmin()); projectFinalCostRepository.deleteInBatch(projectFinalCosts);
}
List<ProjectFinalCostManage> projectFinalCostManages = projectFinalCostManageRepository.findByProjectIdEquals(project.getId());
if (CollectionUtil.isNotEmpty(projectFinalCostManages)) {
projectFinalCostManageRepository.deleteInBatch(projectFinalCostManages);
}
List<ProjectFinalIncome> projectFinalIncomes = projectFinalIncomeReposiry.findByProjectIdEquals(project.getId());
if (CollectionUtil.isNotEmpty(projectFinalIncomes)) {
projectFinalIncomeReposiry.deleteInBatch(projectFinalIncomes);
}
List<ProjectFinalProfitMargin> projectFinalProfitMargins = projectFinalProfitMarginRepository.findByProjectIdEquals(project.getId());
if (CollectionUtil.isNotEmpty(projectFinalProfitMargins)) {
projectFinalProfitMarginRepository.deleteInBatch(projectFinalProfitMargins);
}
List<ProjectFinalCashFlux> projectFinalCashFluxes = projectFinalCashFluxRepository.findByProjectIdEquals(project.getId());
if (CollectionUtil.isNotEmpty(projectFinalCashFluxes)) {
projectFinalCashFluxRepository.deleteInBatch(projectFinalCashFluxes);
}
} }
private void saveProjectFinalProfitMargin(Project project, FinalBean finalBean, EstimateBean estimate, BudgetBean budget, FormerBean settle) { private void saveProjectFinalProfitMargin(Project project, FinalBean finalBean, EstimateBean estimate, BudgetBean budget, FormerBean settle) {
@ -154,7 +162,7 @@ public class ProjectFinalSevice {
} }
public void saveProjectFinalCostManage(Project project, FinalBean finalBean,EstimateBean estimate,BudgetBean budget,FormerBean settle){ public void saveProjectFinalCostManage(Project project, FinalBean finalBean, EstimateBean estimate, BudgetBean budget, FormerBean settle) {
ProjectFinalCostManage expropriationManage = new ProjectFinalCostManage(); ProjectFinalCostManage expropriationManage = new ProjectFinalCostManage();
expropriationManage.setProjectId(project.getId()); expropriationManage.setProjectId(project.getId());
expropriationManage.setType(ProjectFinalCostManage.TYPE_EXPROPRIATION); expropriationManage.setType(ProjectFinalCostManage.TYPE_EXPROPRIATION);
@ -182,7 +190,7 @@ public class ProjectFinalSevice {
} }
private void saveProjectFinalIncome(Project project, FinalBean finalBean,EstimateBean estimate,BudgetBean budget,FormerBean settle) { private void saveProjectFinalIncome(Project project, FinalBean finalBean, EstimateBean estimate, BudgetBean budget, FormerBean settle) {
ProjectFinalIncome projectFinalIncomeDevice = new ProjectFinalIncome(); ProjectFinalIncome projectFinalIncomeDevice = new ProjectFinalIncome();
projectFinalIncomeDevice.setProjectId(project.getId()); projectFinalIncomeDevice.setProjectId(project.getId());
projectFinalIncomeDevice.setType(ProjectFinalIncome.TYPE_DEVICE); projectFinalIncomeDevice.setType(ProjectFinalIncome.TYPE_DEVICE);
@ -211,7 +219,7 @@ public class ProjectFinalSevice {
projectFinalIncomeReposiry.saveAndFlush(projectFinalIncomeService); projectFinalIncomeReposiry.saveAndFlush(projectFinalIncomeService);
} }
public void saveProjectFinalCost(Project project, FinalBean finalBean,EstimateBean estimate,BudgetBean budget,FormerBean settle){ public void saveProjectFinalCost(Project project, FinalBean finalBean, EstimateBean estimate, BudgetBean budget, FormerBean settle) {
ProjectFinalCost projectFinalCostDevice = new ProjectFinalCost(); ProjectFinalCost projectFinalCostDevice = new ProjectFinalCost();
projectFinalCostDevice.setProjectId(project.getId()); projectFinalCostDevice.setProjectId(project.getId());
projectFinalCostDevice.setFee(ProjectFinalCost.FEE_PURCHASE); projectFinalCostDevice.setFee(ProjectFinalCost.FEE_PURCHASE);
@ -274,7 +282,7 @@ public class ProjectFinalSevice {
projectFinalCostRepository.saveAndFlush(projectFinalCostOtherOther); projectFinalCostRepository.saveAndFlush(projectFinalCostOtherOther);
} }
public void saveProjectFinalCashFlux(Project project, FinalBean finalBean, CashFlowBean cashFlowBean,FormerBean settle) { public void saveProjectFinalCashFlux(Project project, FinalBean finalBean, CashFlowBean cashFlowBean, FormerBean settle) {
List<ProjectFinalCashFlux> list = new ArrayList<>(); List<ProjectFinalCashFlux> list = new ArrayList<>();
ProjectFinalCashFlux projectFinalCashFlux1 = new ProjectFinalCashFlux(); ProjectFinalCashFlux projectFinalCashFlux1 = new ProjectFinalCashFlux();
@ -396,32 +404,32 @@ public class ProjectFinalSevice {
FinalBean finalBean = new FinalBean(); FinalBean finalBean = new FinalBean();
List<ProjectFinalIncome> projectFinalIncomes = projectFinalIncomeReposiry.findByProjectIdEquals(project.getId()); List<ProjectFinalIncome> projectFinalIncomes = projectFinalIncomeReposiry.findByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(projectFinalIncomes)){ if (CollectionUtil.isNotEmpty(projectFinalIncomes)) {
for (ProjectFinalIncome projectFinalIncome : projectFinalIncomes) { for (ProjectFinalIncome projectFinalIncome : projectFinalIncomes) {
if(ProjectFinalIncome.TYPE_DEVICE == projectFinalIncome.getType()){ if (ProjectFinalIncome.TYPE_DEVICE == projectFinalIncome.getType()) {
finalBean.setIncomeDeviceFinalTotal(projectFinalIncome.getFinalTotalIncome()); finalBean.setIncomeDeviceFinalTotal(projectFinalIncome.getFinalTotalIncome());
}else if(ProjectFinalIncome.TYPE_ENGINEER == projectFinalIncome.getType()){ } else if (ProjectFinalIncome.TYPE_ENGINEER == projectFinalIncome.getType()) {
finalBean.setIncomeEngineerFinalTotal(projectFinalIncome.getFinalTotalIncome()); finalBean.setIncomeEngineerFinalTotal(projectFinalIncome.getFinalTotalIncome());
}else if(ProjectFinalIncome.TYPE_SERVICE == projectFinalIncome.getType()){ } else if (ProjectFinalIncome.TYPE_SERVICE == projectFinalIncome.getType()) {
finalBean.setIncomeServiceFinalTotal(projectFinalIncome.getFinalTotalIncome()); finalBean.setIncomeServiceFinalTotal(projectFinalIncome.getFinalTotalIncome());
} }
} }
} }
List<ProjectFinalCost> projectFinalCosts = projectFinalCostRepository.findByProjectIdEquals(project.getId()); List<ProjectFinalCost> projectFinalCosts = projectFinalCostRepository.findByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(projectFinalCosts)){ if (CollectionUtil.isNotEmpty(projectFinalCosts)) {
for (ProjectFinalCost projectFinalCost : projectFinalCosts) { for (ProjectFinalCost projectFinalCost : projectFinalCosts) {
if(ProjectFinalCost.TYPE_DEVICE == projectFinalCost.getType()){ if (ProjectFinalCost.TYPE_DEVICE == projectFinalCost.getType()) {
finalBean.setCostPurchaseDeviceFinalTotal(projectFinalCost.getFinalTotalCost()); finalBean.setCostPurchaseDeviceFinalTotal(projectFinalCost.getFinalTotalCost());
}else if(ProjectFinalCost.TYPE_BUILDING == projectFinalCost.getType()){ } else if (ProjectFinalCost.TYPE_BUILDING == projectFinalCost.getType()) {
finalBean.setCostPurchaseBuildFinalTotal(projectFinalCost.getFinalTotalCost()); finalBean.setCostPurchaseBuildFinalTotal(projectFinalCost.getFinalTotalCost());
}else if(ProjectFinalCost.TYPE_SERVICE == projectFinalCost.getType()){ } else if (ProjectFinalCost.TYPE_SERVICE == projectFinalCost.getType()) {
finalBean.setCostPurchaseServiceFinalTotal(projectFinalCost.getFinalTotalCost()); finalBean.setCostPurchaseServiceFinalTotal(projectFinalCost.getFinalTotalCost());
}else if(ProjectFinalCost.TYPE_OTHER == projectFinalCost.getType()){ } else if (ProjectFinalCost.TYPE_OTHER == projectFinalCost.getType()) {
finalBean.setCostPurchaseOtherFinalTotal(projectFinalCost.getFinalTotalCost()); finalBean.setCostPurchaseOtherFinalTotal(projectFinalCost.getFinalTotalCost());
}else if(ProjectFinalCost.TYPE_PROJECT_MANAGE == projectFinalCost.getType()){ } else if (ProjectFinalCost.TYPE_PROJECT_MANAGE == projectFinalCost.getType()) {
finalBean.setCostProjectManageFinalTotal(projectFinalCost.getFinalTotalCost()); finalBean.setCostProjectManageFinalTotal(projectFinalCost.getFinalTotalCost());
}else if (ProjectFinalCost.TYPE_OTHER_OTHER == projectFinalCost.getType()){ } else if (ProjectFinalCost.TYPE_OTHER_OTHER == projectFinalCost.getType()) {
finalBean.setCostOtherFinalTotal(projectFinalCost.getFinalTotalCost()); finalBean.setCostOtherFinalTotal(projectFinalCost.getFinalTotalCost());
} }
} }
@ -429,13 +437,13 @@ public class ProjectFinalSevice {
List<ProjectFinalCostManage> projectFinalCostManages = projectFinalCostManageRepository.findByProjectIdEquals(project.getId()); List<ProjectFinalCostManage> projectFinalCostManages = projectFinalCostManageRepository.findByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(projectFinalCostManages)){ if (CollectionUtil.isNotEmpty(projectFinalCostManages)) {
for (ProjectFinalCostManage projectFinalCostManage : projectFinalCostManages) { for (ProjectFinalCostManage projectFinalCostManage : projectFinalCostManages) {
if(ProjectFinalCostManage.TYPE_EXPROPRIATION == projectFinalCostManage.getType()){ if (ProjectFinalCostManage.TYPE_EXPROPRIATION == projectFinalCostManage.getType()) {
finalBean.setCostExpropriationFinalTotal(projectFinalCostManage.getFinalTotalManageCost()); finalBean.setCostExpropriationFinalTotal(projectFinalCostManage.getFinalTotalManageCost());
}else if(ProjectFinalCostManage.TYPE_COMPANY_MANAGE == projectFinalCostManage.getType()){ } else if (ProjectFinalCostManage.TYPE_COMPANY_MANAGE == projectFinalCostManage.getType()) {
finalBean.setCostCompanyManageFinalTotal(projectFinalCostManage.getFinalTotalManageCost()); finalBean.setCostCompanyManageFinalTotal(projectFinalCostManage.getFinalTotalManageCost());
}else if(ProjectFinalCostManage.TYPE_INCOME_TAX == projectFinalCostManage.getType()){ } else if (ProjectFinalCostManage.TYPE_INCOME_TAX == projectFinalCostManage.getType()) {
finalBean.setCostIncomeTaxFinalTotal(projectFinalCostManage.getFinalTotalManageCost()); finalBean.setCostIncomeTaxFinalTotal(projectFinalCostManage.getFinalTotalManageCost());
} }
} }
@ -443,48 +451,48 @@ public class ProjectFinalSevice {
List<ProjectFinalCashFlux> projectFinalCashFluxes = projectFinalCashFluxRepository.findByProjectIdEquals(project.getId()); List<ProjectFinalCashFlux> projectFinalCashFluxes = projectFinalCashFluxRepository.findByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(projectFinalCashFluxes)){ if (CollectionUtil.isNotEmpty(projectFinalCashFluxes)) {
for (ProjectFinalCashFlux projectFinalCashFlux : projectFinalCashFluxes) { for (ProjectFinalCashFlux projectFinalCashFlux : projectFinalCashFluxes) {
if(ProjectFinalCashFlux.TYPE1 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE1 == projectFinalCashFlux.getType()) {
finalBean.setSaleIncomeCash(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setSaleIncomeCash(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE2 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE2 == projectFinalCashFlux.getType()) {
finalBean.setTaxReturn(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setTaxReturn(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE3 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE3 == projectFinalCashFlux.getType()) {
finalBean.setEarnestMoneyIncome(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setEarnestMoneyIncome(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE4 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE4 == projectFinalCashFlux.getType()) {
finalBean.setPurchaseCost(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setPurchaseCost(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE5 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE5 == projectFinalCashFlux.getType()) {
finalBean.setTaxCost(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setTaxCost(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE6 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE6 == projectFinalCashFlux.getType()) {
finalBean.setEarnestMoneyCost(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setEarnestMoneyCost(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE7 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE7 == projectFinalCashFlux.getType()) {
finalBean.setNetCashFlow(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setNetCashFlow(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE8 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE8 == projectFinalCashFlux.getType()) {
finalBean.setCashInflowFromInvestingActivities(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setCashInflowFromInvestingActivities(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE9 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE9 == projectFinalCashFlux.getType()) {
finalBean.setCashOutflowFromInvestingActivities(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setCashOutflowFromInvestingActivities(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE10 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE10 == projectFinalCashFlux.getType()) {
finalBean.setNetCashFromInvestingActivities(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setNetCashFromInvestingActivities(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE11 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE11 == projectFinalCashFlux.getType()) {
finalBean.setFinancingCapitalInflow(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setFinancingCapitalInflow(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE12 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE12 == projectFinalCashFlux.getType()) {
finalBean.setFinancingCapitalOutflow(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setFinancingCapitalOutflow(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE13 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE13 == projectFinalCashFlux.getType()) {
finalBean.setFinancingCapitalCashflow(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setFinancingCapitalCashflow(projectFinalCashFlux.getFinalTotalCashFlux());
} }
if(ProjectFinalCashFlux.TYPE14 == projectFinalCashFlux.getType()){ if (ProjectFinalCashFlux.TYPE14 == projectFinalCashFlux.getType()) {
finalBean.setNetIncreaseMonetaryFunds(projectFinalCashFlux.getFinalTotalCashFlux()); finalBean.setNetIncreaseMonetaryFunds(projectFinalCashFlux.getFinalTotalCashFlux());
} }
} }