From 23c87187de2ec7839f3a78d3177a5eab459251fb Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 3 Jan 2023 11:10:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=92=A4=E5=9B=9E=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=AE=A1=E7=90=86=E5=91=98admin=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E6=92=A4=E5=9B=9E=E4=BB=BB=E4=BD=95=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProcessController.java | 37 ++++++++++++++----- .../work/service/ProjectProcessService.java | 10 +++++ 2 files changed, 37 insertions(+), 10 deletions(-) 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 2cfa205..4be9c11 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -36,6 +36,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; import javax.persistence.EntityManager; @@ -325,10 +326,7 @@ public class ProcessController { @ResponseBody @GetMapping("/{id}") public ProjectProcessDetail get(@PathVariable int id) { - ProjectProcess process = processService.getById(id); - if (process == null) { - throw ErrorMessageException.failed("流程不存在"); - } + ProjectProcess process = obtainProjectProcess(id); ProjectProcessDetail detail = new ProjectProcessDetail(); detail.setProcessId(id); @@ -476,10 +474,7 @@ public class ProcessController { @PutMapping("/{id}") @Transactional(rollbackFor = Exception.class) public void update(@PathVariable int id, @RequestBody @Valid ProcessUpdateForm form) throws Exception { - ProjectProcess entity = processService.getById(id); - if (entity == null) { - throw ErrorMessageException.failed("流程不存在"); - } + ProjectProcess entity = obtainProjectProcess(id); Integer processId = entity.getId(); ProcessType processType = entity.getProcessType(); @@ -647,7 +642,29 @@ public class ProcessController { @PostMapping("/revoke/{id}") public void revoke(@PathVariable("id") int id) { // TODO 发起申请的人,在第一个人还没审批的情况下可以撤回 - processService.updateProcessStatus(id, ProcessStatus.draft); + Admin admin = InterfaceUtil.getAdmin(); + if (admin == null) { + throw ErrorMessageException.failed("权限不足"); + } + if (Objects.equals("admin", admin.getUserName())) { + processService.revoke(id); + } + else { + ProjectProcess process = obtainProjectProcess(id); + Integer applyPersonId = process.getApplyPersonId(); + if (!Objects.equals(admin.getId(), applyPersonId)) { + throw ErrorMessageException.failed("流程不属于自己"); + } + processService.revoke(id); + } + } + + private ProjectProcess obtainProjectProcess(int id) { + ProjectProcess projectProcess = processService.getById(id); + if (projectProcess == null) { + throw ErrorMessageException.failed("流程不存在"); + } + return projectProcess; } @ResponseBody @@ -657,7 +674,7 @@ public class ProcessController { Integer applyUserId = admin.getId(); int update = jdbcTemplate.update("delete from project_process where id =? and apply_person_id=?", id, applyUserId); if (update != 1) { - throw new RuntimeException("删除的流程不存在或者不属于自己"); + throw ErrorMessageException.failed("删除的流程不存在或者不属于自己"); } } diff --git a/src/main/java/cn/palmte/work/service/ProjectProcessService.java b/src/main/java/cn/palmte/work/service/ProjectProcessService.java index cf5dad8..67cc405 100644 --- a/src/main/java/cn/palmte/work/service/ProjectProcessService.java +++ b/src/main/java/cn/palmte/work/service/ProjectProcessService.java @@ -165,6 +165,16 @@ public class ProjectProcessService { jdbcTemplate.update("update project_process set `status`=? where id=?", status.getValue(), processId); } + /** + * 撤回流程 + * + * @param processId 撤回的ID + */ + public void revoke(int processId) { + jdbcTemplate.update("update project_process set current_audit=?, current_audit_id=?, `status`=? where id=?", + null, null, ProcessStatus.draft.getValue(), processId); + } + /** * 根据流程ID查询销售合同 *