update 调整人员查询

This commit is contained in:
songgaoshuai 2023-08-11 17:28:55 +08:00
parent 5e3cedb035
commit 73cf4e2a19
3 changed files with 35 additions and 20 deletions

View File

@ -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<SysUserVo> getUserListByIds(List<Long> userIds);
/**
* 按照角色id查询关联用户id
*
* @param roleIds 角色id
* @return 结果
*/
List<SysUserRole> getUserRoleListByRoleIds(List<Long> roleIds);
}

View File

@ -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<TaskVo> getWorkflowDeleteMultiInstanceList(String taskId) {
Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(taskId).singleResult();
List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId())
.processInstanceId(task.getProcessInstanceId()).list();
List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list();
MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey());
List<TaskVo> taskListVo = new ArrayList<>();
if (multiInstance == null) {
@ -124,8 +126,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
}
return taskListVo;
} else if (multiInstance.getType() instanceof ParallelMultiInstanceBehavior) {
List<Task> tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId())
&& e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey()));
List<Task> tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId()) && e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey()));
if (CollectionUtil.isNotEmpty(tasks)) {
List<Long> userIds = StreamUtils.toList(tasks, e -> Long.valueOf(e.getAssignee()));
List<SysUserVo> sysUsers = null;
@ -196,4 +197,14 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
});
return sysUserVos;
}
/**
* 按照角色id查询关联用户id
*
* @param roleIds 角色id
*/
@Override
public List<SysUserRole> getUserRoleListByRoleIds(List<Long> roleIds) {
return sysUserRoleMapper.selectList(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds));
}
}

View File

@ -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<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId()));
if (CollUtil.isNotEmpty(groupList)) {
List<Long> groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId()));
List<SysUserRole> sysUserRoles = SYS_USER_ROLE_MAPPER.selectList(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, groupIds));
List<SysUserRole> sysUserRoles = I_WORK_FLOW_USER_SERVICE.getUserRoleListByRoleIds(groupIds);
if (CollUtil.isNotEmpty(sysUserRoles)) {
participantVo.setGroupIds(groupIds);
List<Long> userIdList = StreamUtils.toList(sysUserRoles, SysUserRole::getUserId);
List<SysUser> sysUsers = SYS_USER_MAPPER.selectList(
new LambdaQueryWrapper<SysUser>().in(SysUser::getUserId, userIdList).eq(SysUser::getStatus, UserStatus.OK.getCode()));
List<SysUserVo> sysUsers = I_WORK_FLOW_USER_SERVICE.getUserListByIds(userIdList);
if (CollUtil.isNotEmpty(sysUsers)) {
List<Long> userIds = StreamUtils.toList(sysUsers, SysUser::getUserId);
List<String> nickNames = StreamUtils.toList(sysUsers, SysUser::getNickName);
List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId);
List<String> 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<SysUser> sysUsers = SYS_USER_MAPPER.selectList(
new LambdaQueryWrapper<SysUser>().in(SysUser::getUserId, userIdList).eq(SysUser::getStatus, UserStatus.OK.getCode()));
List<SysUserVo> sysUsers = I_WORK_FLOW_USER_SERVICE.getUserListByIds(userIdList);
if (CollUtil.isNotEmpty(sysUsers)) {
List<Long> userIds = StreamUtils.toList(sysUsers, SysUser::getUserId);
List<String> nickNames = StreamUtils.toList(sysUsers, SysUser::getNickName);
List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId);
List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName);
participantVo.setCandidate(userIds);
participantVo.setCandidateName(nickNames);
if (StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList)) {