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 cdae9a5..928ef85 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -126,13 +126,15 @@ public class ProjectController extends BaseController { @RequestMapping("/estimateEditSave") public String estimateEditSave(Project project, EstimateBean estimateBean, Map model) { - projectService.estimateEditSave(project, estimateBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT); + Project projectInDb = projectService.getProject(project.getId()); + projectService.estimateEditSave(project, projectInDb, estimateBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT); return "redirect:/project/list"; } @RequestMapping("/estimateEditSaveAndApprove") public String estimateEditSaveAndApprove(Project project, EstimateBean estimateBean, Map model) throws Exception { - projectService.estimateEditSaveAndApprove(project, estimateBean, InterfaceUtil.getAdmin()); + Project projectInDb = projectService.getProject(project.getId()); + projectService.estimateEditSaveAndApprove(project, projectInDb, estimateBean, InterfaceUtil.getAdmin()); return "redirect:/project/list"; } @@ -171,7 +173,8 @@ public class ProjectController extends BaseController { */ @RequestMapping("/budgetEditSave") public String budgetEditSave(Project project, BudgetBean budgetBean, Map model) { - projectService.budgetEditSave(project, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT); + Project projectInDb = projectService.getProject(project.getId()); + projectService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT); return "redirect:/project/list"; } @@ -180,7 +183,8 @@ public class ProjectController extends BaseController { */ @RequestMapping("/budgetEditSaveAndApprove") public String budgetEditSaveAndApprove(Project project, BudgetBean budgetBean, Map model) throws Exception { - projectService.budgetEditSaveAndApprove(project, budgetBean, InterfaceUtil.getAdmin()); + Project projectInDb = projectService.getProject(project.getId()); + projectService.budgetEditSaveAndApprove(project, projectInDb, budgetBean, InterfaceUtil.getAdmin()); return "redirect:/project/list"; } diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java index f3075db..f4d5abd 100644 --- a/src/main/java/cn/palmte/work/service/ProjectService.java +++ b/src/main/java/cn/palmte/work/service/ProjectService.java @@ -152,14 +152,14 @@ public class ProjectService { */ @Transactional(rollbackFor = RuntimeException.class) public Project estimateEditSaveAndApprove(Project project, + Project projectInDb, EstimateBean estimateBean, Admin admin) throws Exception { - Project p = estimateEditSave(project, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING); - if(null != p.getApproveStatusEstimate() && - ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == p.getApproveStatusEstimate()){ + if(null != projectInDb.getApproveStatusEstimate() && + ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == projectInDb.getApproveStatusEstimate()){ //审核不通过的情况下重新编辑后就完成当前任务【此时任务节点在第一个,也就是发起审批】 - List estimateProcessInsIds = projectInstanceService.getEstimateProcessInsIds(p); + List estimateProcessInsIds = projectInstanceService.getEstimateProcessInsIds(projectInDb); if(CollectionUtil.isNotEmpty(estimateProcessInsIds)){ actTaskDefService.completeTaskByProcInsId(estimateProcessInsIds.get(0), ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus(), @@ -167,25 +167,25 @@ public class ProjectService { } }else { //第一次或者重新发起一个流程实例【第一次或者以前的审批都已经过了】 - projectInstanceService.startEstimateProcessInstance(p, admin); + projectInstanceService.startEstimateProcessInstance(projectInDb, admin); } - return p; + return estimateEditSave(project, projectInDb, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING); } /** * 编辑概算保存项目 */ @Transactional(rollbackFor = RuntimeException.class) - public Project estimateEditSave(Project project, EstimateBean estimateBean, Admin admin, ApproveStatusEnum approveStatusEnum) { - Project p = editProject(project, admin, approveStatusEnum); + public Project estimateEditSave(Project project, Project projectInDb, EstimateBean estimateBean, Admin admin, ApproveStatusEnum approveStatusEnum) { + Project p = editProject(project, projectInDb); p.setStatus(StatusEnum.CREATED.getStatus()); p.setStatusDesc(StatusEnum.CREATED.getStatusDesc()); p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); + p = projectRepository.saveAndFlush(p); ProjectConfigBean projectConfigBeanConfig = projectBudgetService.getProjectConfigBeanConfig(); project.setProjectContributionProfitRateThreshold(projectConfigBeanConfig.getProjectContributionProfitRateThreshold()); project.setUnderwrittenTaxRate(projectConfigBeanConfig.getUnderwrittenTaxRate()); - p = projectRepository.saveAndFlush(p); //清空重新保存概算信息 projectEstimateService.clearEstimate(p); projectEstimateService.saveEstimate(p, estimateBean); @@ -222,36 +222,35 @@ public class ProjectService { return project; } - private Project editProject(Project project, Admin admin, ApproveStatusEnum approveStatusEnum) { - Project p = getProject(project.getId()); + private Project editProject(Project project, Project projectInDb) { + //只有如下可以修改 - p.setStartDate(project.getStartDate()); - p.setEndDate(project.getEndDate()); - p.setAdvanceInterestAmount(project.getAdvanceInterestAmount()); - p.setAdvancePeakAmount(project.getAdvancePeakAmount()); - p.setContractAmount(project.getContractAmount()); - p.setHuazhiProductAmount(project.getHuazhiProductAmount()); - p.setZiguangOtherAmount(project.getZiguangOtherAmount()); - p.setMainContractCollectionTerms(project.getMainContractCollectionTerms()); + projectInDb.setStartDate(project.getStartDate()); + projectInDb.setEndDate(project.getEndDate()); + projectInDb.setAdvanceInterestAmount(project.getAdvanceInterestAmount()); + projectInDb.setAdvancePeakAmount(project.getAdvancePeakAmount()); + projectInDb.setContractAmount(project.getContractAmount()); + projectInDb.setHuazhiProductAmount(project.getHuazhiProductAmount()); + projectInDb.setZiguangOtherAmount(project.getZiguangOtherAmount()); + projectInDb.setMainContractCollectionTerms(project.getMainContractCollectionTerms()); - p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); + /// projectInDb.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); - p.setLastUpdateTime(new Date()); + projectInDb.setLastUpdateTime(new Date()); - return p; + return projectInDb; } /** * 编辑预算保存项目并审核 */ @Transactional(rollbackFor = RuntimeException.class) - public Project budgetEditSaveAndApprove(Project project, BudgetBean budgetBean, Admin admin) throws Exception { - Project p = budgetEditSave(project, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING); - if(null != p.getApproveStatusBudget() && - ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == p.getApproveStatusBudget()){ + public Project budgetEditSaveAndApprove(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin) throws Exception { + if(null != projectInDb.getApproveStatusBudget() && + ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == projectInDb.getApproveStatusBudget()){ //审核不通过的情况下重新编辑后就完成当前任务 - List budgetProcessInsIds = projectInstanceService.getBudgetProcessInsIds(p); + List budgetProcessInsIds = projectInstanceService.getBudgetProcessInsIds(projectInDb); if(CollectionUtil.isNotEmpty(budgetProcessInsIds)){ actTaskDefService.completeTaskByProcInsId(budgetProcessInsIds.get(0), ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus(), @@ -259,19 +258,19 @@ public class ProjectService { } }else { //第一次或者重新发起一个流程实例 - projectInstanceService.startBudgetProcessInstance(p, admin); + projectInstanceService.startBudgetProcessInstance(projectInDb, admin); } - return p; + return budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING); } /** * 编辑预算保存项目 */ @Transactional(rollbackFor = RuntimeException.class) - public Project budgetEditSave(Project project, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum) { - Project p = editProject(project, admin, approveStatusEnum); + public Project budgetEditSave(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum) { + Project p = editProject(project, projectInDb); p.setStatus(StatusEnum.BUDGET_ACCOUNTS.getStatus()); p.setStatusDesc(StatusEnum.BUDGET_ACCOUNTS.getStatusDesc()); - p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); + p.setApproveStatusBudget(approveStatusEnum.getApproveStatus()); p = projectRepository.saveAndFlush(p); //清空重新保存概算信息 projectBudgetService.clearBudget(p);