项目的审批状态管理

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")
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";
}
@RequestMapping("/estimateEditSaveAndApprove")
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";
}
@ -171,7 +173,8 @@ public class ProjectController extends BaseController {
*/
@RequestMapping("/budgetEditSave")
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";
}
@ -180,7 +183,8 @@ public class ProjectController extends BaseController {
*/
@RequestMapping("/budgetEditSaveAndApprove")
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";
}

View File

@ -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<String> estimateProcessInsIds = projectInstanceService.getEstimateProcessInsIds(p);
List<String> 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<String> budgetProcessInsIds = projectInstanceService.getBudgetProcessInsIds(p);
List<String> 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);