diff --git a/klp-wms/src/main/java/com/klp/controller/WmsApprovalController.java b/klp-wms/src/main/java/com/klp/controller/WmsApprovalController.java index 62f50a9a..aa13c246 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsApprovalController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsApprovalController.java @@ -142,4 +142,18 @@ public class WmsApprovalController extends BaseController { public R> getTasks(@PathVariable Long approvalId) { return R.ok(iWmsApprovalTaskService.queryByApprovalId(approvalId)); } + + /** + * 撤销审批 + * + * @param approvalId 审批ID + */ + @Log(title = "撤销审批", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/cancel") + public R> cancelApproval( + @NotNull(message = "审批ID不能为空") + @RequestParam Long approvalId) { + return R.ok(iWmsApprovalService.cancelApproval(approvalId)); + } } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsApprovalService.java b/klp-wms/src/main/java/com/klp/service/IWmsApprovalService.java index 9dd7ec2b..a4ab6545 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsApprovalService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsApprovalService.java @@ -65,4 +65,12 @@ public interface IWmsApprovalService { * @return 操作结果 */ Map rejectTask(Long taskId, String approvalOpinion); + + /** + * 撤销审批 + * + * @param approvalId 审批ID + * @return 操作结果 + */ + Map cancelApproval(Long approvalId); } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsApprovalTaskService.java b/klp-wms/src/main/java/com/klp/service/IWmsApprovalTaskService.java index fb9b19c7..03ca4597 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsApprovalTaskService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsApprovalTaskService.java @@ -31,4 +31,12 @@ public interface IWmsApprovalTaskService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); List queryByApprovalId(Long approvalId); + + /** + * 根据审批ID删除所有相关任务 + * + * @param approvalId 审批ID + * @return 删除数量 + */ + Integer deleteByApprovalId(Long approvalId); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalServiceImpl.java index 291b0ed9..801ee225 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalServiceImpl.java @@ -47,6 +47,7 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService { private final WmsApprovalMapper baseMapper; private final WmsApprovalTaskMapper approvalTaskMapper; + private final IWmsApprovalTaskService approvalTaskService; private final WmsLeaveRequestMapper leaveRequestMapper; private final WmsOutRequestMapper outRequestMapper; private final ISysUserService userService; @@ -499,4 +500,53 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService { return result; } + @Override + @Transactional(rollbackFor = Exception.class) + public Map cancelApproval(Long approvalId) { + Map result = new HashMap<>(); + result.put("success", false); + + if (approvalId == null) { + result.put("message", "审批ID不能为空"); + return result; + } + + WmsApproval approval = baseMapper.selectById(approvalId); + if (approval == null) { + result.put("message", "审批记录不存在"); + return result; + } + + if ("已撤销".equals(approval.getApprovalStatus())) { + result.put("message", "该审批已被撤销"); + return result; + } + + if ("已同意".equals(approval.getApprovalStatus())) { + result.put("message", "已通过的审批不能撤销"); + return result; + } + + List tasks = approvalTaskService.queryByApprovalId(approvalId); + if (tasks != null && !tasks.isEmpty()) { + for (WmsApprovalTaskVo task : tasks) { + if (task.getTaskStatus() != null && !"pending".equals(task.getTaskStatus())) { + result.put("message", "该审批已被审批,不能撤销(审批人:" + task.getApproverName() + ",状态:" + task.getTaskStatus() + ")"); + return result; + } + } + } + + Integer deletedCount = approvalTaskService.deleteByApprovalId(approvalId); + + approval.setApprovalStatus("已撤销"); + approval.setFinalStatus("cancelled"); + baseMapper.updateById(approval); + + result.put("success", true); + result.put("message", "撤销成功"); + result.put("deletedTaskCount", deletedCount); + return result; + } + } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java index 35a99fa7..df1759a2 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java @@ -201,4 +201,10 @@ public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService { .eq(WmsApprovalTask::getApprovalId, approvalId) .orderByAsc(WmsApprovalTask::getCreateTime)); } + + @Override + public Integer deleteByApprovalId(Long approvalId) { + return baseMapper.delete(Wrappers.lambdaQuery() + .eq(WmsApprovalTask::getApprovalId, approvalId)); + } }