项目的审批状态管理

master
xxssyyyyssxx 2021-11-16 09:00:26 +08:00
parent 13e47b6317
commit 081206f50b
2 changed files with 39 additions and 36 deletions

View File

@ -126,13 +126,15 @@ public class ProjectController extends BaseController {
@RequestMapping("/estimateEditSave") @RequestMapping("/estimateEditSave")
public String estimateEditSave(Project project, EstimateBean estimateBean, Map<String, Object> model) { public String estimateEditSave(Project project, EstimateBean estimateBean, Map<String, Object> 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"; return "redirect:/project/list";
} }
@RequestMapping("/estimateEditSaveAndApprove") @RequestMapping("/estimateEditSaveAndApprove")
public String estimateEditSaveAndApprove(Project project, EstimateBean estimateBean, Map<String, Object> model) throws Exception { public String estimateEditSaveAndApprove(Project project, EstimateBean estimateBean, Map<String, Object> 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"; return "redirect:/project/list";
} }
@ -171,7 +173,8 @@ public class ProjectController extends BaseController {
*/ */
@RequestMapping("/budgetEditSave") @RequestMapping("/budgetEditSave")
public String budgetEditSave(Project project, BudgetBean budgetBean, Map<String, Object> model) { public String budgetEditSave(Project project, BudgetBean budgetBean, Map<String, Object> 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"; return "redirect:/project/list";
} }
@ -180,7 +183,8 @@ public class ProjectController extends BaseController {
*/ */
@RequestMapping("/budgetEditSaveAndApprove") @RequestMapping("/budgetEditSaveAndApprove")
public String budgetEditSaveAndApprove(Project project, BudgetBean budgetBean, Map<String, Object> model) throws Exception { public String budgetEditSaveAndApprove(Project project, BudgetBean budgetBean, Map<String, Object> 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"; return "redirect:/project/list";
} }

View File

@ -152,14 +152,14 @@ public class ProjectService {
*/ */
@Transactional(rollbackFor = RuntimeException.class) @Transactional(rollbackFor = RuntimeException.class)
public Project estimateEditSaveAndApprove(Project project, public Project estimateEditSaveAndApprove(Project project,
Project projectInDb,
EstimateBean estimateBean, EstimateBean estimateBean,
Admin admin) throws Exception { Admin admin) throws Exception {
Project p = estimateEditSave(project, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING);
if(null != p.getApproveStatusEstimate() && if(null != projectInDb.getApproveStatusEstimate() &&
ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == p.getApproveStatusEstimate()){ ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == projectInDb.getApproveStatusEstimate()){
//审核不通过的情况下重新编辑后就完成当前任务【此时任务节点在第一个,也就是发起审批】 //审核不通过的情况下重新编辑后就完成当前任务【此时任务节点在第一个,也就是发起审批】
List<String> estimateProcessInsIds = projectInstanceService.getEstimateProcessInsIds(p); List<String> estimateProcessInsIds = projectInstanceService.getEstimateProcessInsIds(projectInDb);
if(CollectionUtil.isNotEmpty(estimateProcessInsIds)){ if(CollectionUtil.isNotEmpty(estimateProcessInsIds)){
actTaskDefService.completeTaskByProcInsId(estimateProcessInsIds.get(0), actTaskDefService.completeTaskByProcInsId(estimateProcessInsIds.get(0),
ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus(), ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus(),
@ -167,25 +167,25 @@ public class ProjectService {
} }
}else { }else {
//第一次或者重新发起一个流程实例【第一次或者以前的审批都已经过了】 //第一次或者重新发起一个流程实例【第一次或者以前的审批都已经过了】
projectInstanceService.startEstimateProcessInstance(p, admin); projectInstanceService.startEstimateProcessInstance(projectInDb, admin);
} }
return p; return estimateEditSave(project, projectInDb, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING);
} }
/** /**
* *
*/ */
@Transactional(rollbackFor = RuntimeException.class) @Transactional(rollbackFor = RuntimeException.class)
public Project estimateEditSave(Project project, EstimateBean estimateBean, Admin admin, ApproveStatusEnum approveStatusEnum) { public Project estimateEditSave(Project project, Project projectInDb, EstimateBean estimateBean, Admin admin, ApproveStatusEnum approveStatusEnum) {
Project p = editProject(project, admin, approveStatusEnum); Project p = editProject(project, projectInDb);
p.setStatus(StatusEnum.CREATED.getStatus()); p.setStatus(StatusEnum.CREATED.getStatus());
p.setStatusDesc(StatusEnum.CREATED.getStatusDesc()); p.setStatusDesc(StatusEnum.CREATED.getStatusDesc());
p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus());
p = projectRepository.saveAndFlush(p);
ProjectConfigBean projectConfigBeanConfig = projectBudgetService.getProjectConfigBeanConfig(); ProjectConfigBean projectConfigBeanConfig = projectBudgetService.getProjectConfigBeanConfig();
project.setProjectContributionProfitRateThreshold(projectConfigBeanConfig.getProjectContributionProfitRateThreshold()); project.setProjectContributionProfitRateThreshold(projectConfigBeanConfig.getProjectContributionProfitRateThreshold());
project.setUnderwrittenTaxRate(projectConfigBeanConfig.getUnderwrittenTaxRate()); project.setUnderwrittenTaxRate(projectConfigBeanConfig.getUnderwrittenTaxRate());
p = projectRepository.saveAndFlush(p);
//清空重新保存概算信息 //清空重新保存概算信息
projectEstimateService.clearEstimate(p); projectEstimateService.clearEstimate(p);
projectEstimateService.saveEstimate(p, estimateBean); projectEstimateService.saveEstimate(p, estimateBean);
@ -222,36 +222,35 @@ public class ProjectService {
return project; return project;
} }
private Project editProject(Project project, Admin admin, ApproveStatusEnum approveStatusEnum) { private Project editProject(Project project, Project projectInDb) {
Project p = getProject(project.getId());
//只有如下可以修改 //只有如下可以修改
p.setStartDate(project.getStartDate()); projectInDb.setStartDate(project.getStartDate());
p.setEndDate(project.getEndDate()); projectInDb.setEndDate(project.getEndDate());
p.setAdvanceInterestAmount(project.getAdvanceInterestAmount()); projectInDb.setAdvanceInterestAmount(project.getAdvanceInterestAmount());
p.setAdvancePeakAmount(project.getAdvancePeakAmount()); projectInDb.setAdvancePeakAmount(project.getAdvancePeakAmount());
p.setContractAmount(project.getContractAmount()); projectInDb.setContractAmount(project.getContractAmount());
p.setHuazhiProductAmount(project.getHuazhiProductAmount()); projectInDb.setHuazhiProductAmount(project.getHuazhiProductAmount());
p.setZiguangOtherAmount(project.getZiguangOtherAmount()); projectInDb.setZiguangOtherAmount(project.getZiguangOtherAmount());
p.setMainContractCollectionTerms(project.getMainContractCollectionTerms()); 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) @Transactional(rollbackFor = RuntimeException.class)
public Project budgetEditSaveAndApprove(Project project, BudgetBean budgetBean, Admin admin) throws Exception { public Project budgetEditSaveAndApprove(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin) throws Exception {
Project p = budgetEditSave(project, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING); if(null != projectInDb.getApproveStatusBudget() &&
if(null != p.getApproveStatusBudget() && ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == projectInDb.getApproveStatusBudget()){
ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == p.getApproveStatusBudget()){
//审核不通过的情况下重新编辑后就完成当前任务 //审核不通过的情况下重新编辑后就完成当前任务
List<String> budgetProcessInsIds = projectInstanceService.getBudgetProcessInsIds(p); List<String> budgetProcessInsIds = projectInstanceService.getBudgetProcessInsIds(projectInDb);
if(CollectionUtil.isNotEmpty(budgetProcessInsIds)){ if(CollectionUtil.isNotEmpty(budgetProcessInsIds)){
actTaskDefService.completeTaskByProcInsId(budgetProcessInsIds.get(0), actTaskDefService.completeTaskByProcInsId(budgetProcessInsIds.get(0),
ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus(), ApproveStatusEnum.APPROVAL_PASSED.getApproveStatus(),
@ -259,19 +258,19 @@ public class ProjectService {
} }
}else { }else {
//第一次或者重新发起一个流程实例 //第一次或者重新发起一个流程实例
projectInstanceService.startBudgetProcessInstance(p, admin); projectInstanceService.startBudgetProcessInstance(projectInDb, admin);
} }
return p; return budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING);
} }
/** /**
* *
*/ */
@Transactional(rollbackFor = RuntimeException.class) @Transactional(rollbackFor = RuntimeException.class)
public Project budgetEditSave(Project project, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum) { public Project budgetEditSave(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum) {
Project p = editProject(project, admin, approveStatusEnum); Project p = editProject(project, projectInDb);
p.setStatus(StatusEnum.BUDGET_ACCOUNTS.getStatus()); p.setStatus(StatusEnum.BUDGET_ACCOUNTS.getStatus());
p.setStatusDesc(StatusEnum.BUDGET_ACCOUNTS.getStatusDesc()); p.setStatusDesc(StatusEnum.BUDGET_ACCOUNTS.getStatusDesc());
p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); p.setApproveStatusBudget(approveStatusEnum.getApproveStatus());
p = projectRepository.saveAndFlush(p); p = projectRepository.saveAndFlush(p);
//清空重新保存概算信息 //清空重新保存概算信息
projectBudgetService.clearBudget(p); projectBudgetService.clearBudget(p);