From 73cf4e2a198bbbbf16e377ff736621461da570bc Mon Sep 17 00:00:00 2001 From: songgaoshuai <1742057357@qq.com> Date: Fri, 11 Aug 2023 17:28:55 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IWorkflowUserService.java | 9 +++++++ .../service/impl/WorkflowUserServiceImpl.java | 19 ++++++++++--- .../dromara/workflow/utils/WorkflowUtils.java | 27 ++++++++----------- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IWorkflowUserService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IWorkflowUserService.java index d13247af7..d167163b8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IWorkflowUserService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IWorkflowUserService.java @@ -1,6 +1,7 @@ package org.dromara.workflow.service; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysUserRole; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.workflow.domain.bo.SysUserMultiBo; import org.dromara.workflow.domain.vo.TaskVo; @@ -37,4 +38,12 @@ public interface IWorkflowUserService { * @return 结果 */ List getUserListByIds(List userIds); + + /** + * 按照角色id查询关联用户id + * + * @param roleIds 角色id + * @return 结果 + */ + List getUserRoleListByRoleIds(List roleIds); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowUserServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowUserServiceImpl.java index 6781ed185..ebdb2b74e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowUserServiceImpl.java @@ -12,10 +12,12 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.SysUserRole; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.mapper.SysUserRoleMapper; import org.dromara.workflow.domain.bo.SysUserMultiBo; import org.dromara.workflow.domain.vo.MultiInstanceVo; import org.dromara.workflow.domain.vo.TaskVo; @@ -44,6 +46,7 @@ import java.util.stream.Collectors; public class WorkflowUserServiceImpl implements IWorkflowUserService { private final SysUserMapper sysUserMapper; + private final SysUserRoleMapper sysUserRoleMapper; private final SysDeptMapper sysDeptMapper; private final TaskService taskService; private final RuntimeService runtimeService; @@ -90,8 +93,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService { @Override public List getWorkflowDeleteMultiInstanceList(String taskId) { Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(taskId).singleResult(); - List taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()) - .processInstanceId(task.getProcessInstanceId()).list(); + List taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list(); MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()); List taskListVo = new ArrayList<>(); if (multiInstance == null) { @@ -124,8 +126,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService { } return taskListVo; } else if (multiInstance.getType() instanceof ParallelMultiInstanceBehavior) { - List tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId()) - && e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey())); + List tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId()) && e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey())); if (CollectionUtil.isNotEmpty(tasks)) { List userIds = StreamUtils.toList(tasks, e -> Long.valueOf(e.getAssignee())); List sysUsers = null; @@ -196,4 +197,14 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService { }); return sysUserVos; } + + /** + * 按照角色id查询关联用户id + * + * @param roleIds 角色id + */ + @Override + public List getUserRoleListByRoleIds(List roleIds) { + return sysUserRoleMapper.selectList(new LambdaQueryWrapper().in(SysUserRole::getRoleId, roleIds)); + } } 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 a412642be..f98ca6374 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 @@ -4,10 +4,8 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ObjectUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import org.dromara.common.core.enums.UserStatus; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StreamUtils; @@ -15,10 +13,8 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.reflect.ReflectUtils; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.tenant.helper.TenantHelper; -import org.dromara.system.domain.SysUser; import org.dromara.system.domain.SysUserRole; -import org.dromara.system.mapper.SysUserMapper; -import org.dromara.system.mapper.SysUserRoleMapper; +import org.dromara.system.domain.vo.SysUserVo; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.enums.BusinessStatusEnum; import org.dromara.workflow.domain.ActHiProcinst; @@ -27,6 +23,8 @@ import org.dromara.workflow.domain.vo.ParticipantVo; import org.dromara.workflow.domain.vo.ProcessInstanceVo; import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd; import org.dromara.workflow.service.IActHiProcinstService; +import org.dromara.workflow.service.IWorkflowUserService; +import org.dromara.workflow.service.impl.WorkflowUserServiceImpl; import org.flowable.bpmn.converter.BpmnXMLConverter; import org.flowable.bpmn.model.*; import org.flowable.common.engine.api.delegate.Expression; @@ -62,8 +60,7 @@ public class WorkflowUtils { } private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class); - private static final SysUserMapper SYS_USER_MAPPER = SpringUtils.getBean(SysUserMapper.class); - private static final SysUserRoleMapper SYS_USER_ROLE_MAPPER = SpringUtils.getBean(SysUserRoleMapper.class); + private static final IWorkflowUserService I_WORK_FLOW_USER_SERVICE = SpringUtils.getBean(WorkflowUserServiceImpl.class); private static final IActHiProcinstService I_ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.class); /** @@ -198,15 +195,14 @@ public class WorkflowUtils { List groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId())); if (CollUtil.isNotEmpty(groupList)) { List groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId())); - List sysUserRoles = SYS_USER_ROLE_MAPPER.selectList(new LambdaQueryWrapper().in(SysUserRole::getRoleId, groupIds)); + List sysUserRoles = I_WORK_FLOW_USER_SERVICE.getUserRoleListByRoleIds(groupIds); if (CollUtil.isNotEmpty(sysUserRoles)) { participantVo.setGroupIds(groupIds); List userIdList = StreamUtils.toList(sysUserRoles, SysUserRole::getUserId); - List sysUsers = SYS_USER_MAPPER.selectList( - new LambdaQueryWrapper().in(SysUser::getUserId, userIdList).eq(SysUser::getStatus, UserStatus.OK.getCode())); + List sysUsers = I_WORK_FLOW_USER_SERVICE.getUserListByIds(userIdList); if (CollUtil.isNotEmpty(sysUsers)) { - List userIds = StreamUtils.toList(sysUsers, SysUser::getUserId); - List nickNames = StreamUtils.toList(sysUsers, SysUser::getNickName); + List userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId); + List nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName); participantVo.setCandidate(userIds); participantVo.setCandidateName(nickNames); participantVo.setClaim(!StringUtils.isBlank(task.getAssignee())); @@ -222,11 +218,10 @@ public class WorkflowUtils { } } - List sysUsers = SYS_USER_MAPPER.selectList( - new LambdaQueryWrapper().in(SysUser::getUserId, userIdList).eq(SysUser::getStatus, UserStatus.OK.getCode())); + List sysUsers = I_WORK_FLOW_USER_SERVICE.getUserListByIds(userIdList); if (CollUtil.isNotEmpty(sysUsers)) { - List userIds = StreamUtils.toList(sysUsers, SysUser::getUserId); - List nickNames = StreamUtils.toList(sysUsers, SysUser::getNickName); + List userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId); + List nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName); participantVo.setCandidate(userIds); participantVo.setCandidateName(nickNames); if (StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList)) {