ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/BusinessStatusEnum.java
@@ -89,5 +89,64 @@ throw new ServiceException("流程状态为空!"); } } /** * 撤销流程校验 * * @param status 状态 */ public static void checkCancelStatus(String status) { if (CANCEL.getStatus().equals(status)) { throw new ServiceException("该单据已撤销!"); } else if (FINISH.getStatus().equals(status)) { throw new ServiceException("该单据已完成申请!"); } else if (INVALID.getStatus().equals(status)) { throw new ServiceException("该单据已作废!"); } else if (TERMINATION.getStatus().equals(status)) { throw new ServiceException("该单据已终止!"); } else if (BACK.getStatus().equals(status)) { throw new ServiceException("该单据已退回!"); } else if (StringUtils.isBlank(status)) { throw new ServiceException("流程状态为空!"); } } /** * 驳回流程校验 * * @param status 状态 */ public static void checkBackStatus(String status) { if (BACK.getStatus().equals(status)) { throw new ServiceException("该单据已退回!"); } else if (FINISH.getStatus().equals(status)) { throw new ServiceException("该单据已完成申请!"); } else if (INVALID.getStatus().equals(status)) { throw new ServiceException("该单据已作废!"); } else if (TERMINATION.getStatus().equals(status)) { throw new ServiceException("该单据已终止!"); } else if (CANCEL.getStatus().equals(status)) { throw new ServiceException("该单据已撤销!"); } else if (StringUtils.isBlank(status)) { throw new ServiceException("流程状态为空!"); } } /** * 作废,终止流程校验 * * @param status 状态 */ public static void checkInvalidStatus(String status) { if (FINISH.getStatus().equals(status)) { throw new ServiceException("该单据已完成申请!"); } else if (INVALID.getStatus().equals(status)) { throw new ServiceException("该单据已作废!"); } else if (TERMINATION.getStatus().equals(status)) { throw new ServiceException("该单据已终止!"); } else if (StringUtils.isBlank(status)) { throw new ServiceException("流程状态为空!"); } } } ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java
@@ -60,7 +60,6 @@ import java.util.*; import java.util.stream.Collectors; /** * 流程实例 服务层实现 * @@ -464,10 +463,8 @@ for (Task task : StreamUtils.filter(list, e -> StringUtils.isBlank(e.getParentTaskId()))) { taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.INVALID.getStatus(), deleteReason); } HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInvalidBo.getProcessInstanceId()).singleResult(); if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.FINISH.getStatus().equals(historicProcessInstance.getBusinessStatus())) { throw new ServiceException("该单据已完成申请!"); } HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInvalidBo.getProcessInstanceId()).singleResult(); BusinessStatusEnum.checkInvalidStatus(historicProcessInstance.getBusinessStatus()); runtimeService.updateBusinessStatus(processInvalidBo.getProcessInstanceId(), BusinessStatusEnum.INVALID.getStatus()); runtimeService.deleteProcessInstance(processInvalidBo.getProcessInstanceId(), deleteReason); FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey()); @@ -577,9 +574,7 @@ if (processInstance.isSuspended()) { throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED); } if (BusinessStatusEnum.CANCEL.getStatus().equals(processInstance.getBusinessStatus())) { throw new ServiceException("该单据已撤销!"); } BusinessStatusEnum.checkCancelStatus(processInstance.getBusinessStatus()); List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list(); for (Task task : taskList) { taskService.setAssignee(task.getId(), String.valueOf(LoginHelper.getUserId())); ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java
@@ -474,9 +474,7 @@ } HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery() .processInstanceBusinessKey(task.getProcessInstanceId()).singleResult(); if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.TERMINATION.getStatus().equals(historicProcessInstance.getBusinessStatus())) { throw new ServiceException("该单据已终止!"); } BusinessStatusEnum.checkInvalidStatus(historicProcessInstance.getBusinessStatus()); try { if (StringUtils.isBlank(terminationBo.getComment())) { terminationBo.setComment(LoginHelper.getLoginUser().getNickname() + "终止了申请"); @@ -654,6 +652,7 @@ if (BusinessStatusEnum.BACK.getStatus().equals(processInstance.getBusinessStatus())) { throw new ServiceException("该单据已退回!"); } BusinessStatusEnum.checkBackStatus(processInstance.getBusinessStatus()); //判断是否有多个任务 List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list(); //申请人节点