diff --git a/src/main/java/cn/palmte/work/bean/StatusEnum.java b/src/main/java/cn/palmte/work/bean/StatusEnum.java index c46d922..7e52299 100644 --- a/src/main/java/cn/palmte/work/bean/StatusEnum.java +++ b/src/main/java/cn/palmte/work/bean/StatusEnum.java @@ -4,11 +4,10 @@ package cn.palmte.work.bean; * @author xiongshiyan at 2021/11/1 , contact me with email yanshixiong@126.com or phone 15208384257 */ public enum StatusEnum { - CREATED(1,"项目创建"), - ESTIMATE_ACCOUNTS(5,"概算完成"), - BUDGET_ACCOUNTS(10,"预算完成"), - SETTLE_ACCOUNTS(15,"结算中"), - FINAL_ACCOUNTS(20,"决算完成"); + ESTIMATE_ACCOUNTS(1,"项目创建(概算)"), + BUDGET_ACCOUNTS(5,"预算"), + SETTLE_ACCOUNTS(10,"结算"), + FINAL_ACCOUNTS(15,"决算"); private int status; private String statusDesc; @@ -36,18 +35,15 @@ public enum StatusEnum { public static StatusEnum parseStatus(int status){ if(status == 1){ - return CREATED; - } - if(status == 5){ return ESTIMATE_ACCOUNTS; } - if(status == 10){ + if(status == 5){ return BUDGET_ACCOUNTS; } - if(status == 15){ + if(status == 10){ return SETTLE_ACCOUNTS; } - if(status == 20){ + if(status == 15){ return FINAL_ACCOUNTS; } throw new IllegalArgumentException("Unkown status:"+status); 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 fa6c771..f9d2177 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -111,7 +111,7 @@ public class ProjectController extends BaseController { } /** - * 预算保存草稿 + * 新增概算项目 保存草稿 */ @RequestMapping("/estimateAddSave") public String estimateAddSave(Project project, EstimateBean estimateBean, Map model) { @@ -120,7 +120,7 @@ public class ProjectController extends BaseController { } /** - * 预算保存并提交审核 + * 新增概算项目 保存并提交审核 */ @RequestMapping("/estimateAddSaveAndApprove") public String estimateAddSaveAndApprove(Project project, EstimateBean estimateBean, Map model) throws Exception { @@ -128,7 +128,13 @@ public class ProjectController extends BaseController { return "redirect:/project/list"; } - + /** + * 去编辑概算项目页面 + * + * @param id + * @param model + * @return + */ @RequestMapping("/edit") public String edit(@RequestParam("id") int id, Map model) { Project project = projectService.getProject(id); @@ -140,6 +146,13 @@ public class ProjectController extends BaseController { return "admin/project_estimate_edit"; } + /** + * 编辑概算项目保存 + * @param project + * @param estimateBean + * @param model + * @return + */ @RequestMapping("/estimateEditSave") public String estimateEditSave(Project project, EstimateBean estimateBean, Map model) { Project projectInDb = projectService.getProject(project.getId()); @@ -147,6 +160,14 @@ public class ProjectController extends BaseController { return "redirect:/project/list"; } + /** + * 编辑概算项目保存并提交审批 + * @param project + * @param estimateBean + * @param model + * @return + * @throws Exception + */ @RequestMapping("/estimateEditSaveAndApprove") public String estimateEditSaveAndApprove(Project project, EstimateBean estimateBean, Map model) throws Exception { Project projectInDb = projectService.getProject(project.getId()); diff --git a/src/main/java/cn/palmte/work/model/Project.java b/src/main/java/cn/palmte/work/model/Project.java index 200226e..e343c98 100644 --- a/src/main/java/cn/palmte/work/model/Project.java +++ b/src/main/java/cn/palmte/work/model/Project.java @@ -14,11 +14,10 @@ import java.util.Date; @Entity @Table(name = "project") public class Project { - public static final int STATUS_CREATED = 1; - public static final int STATUS_ESTIMATE = 5; - public static final int STATUS_BUDGET = 10; - public static final int STATUS_SETTLE = 15; - public static final int STATUS_FINAL = 20; + public static final int STATUS_ESTIMATE = 1; + public static final int STATUS_BUDGET = 5; + public static final int STATUS_SETTLE = 10; + public static final int STATUS_FINAL = 15; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @GenericGenerator(name = "persistenceGenerator", strategy = "increment") @@ -34,7 +33,7 @@ public class Project { @Column(name = "type_desc") private String typeDesc; /** - * 项目状态:1项目创建,5概算完成,10预算完成,15结算中,20决算完成 + * 项目状态:1项目创建(概算),5预算,10结算,15决算 */ private int status; @Column(name = "status_desc") @@ -238,7 +237,7 @@ public class Project { } public Integer getApproveStatus() { - if(status == STATUS_CREATED || status == STATUS_ESTIMATE){ + if(status == STATUS_ESTIMATE){ return approveStatusEstimate; } if(status == STATUS_BUDGET){ diff --git a/src/main/java/cn/palmte/work/service/ActTaskDefService.java b/src/main/java/cn/palmte/work/service/ActTaskDefService.java index bf61200..a69c463 100644 --- a/src/main/java/cn/palmte/work/service/ActTaskDefService.java +++ b/src/main/java/cn/palmte/work/service/ActTaskDefService.java @@ -181,7 +181,7 @@ public class ActTaskDefService { //驳回后 更新项目状态为审批不通过 if (actUtil.isProjectProcessIns(procDefKey)) { int projectId = Integer.parseInt(processInstance.getBusinessKey()); - projectInstanceService.updateProjectApproveUnPassed(projectId, procDefKey); + projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_UNPASS); logger.info("updateProjectUnPassed projectId:{}, proDefKey:{}", projectId, procDefKey); } } @@ -199,12 +199,12 @@ public class ActTaskDefService { if (ActConstant.PROCESS_DEFKEY_FINAL.equals(procDefKey)) { if ("财务总监".equals(actTaskDef.getTaskName())) { logger.info("updateProjectPassed1 projectId:{}, proDefKey:{}", projectId, procDefKey); - projectInstanceService.updateProjectApprovePassed(projectId, procDefKey); + projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_PASSED); } } else { if ("执行董事".equals(actTaskDef.getTaskName())) { logger.info("updateProjectPassed2 projectId:{}, proDefKey:{}", projectId, procDefKey); - projectInstanceService.updateProjectApprovePassed(projectId, procDefKey); + projectInstanceService.updateApproveStatus(projectId, procDefKey, ApproveStatusEnum.APPROVAL_PASSED); } } diff --git a/src/main/java/cn/palmte/work/service/ProjectInstanceService.java b/src/main/java/cn/palmte/work/service/ProjectInstanceService.java index b70470d..2da11b5 100644 --- a/src/main/java/cn/palmte/work/service/ProjectInstanceService.java +++ b/src/main/java/cn/palmte/work/service/ProjectInstanceService.java @@ -118,15 +118,14 @@ public class ProjectInstanceService { } /** - * 项目审批不通过 + * 更新审批状态 * @param processKey 审批类型 * @see ActConstant#PROCESS_DEFKEY_ESTIMATE * @see ActConstant#PROCESS_DEFKEY_BUDGET * @see ActConstant#PROCESS_DEFKEY_SETTLE * @see ActConstant#PROCESS_DEFKEY_FINAL */ - public void updateProjectApproveUnPassed(int projectId, String processKey){ - ApproveStatusEnum approveStatusEnum = ApproveStatusEnum.APPROVAL_UNPASS; + public void updateApproveStatus(int projectId, String processKey, ApproveStatusEnum approveStatusEnum){ Project project = projectRepository.findOne(projectId); if(ActConstant.PROCESS_DEFKEY_ESTIMATE.equals(processKey)){ project.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); @@ -143,43 +142,4 @@ public class ProjectInstanceService { } - /** - * 项目审批通过 - * - * @param projectId - * @param processKey - */ - public void updateProjectApprovePassed(int projectId, String processKey){ - ApproveStatusEnum approveStatusEnum = ApproveStatusEnum.APPROVAL_PASSED; - Project project = projectRepository.findOne(projectId); - if(ActConstant.PROCESS_DEFKEY_ESTIMATE.equals(processKey)){ - //概算完成 - project.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); - project.setStatus(StatusEnum.ESTIMATE_ACCOUNTS.getStatus()); - project.setStatusDesc(StatusEnum.ESTIMATE_ACCOUNTS.getStatusDesc()); - - }else if(ActConstant.PROCESS_DEFKEY_BUDGET.equals(processKey)){ - //预算完成 - project.setApproveStatusBudget(approveStatusEnum.getApproveStatus()); - project.setStatus(StatusEnum.BUDGET_ACCOUNTS.getStatus()); - project.setStatusDesc(StatusEnum.BUDGET_ACCOUNTS.getStatusDesc()); - - }else if(ActConstant.PROCESS_DEFKEY_SETTLE.equals(processKey)){ - project.setApproveStatusSettle(approveStatusEnum.getApproveStatus()); - - }else if(ActConstant.PROCESS_DEFKEY_FINAL.equals(processKey)){ - //决算完成 - project.setApproveStatusFinal(approveStatusEnum.getApproveStatus()); - project.setStatus(StatusEnum.FINAL_ACCOUNTS.getStatus()); - project.setStatusDesc(StatusEnum.FINAL_ACCOUNTS.getStatusDesc()); - - } - - project.setApproveId(0); - project.setApproveName(""); - - project.setLastUpdateTime(new Date()); - projectRepository.saveAndFlush(project); - } - } diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java index fa04f4d..c5d4655 100644 --- a/src/main/java/cn/palmte/work/service/ProjectService.java +++ b/src/main/java/cn/palmte/work/service/ProjectService.java @@ -182,8 +182,8 @@ public class ProjectService { @Transactional(rollbackFor = RuntimeException.class) 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.setStatus(StatusEnum.ESTIMATE_ACCOUNTS.getStatus()); + p.setStatusDesc(StatusEnum.ESTIMATE_ACCOUNTS.getStatusDesc()); p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); p = projectRepository.saveAndFlush(p); @@ -202,8 +202,8 @@ public class ProjectService { private Project addProject(Project project, Admin admin, ApproveStatusEnum approveStatusEnum) { project.setTypeDesc(TypeEnum.parseType(project.getType()).getTypeDesc()); - project.setStatus(StatusEnum.CREATED.getStatus()); - project.setStatusDesc(StatusEnum.CREATED.getStatusDesc()); + project.setStatus(StatusEnum.ESTIMATE_ACCOUNTS.getStatus()); + project.setStatusDesc(StatusEnum.ESTIMATE_ACCOUNTS.getStatusDesc()); project.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); project.setCreatorId(admin.getId()); project.setCreatorName(admin.getUserName()); @@ -250,10 +250,14 @@ public class ProjectService { /** * 编辑预算保存项目并审核 */ - @Transactional(rollbackFor = RuntimeException.class) - public Project budgetEditSaveAndApprove(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin) throws Exception { - if(null != projectInDb.getApproveStatusBudget() && - ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == projectInDb.getApproveStatusBudget()){ + //@Transactional(rollbackFor = RuntimeException.class) + public void budgetEditSaveAndApprove(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin) throws Exception { + Integer approveStatusBudget = projectInDb.getApproveStatusBudget(); + + budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING); + + if(null != approveStatusBudget && + ApproveStatusEnum.APPROVAL_UNPASS.getApproveStatus() == approveStatusBudget){ //审核不通过的情况下重新编辑后就完成当前任务 List budgetProcessInsIds = projectInstanceService.getBudgetProcessInsIds(projectInDb); if(CollectionUtil.isNotEmpty(budgetProcessInsIds)){ @@ -265,7 +269,6 @@ public class ProjectService { //第一次或者重新发起一个流程实例 projectInstanceService.startBudgetProcessInstance(projectInDb, admin); } - return budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING); } /** * 编辑预算保存项目 diff --git a/src/main/resources/templates/admin/project_list.ftl b/src/main/resources/templates/admin/project_list.ftl index 83ceafc..6d301db 100644 --- a/src/main/resources/templates/admin/project_list.ftl +++ b/src/main/resources/templates/admin/project_list.ftl @@ -64,11 +64,10 @@
@@ -201,7 +200,7 @@
<#--<@shiro.hasPermission name="PROJECT_EDIT">--> - <#if list.approveStatusEstimate==0 || list.approveStatusEstimate==3> + <#if list.status==1 && (approveStatusEstimate==0 || list.approveStatusEstimate==3)>