diff --git a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java index 45e5db8..957d2d9 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -686,7 +686,6 @@ public class ProcessController { @ResponseBody @PostMapping("/revoke/{id}") public void revoke(@PathVariable("id") int id) { - // TODO 发起申请的人,在第一个人还没审批的情况下可以撤回 Admin admin = getLoginUser(); if (isAdministrator(admin)) { processService.revoke(id); @@ -699,13 +698,23 @@ public class ProcessController { } List projectTaskRecords = getProjectTaskRecords(id, process.getProcessType()); if (projectTaskRecords.size() > 1) { - // 有多个人审核过 - throw ErrorMessageException.failed("流程已经在审核中,不能撤回"); + // 可能存在撤销情况 会出现 多次 -> 提交申请 提交销售合同流程 + // 第一个审核详情肯定是 提交申请 ,检查最后一个是不是 提交申请 是的话就可以撤回 + ProjectTaskRecord lastRecord = projectTaskRecords.get(projectTaskRecords.size() - 1); + if (!isStartAuditProgress(lastRecord)) { + // 有多个人审核过 + throw ErrorMessageException.failed("流程已经在审核中,不能撤回"); + } } processService.revoke(id); } } + private boolean isStartAuditProgress(ProjectTaskRecord record) { + return Objects.equals("提交申请", record.getTaskName()) + && Objects.equals("提交销售合同流程", record.getTaskComment()); + } + private ProjectProcess obtainProjectProcess(int id) { ProjectProcess projectProcess = processService.getById(id); if (projectProcess == null) {