mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-30 15:16:41 +08:00
update 调整人员查询
This commit is contained in:
parent
5e3cedb035
commit
73cf4e2a19
@ -1,6 +1,7 @@
|
|||||||
package org.dromara.workflow.service;
|
package org.dromara.workflow.service;
|
||||||
|
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.system.domain.SysUserRole;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.workflow.domain.bo.SysUserMultiBo;
|
import org.dromara.workflow.domain.bo.SysUserMultiBo;
|
||||||
import org.dromara.workflow.domain.vo.TaskVo;
|
import org.dromara.workflow.domain.vo.TaskVo;
|
||||||
@ -37,4 +38,12 @@ public interface IWorkflowUserService {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
List<SysUserVo> getUserListByIds(List<Long> userIds);
|
List<SysUserVo> getUserListByIds(List<Long> userIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按照角色id查询关联用户id
|
||||||
|
*
|
||||||
|
* @param roleIds 角色id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
List<SysUserRole> getUserRoleListByRoleIds(List<Long> roleIds);
|
||||||
}
|
}
|
||||||
|
@ -12,10 +12,12 @@ import org.dromara.common.core.utils.StringUtils;
|
|||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
import org.dromara.system.domain.SysUser;
|
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.SysDeptVo;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.mapper.SysDeptMapper;
|
import org.dromara.system.mapper.SysDeptMapper;
|
||||||
import org.dromara.system.mapper.SysUserMapper;
|
import org.dromara.system.mapper.SysUserMapper;
|
||||||
|
import org.dromara.system.mapper.SysUserRoleMapper;
|
||||||
import org.dromara.workflow.domain.bo.SysUserMultiBo;
|
import org.dromara.workflow.domain.bo.SysUserMultiBo;
|
||||||
import org.dromara.workflow.domain.vo.MultiInstanceVo;
|
import org.dromara.workflow.domain.vo.MultiInstanceVo;
|
||||||
import org.dromara.workflow.domain.vo.TaskVo;
|
import org.dromara.workflow.domain.vo.TaskVo;
|
||||||
@ -44,6 +46,7 @@ import java.util.stream.Collectors;
|
|||||||
public class WorkflowUserServiceImpl implements IWorkflowUserService {
|
public class WorkflowUserServiceImpl implements IWorkflowUserService {
|
||||||
|
|
||||||
private final SysUserMapper sysUserMapper;
|
private final SysUserMapper sysUserMapper;
|
||||||
|
private final SysUserRoleMapper sysUserRoleMapper;
|
||||||
private final SysDeptMapper sysDeptMapper;
|
private final SysDeptMapper sysDeptMapper;
|
||||||
private final TaskService taskService;
|
private final TaskService taskService;
|
||||||
private final RuntimeService runtimeService;
|
private final RuntimeService runtimeService;
|
||||||
@ -90,8 +93,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
|
|||||||
@Override
|
@Override
|
||||||
public List<TaskVo> getWorkflowDeleteMultiInstanceList(String taskId) {
|
public List<TaskVo> getWorkflowDeleteMultiInstanceList(String taskId) {
|
||||||
Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(taskId).singleResult();
|
Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).taskId(taskId).singleResult();
|
||||||
List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId())
|
List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(task.getProcessInstanceId()).list();
|
||||||
.processInstanceId(task.getProcessInstanceId()).list();
|
|
||||||
MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey());
|
MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey());
|
||||||
List<TaskVo> taskListVo = new ArrayList<>();
|
List<TaskVo> taskListVo = new ArrayList<>();
|
||||||
if (multiInstance == null) {
|
if (multiInstance == null) {
|
||||||
@ -124,8 +126,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
|
|||||||
}
|
}
|
||||||
return taskListVo;
|
return taskListVo;
|
||||||
} else if (multiInstance.getType() instanceof ParallelMultiInstanceBehavior) {
|
} else if (multiInstance.getType() instanceof ParallelMultiInstanceBehavior) {
|
||||||
List<Task> tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId())
|
List<Task> tasks = StreamUtils.filter(taskList, e -> StringUtils.isBlank(e.getParentTaskId()) && !e.getExecutionId().equals(task.getExecutionId()) && e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey()));
|
||||||
&& e.getTaskDefinitionKey().equals(task.getTaskDefinitionKey()));
|
|
||||||
if (CollectionUtil.isNotEmpty(tasks)) {
|
if (CollectionUtil.isNotEmpty(tasks)) {
|
||||||
List<Long> userIds = StreamUtils.toList(tasks, e -> Long.valueOf(e.getAssignee()));
|
List<Long> userIds = StreamUtils.toList(tasks, e -> Long.valueOf(e.getAssignee()));
|
||||||
List<SysUserVo> sysUsers = null;
|
List<SysUserVo> sysUsers = null;
|
||||||
@ -196,4 +197,14 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
|
|||||||
});
|
});
|
||||||
return sysUserVos;
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,8 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
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.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.SpringUtils;
|
import org.dromara.common.core.utils.SpringUtils;
|
||||||
import org.dromara.common.core.utils.StreamUtils;
|
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.core.utils.reflect.ReflectUtils;
|
||||||
import org.dromara.common.json.utils.JsonUtils;
|
import org.dromara.common.json.utils.JsonUtils;
|
||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
import org.dromara.system.domain.SysUser;
|
|
||||||
import org.dromara.system.domain.SysUserRole;
|
import org.dromara.system.domain.SysUserRole;
|
||||||
import org.dromara.system.mapper.SysUserMapper;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.mapper.SysUserRoleMapper;
|
|
||||||
import org.dromara.workflow.common.constant.FlowConstant;
|
import org.dromara.workflow.common.constant.FlowConstant;
|
||||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||||
import org.dromara.workflow.domain.ActHiProcinst;
|
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.domain.vo.ProcessInstanceVo;
|
||||||
import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd;
|
import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd;
|
||||||
import org.dromara.workflow.service.IActHiProcinstService;
|
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.converter.BpmnXMLConverter;
|
||||||
import org.flowable.bpmn.model.*;
|
import org.flowable.bpmn.model.*;
|
||||||
import org.flowable.common.engine.api.delegate.Expression;
|
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 ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class);
|
||||||
private static final SysUserMapper SYS_USER_MAPPER = SpringUtils.getBean(SysUserMapper.class);
|
private static final IWorkflowUserService I_WORK_FLOW_USER_SERVICE = SpringUtils.getBean(WorkflowUserServiceImpl.class);
|
||||||
private static final SysUserRoleMapper SYS_USER_ROLE_MAPPER = SpringUtils.getBean(SysUserRoleMapper.class);
|
|
||||||
private static final IActHiProcinstService I_ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.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()));
|
List<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId()));
|
||||||
if (CollUtil.isNotEmpty(groupList)) {
|
if (CollUtil.isNotEmpty(groupList)) {
|
||||||
List<Long> groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId()));
|
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)) {
|
if (CollUtil.isNotEmpty(sysUserRoles)) {
|
||||||
participantVo.setGroupIds(groupIds);
|
participantVo.setGroupIds(groupIds);
|
||||||
List<Long> userIdList = StreamUtils.toList(sysUserRoles, SysUserRole::getUserId);
|
List<Long> userIdList = StreamUtils.toList(sysUserRoles, SysUserRole::getUserId);
|
||||||
List<SysUser> sysUsers = SYS_USER_MAPPER.selectList(
|
List<SysUserVo> sysUsers = I_WORK_FLOW_USER_SERVICE.getUserListByIds(userIdList);
|
||||||
new LambdaQueryWrapper<SysUser>().in(SysUser::getUserId, userIdList).eq(SysUser::getStatus, UserStatus.OK.getCode()));
|
|
||||||
if (CollUtil.isNotEmpty(sysUsers)) {
|
if (CollUtil.isNotEmpty(sysUsers)) {
|
||||||
List<Long> userIds = StreamUtils.toList(sysUsers, SysUser::getUserId);
|
List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId);
|
||||||
List<String> nickNames = StreamUtils.toList(sysUsers, SysUser::getNickName);
|
List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName);
|
||||||
participantVo.setCandidate(userIds);
|
participantVo.setCandidate(userIds);
|
||||||
participantVo.setCandidateName(nickNames);
|
participantVo.setCandidateName(nickNames);
|
||||||
participantVo.setClaim(!StringUtils.isBlank(task.getAssignee()));
|
participantVo.setClaim(!StringUtils.isBlank(task.getAssignee()));
|
||||||
@ -222,11 +218,10 @@ public class WorkflowUtils {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<SysUser> sysUsers = SYS_USER_MAPPER.selectList(
|
List<SysUserVo> sysUsers = I_WORK_FLOW_USER_SERVICE.getUserListByIds(userIdList);
|
||||||
new LambdaQueryWrapper<SysUser>().in(SysUser::getUserId, userIdList).eq(SysUser::getStatus, UserStatus.OK.getCode()));
|
|
||||||
if (CollUtil.isNotEmpty(sysUsers)) {
|
if (CollUtil.isNotEmpty(sysUsers)) {
|
||||||
List<Long> userIds = StreamUtils.toList(sysUsers, SysUser::getUserId);
|
List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId);
|
||||||
List<String> nickNames = StreamUtils.toList(sysUsers, SysUser::getNickName);
|
List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName);
|
||||||
participantVo.setCandidate(userIds);
|
participantVo.setCandidate(userIds);
|
||||||
participantVo.setCandidateName(nickNames);
|
participantVo.setCandidateName(nickNames);
|
||||||
if (StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList)) {
|
if (StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user