diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java index 34a63b91b..f1b4033c2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java @@ -15,11 +15,21 @@ public interface FlowConstant { String MESSAGE_CURRENT_TASK_IS_NULL = "当前任务不存在或你不是任务办理人"; - String MESSAGE_SUSPENDED = "当前任务已"; + String MESSAGE_SUSPENDED = "当前任务已挂起"; /** * 连线 */ String SEQUENCE_FLOW = "sequenceFlow"; + /** + * 流程委派标识 + */ + String PENDING = "PENDING"; + + /** + * 流程启动者 + */ + String INITIATOR = "initiator"; + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index c97d644f4..44b92fdaa 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -72,10 +72,11 @@ public class ActTaskServiceImpl implements IActTaskService { map.put("taskId", taskResult.get(0).getId()); return map; } - // 设置启动人 Authentication.setAuthenticatedUserId(String.valueOf(LoginHelper.getUserId())); // 启动流程实例(提交申请) Map variables = startProcessBo.getVariables(); + // 设置启动人 + variables.put(FlowConstant.INITIATOR, String.valueOf(LoginHelper.getUserId())); // 启动跳过表达式 variables.put("_FLOWABLE_SKIP_EXPRESSION_ENABLED", true); ProcessInstance pi = runtimeService.startProcessInstanceByKeyAndTenantId(startProcessBo.getProcessKey(), startProcessBo.getBusinessKey(), variables, TenantHelper.getTenantId()); @@ -115,6 +116,14 @@ public class ActTaskServiceImpl implements IActTaskService { if (task == null) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } + //办理委托任务 + if (ObjectUtil.isNotEmpty(task.getDelegationState()) && FlowConstant.PENDING.equals(task.getDelegationState().name())) { + taskService.resolveTask(completeTaskBo.getTaskId()); + TaskEntity newTask = WorkflowUtils.createNewTask(task); + taskService.addComment(newTask.getId(), task.getProcessInstanceId(), completeTaskBo.getMessage()); + taskService.complete(newTask.getId()); + return true; + } //办理意见 taskService.addComment(completeTaskBo.getTaskId(), task.getProcessInstanceId(), StringUtils.isBlank(completeTaskBo.getMessage()) ? "同意" : completeTaskBo.getMessage()); //办理任务 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index 7ee631121..bd7a16930 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -130,6 +130,11 @@ public class WorkflowUtils { } } + /** + * 创建一个新任务 + * + * @param currentTask 参数 + */ public static TaskEntity createNewTask(Task currentTask) { TaskEntity task = null; if (ObjectUtil.isNotEmpty(currentTask)) {