ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java
@@ -159,15 +159,8 @@ @Transactional(rollbackFor = Exception.class) public boolean completeTask(CompleteTaskBo completeTaskBo) { try { List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles(); String userId = String.valueOf(LoginHelper.getUserId()); TaskQuery taskQuery = QueryUtils.taskQuery(); taskQuery.taskId(completeTaskBo.getTaskId()).taskCandidateOrAssigned(userId); if (CollUtil.isNotEmpty(roles)) { List<String> groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); taskQuery.taskCandidateGroupIn(groupIds); } Task task = taskQuery.singleResult(); Task task = WorkflowUtils.getTaskByCurrUser(completeTaskBo.getTaskId()); if (task == null) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -470,8 +463,8 @@ @Override @Transactional(rollbackFor = Exception.class) public boolean delegateTask(DelegateBo delegateBo) { TaskQuery query = QueryUtils.taskQuery(); TaskEntity task = (TaskEntity) query.taskId(delegateBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult(); Task task = WorkflowUtils.getTaskByCurrUser(delegateBo.getTaskId()); if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -544,7 +537,7 @@ */ @Override public boolean transferTask(TransmitBo transmitBo) { Task task = QueryUtils.taskQuery().taskId(transmitBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult(); Task task = WorkflowUtils.getTaskByCurrUser(transmitBo.getTaskId()); if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -669,9 +662,9 @@ @Override @Transactional(rollbackFor = Exception.class) public String backProcess(BackProcessBo backProcessBo) { TaskQuery query = QueryUtils.taskQuery(); String userId = String.valueOf(LoginHelper.getUserId()); Task task = query.taskId(backProcessBo.getTaskId()).taskCandidateOrAssigned(userId).singleResult(); Task task = WorkflowUtils.getTaskByCurrUser(backProcessBo.getTaskId()); if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.SpringUtils; @@ -14,6 +15,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.reflect.ReflectUtils; import org.dromara.common.mail.utils.MailUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; @@ -38,6 +40,7 @@ import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; import org.flowable.identitylink.api.history.HistoricIdentityLink; import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.service.impl.persistence.entity.TaskEntity; @@ -340,4 +343,23 @@ } } } /** * 根据任务id查询 当前用户的任务,检查 当前人员 是否是该 taskId 的办理人 * @param taskId 任务id * @return */ public static Task getTaskByCurrUser(String taskId){ TaskQuery taskQuery = QueryUtils.taskQuery(); taskQuery.taskId(taskId).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())); List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles(); if (CollUtil.isNotEmpty(roles)) { List<String> groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); taskQuery.taskCandidateGroupIn(groupIds); } Task task = taskQuery.singleResult(); return task; } }