From 0a1d49fc32c013f5bc6553db1d7181d2aac20dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 13 Dec 2024 18:29:00 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E9=87=8D=E6=9E=84=20=E5=B0=86?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B0=81=E8=A3=85=E4=B8=BA=E5=8D=95=E7=8B=AC=E7=9A=84service?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/service/DeptService.java | 10 -- .../common/core/service/PostService.java | 11 -- .../common/core/service/RoleService.java | 11 -- .../core/service/TaskAssigneeService.java | 47 +++++ .../common/core/service/UserService.java | 10 -- .../service/impl/SysDeptServiceImpl.java | 44 ----- .../service/impl/SysPostServiceImpl.java | 37 ---- .../service/impl/SysRoleServiceImpl.java | 31 ---- .../impl/SysTaskAssigneeServiceImpl.java | 168 ++++++++++++++++++ .../service/impl/SysUserServiceImpl.java | 39 +--- .../impl/WfTaskAssigneeServiceImpl.java | 19 +- 11 files changed, 227 insertions(+), 200 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/TaskAssigneeService.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java index c79c2e831..f93d1778a 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java @@ -1,8 +1,6 @@ package org.dromara.common.core.service; import org.dromara.common.core.domain.dto.DeptDTO; -import org.dromara.common.core.domain.dto.TaskAssigneeDTO; -import org.dromara.common.core.domain.model.TaskAssigneeBody; import java.util.List; @@ -36,12 +34,4 @@ public interface DeptService { */ List selectDeptsByList(); - /** - * 查询部门并返回任务指派的列表,支持分页 - * - * @param taskQuery 查询条件 - * @return 办理人 - */ - TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery); - } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/PostService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/PostService.java index 6e4ead244..41d4e8308 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/PostService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/PostService.java @@ -1,8 +1,5 @@ package org.dromara.common.core.service; -import org.dromara.common.core.domain.dto.TaskAssigneeDTO; -import org.dromara.common.core.domain.model.TaskAssigneeBody; - /** * 通用 岗位服务 * @@ -10,12 +7,4 @@ import org.dromara.common.core.domain.model.TaskAssigneeBody; */ public interface PostService { - /** - * 查询岗位并返回任务指派的列表,支持分页 - * - * @param taskQuery 查询条件 - * @return 办理人 - */ - TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery); - } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/RoleService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/RoleService.java index f2307215f..ba62c82ae 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/RoleService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/RoleService.java @@ -1,8 +1,5 @@ package org.dromara.common.core.service; -import org.dromara.common.core.domain.dto.TaskAssigneeDTO; -import org.dromara.common.core.domain.model.TaskAssigneeBody; - /** * 通用 角色服务 * @@ -10,12 +7,4 @@ import org.dromara.common.core.domain.model.TaskAssigneeBody; */ public interface RoleService { - /** - * 查询角色并返回任务指派的列表,支持分页 - * - * @param taskQuery 查询条件 - * @return 办理人 - */ - TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery); - } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/TaskAssigneeService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/TaskAssigneeService.java new file mode 100644 index 000000000..cc976393b --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/TaskAssigneeService.java @@ -0,0 +1,47 @@ +package org.dromara.common.core.service; + +import org.dromara.common.core.domain.dto.TaskAssigneeDTO; +import org.dromara.common.core.domain.model.TaskAssigneeBody; + +/** + * 工作流设计器获取任务执行人 + * + * @author Lion Li + */ +public interface TaskAssigneeService { + + /** + * 查询角色并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery); + + + /** + * 查询岗位并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery); + + + /** + * 查询部门并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery); + + /** + * 查询用户并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery); + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java index 1914b3fff..67cd54fba 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java @@ -1,8 +1,6 @@ package org.dromara.common.core.service; -import org.dromara.common.core.domain.dto.TaskAssigneeDTO; import org.dromara.common.core.domain.dto.UserDTO; -import org.dromara.common.core.domain.model.TaskAssigneeBody; import java.util.List; @@ -93,12 +91,4 @@ public interface UserService { */ List selectUsersByPostIds(List postIds); - /** - * 查询用户并返回任务指派的列表,支持分页 - * - * @param taskQuery 查询条件 - * @return 办理人 - */ - TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery); - } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 948a9c14e..0199ec719 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -8,17 +8,13 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.dto.DeptDTO; -import org.dromara.common.core.domain.dto.TaskAssigneeDTO; -import org.dromara.common.core.domain.model.TaskAssigneeBody; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.DeptService; import org.dromara.common.core.utils.*; -import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.satoken.utils.LoginHelper; @@ -205,46 +201,6 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { return BeanUtil.copyToList(list, DeptDTO.class); } - /** - * 查询部门并返回任务指派的列表,支持分页 - * - * @param taskQuery 查询条件 - * @return 办理人 - */ - @Override - public TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery) { - PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - // 使用 LambdaQueryWrapper 构建查询条件 - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(SysDept::getDelFlag, SystemConstants.NORMAL); - wrapper.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysDept::getDeptCategory, taskQuery.getHandlerCode()); - wrapper.like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysDept::getDeptName, taskQuery.getHandlerName()); - if (StringUtils.isNotBlank(taskQuery.getGroupId())) { - //部门树搜索 - wrapper.and(x -> { - Long parentId = Long.valueOf(taskQuery.getGroupId()); - List deptList = baseMapper.selectListByParentId(parentId); - List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); - deptIds.add(parentId); - x.in(SysDept::getDeptId, deptIds); - }); - } - wrapper.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), - SysDept::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()); - wrapper.orderByAsc(SysDept::getAncestors); - wrapper.orderByAsc(SysDept::getParentId); - wrapper.orderByAsc(SysDept::getOrderNum); - wrapper.orderByAsc(SysDept::getDeptId); - - Page page = baseMapper.selectPageDeptList(pageQuery.build(), wrapper); - - // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), - SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); - - return new TaskAssigneeDTO(page.getTotal(), handlers); - } - /** * 根据ID查询所有子部门数(正常状态) * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index 120d79ddf..5888985a7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -7,8 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.SystemConstants; -import org.dromara.common.core.domain.dto.TaskAssigneeDTO; -import org.dromara.common.core.domain.model.TaskAssigneeBody; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.PostService; import org.dromara.common.core.utils.MapstructUtils; @@ -29,7 +27,6 @@ import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; -import java.util.Optional; /** * 岗位信息 服务层处理 @@ -249,38 +246,4 @@ public class SysPostServiceImpl implements ISysPostService, PostService { return baseMapper.updateById(post); } - /** - * 查询岗位并返回任务指派的列表,支持分页 - * - * @param taskQuery 查询条件 - * @return 办理人 - */ - @Override - public TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery) { - PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - - SysPostBo post = new SysPostBo(); - post.setPostCategory(taskQuery.getHandlerCode()); - post.setPostName(taskQuery.getHandlerName()); - Optional.ofNullable(taskQuery.getGroupId()) - .filter(StringUtils::isNotBlank) - .map(Long::valueOf) - .ifPresent(post::setBelongDeptId); - - LambdaQueryWrapper wrapper = buildQueryWrapper(post); - // 如果 beginTime 和 endTime 都有值,才添加到 params 中 - if (StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime())) { - wrapper.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), - SysPost::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()); - } - - Page page = baseMapper.selectPagePostList(pageQuery.build(), wrapper); - - // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), - SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); - - return new TaskAssigneeDTO(page.getTotal(), handlers); - } - } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java index 452b40935..0a2e485f6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -15,9 +15,7 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.constant.TenantConstants; -import org.dromara.common.core.domain.dto.TaskAssigneeDTO; import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.core.domain.model.TaskAssigneeBody; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.RoleService; import org.dromara.common.core.utils.MapstructUtils; @@ -551,33 +549,4 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService { }); } - /** - * 查询角色并返回任务指派的列表,支持分页 - * - * @param taskQuery 查询条件 - * @return 办理人 - */ - @Override - public TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery) { - PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - - SysRoleBo role = new SysRoleBo(); - role.setRoleKey(taskQuery.getHandlerCode()); - role.setRoleName(taskQuery.getHandlerName()); - - // 如果 beginTime 和 endTime 都有值,才添加到 params 中 - if (StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime())) { - Map params = role.getParams(); - params.put("beginTime", taskQuery.getBeginTime()); - params.put("endTime", taskQuery.getEndTime()); - } - Page page = baseMapper.selectPageRoleList(pageQuery.build(), this.buildQueryWrapper(role)); - - // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), - SysRoleVo::getRoleId, SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); - - return new TaskAssigneeDTO(page.getTotal(), handlers); - } - } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java new file mode 100644 index 000000000..23dd0520c --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java @@ -0,0 +1,168 @@ +package org.dromara.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.domain.dto.TaskAssigneeDTO; +import org.dromara.common.core.domain.model.TaskAssigneeBody; +import org.dromara.common.core.service.TaskAssigneeService; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.system.domain.SysDept; +import org.dromara.system.domain.SysPost; +import org.dromara.system.domain.SysRole; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.vo.SysDeptVo; +import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.domain.vo.SysRoleVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.mapper.SysDeptMapper; +import org.dromara.system.mapper.SysPostMapper; +import org.dromara.system.mapper.SysRoleMapper; +import org.dromara.system.mapper.SysUserMapper; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 工作流设计器获取任务执行人 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { + + private final SysPostMapper postMapper; + private final SysDeptMapper deptMapper; + private final SysUserMapper userMapper; + private final SysRoleMapper roleMapper; + + /** + * 查询角色并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("r.del_flag", SystemConstants.NORMAL) + .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "r.role_name", taskQuery.getHandlerCode()) + .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "r.role_key", taskQuery.getHandlerName()) + .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), + "r.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime()) + .orderByAsc("r.role_sort").orderByAsc("r.create_time"); + Page page = roleMapper.selectPageRoleList(pageQuery.build(), wrapper); + // 使用封装的字段映射方法进行转换 + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + SysRoleVo::getRoleId, SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); + return new TaskAssigneeDTO(page.getTotal(), handlers); + } + + /** + * 查询岗位并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysPost::getPostCategory, taskQuery.getHandlerCode()) + .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysPost::getPostName, taskQuery.getHandlerName()) + .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), + SysPost::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()); + if (StringUtils.isNotBlank(taskQuery.getGroupId())) { + Long belongDeptId = Long.valueOf(taskQuery.getGroupId()); + wrapper.and(x -> { + List deptList = deptMapper.selectListByParentId(belongDeptId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(belongDeptId); + x.in(SysPost::getDeptId, deptIds); + }); + } + Page page = postMapper.selectPagePostList(pageQuery.build(), wrapper); + // 使用封装的字段映射方法进行转换 + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); + return new TaskAssigneeDTO(page.getTotal(), handlers); + } + + /** + * 查询部门并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(SysDept::getDelFlag, SystemConstants.NORMAL) + .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysDept::getDeptCategory, taskQuery.getHandlerCode()) + .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysDept::getDeptName, taskQuery.getHandlerName()) + .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), + SysDept::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()) + .orderByAsc(SysDept::getAncestors) + .orderByAsc(SysDept::getParentId) + .orderByAsc(SysDept::getOrderNum) + .orderByAsc(SysDept::getDeptId); + if (StringUtils.isNotBlank(taskQuery.getGroupId())) { + //部门树搜索 + wrapper.and(x -> { + Long parentId = Long.valueOf(taskQuery.getGroupId()); + List deptList = deptMapper.selectListByParentId(parentId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(parentId); + x.in(SysDept::getDeptId, deptIds); + }); + } + Page page = deptMapper.selectPageDeptList(pageQuery.build(), wrapper); + // 使用封装的字段映射方法进行转换 + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); + return new TaskAssigneeDTO(page.getTotal(), handlers); + } + + + /** + * 查询用户并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("u.del_flag", SystemConstants.NORMAL) + .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "u.user_name", taskQuery.getHandlerCode()) + .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "u.nick_name", taskQuery.getHandlerName()) + .between(taskQuery.getBeginTime() != null && taskQuery.getEndTime() != null, + "u.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime()) + .orderByAsc("u.user_id"); + if (StringUtils.isNotBlank(taskQuery.getGroupId())) { + //部门树搜索 + wrapper.and(x -> { + Long parentId = Long.valueOf(taskQuery.getGroupId()); + List deptList = deptMapper.selectListByParentId(parentId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(parentId); + x.in("u.dept_id", deptIds); + }); + } + Page page = userMapper.selectPageUserList(pageQuery.build(), wrapper); + // 使用封装的字段映射方法进行转换 + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); + return new TaskAssigneeDTO(page.getTotal(), handlers); + } + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 763ac582d..40811707b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -15,9 +15,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.SystemConstants; -import org.dromara.common.core.domain.dto.TaskAssigneeDTO; import org.dromara.common.core.domain.dto.UserDTO; -import org.dromara.common.core.domain.model.TaskAssigneeBody; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.*; @@ -37,7 +35,10 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * 用户 业务层处理 @@ -718,36 +719,4 @@ public class SysUserServiceImpl implements ISysUserService, UserService { return selectListByIds(new ArrayList<>(userIds)); } - /** - * 查询用户并返回任务指派的列表,支持分页 - * - * @param taskQuery 查询条件 - * @return 办理人 - */ - @Override - public TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery) { - PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - SysUserBo user = new SysUserBo(); - user.setUserName(taskQuery.getHandlerCode()); - user.setNickName(taskQuery.getHandlerName()); - Optional.ofNullable(taskQuery.getGroupId()) - .filter(StringUtils::isNotBlank) - .map(Long::valueOf) - .ifPresent(user::setDeptId); - - // 如果 beginTime 和 endTime 都有值,才添加到 params 中 - if (StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime())) { - Map params = user.getParams(); - params.put("beginTime", taskQuery.getBeginTime()); - params.put("endTime", taskQuery.getEndTime()); - } - Page page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user)); - - // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), - SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); - - return new TaskAssigneeDTO(page.getTotal(), handlers); - } - } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java index 86dc12dc1..68c3660ae 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java @@ -9,12 +9,9 @@ import org.dromara.common.core.domain.dto.TaskAssigneeDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.domain.model.TaskAssigneeBody; import org.dromara.common.core.enums.FormatsType; +import org.dromara.common.core.service.*; import org.dromara.workflow.common.enums.TaskAssigneeEnum; import org.dromara.common.core.exception.ServiceException; -import org.dromara.common.core.service.DeptService; -import org.dromara.common.core.service.PostService; -import org.dromara.common.core.service.RoleService; -import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.warm.flow.ui.dto.HandlerFunDto; @@ -39,11 +36,11 @@ import java.util.Optional; @RequiredArgsConstructor @Service public class WfTaskAssigneeServiceImpl implements IWfTaskAssigneeService, HandlerSelectService { - static final String DEFAULT_GROUP_NAME = "默认分组"; + + private static final String DEFAULT_GROUP_NAME = "默认分组"; + private final TaskAssigneeService taskAssigneeService; private final UserService userService; private final DeptService deptService; - private final RoleService roleService; - private final PostService postService; /** * 获取办理人权限设置列表tabs页签 @@ -80,10 +77,10 @@ public class WfTaskAssigneeServiceImpl implements IWfTaskAssigneeService, Handle */ private TaskAssigneeDTO fetchTaskAssigneeData(TaskAssigneeEnum type, TaskAssigneeBody taskQuery) { return switch (type) { - case USER -> userService.selectUsersByTaskAssigneeList(taskQuery); - case ROLE -> roleService.selectRolesByTaskAssigneeList(taskQuery); - case DEPT -> deptService.selectDeptsByTaskAssigneeList(taskQuery); - case POST -> postService.selectPostsByTaskAssigneeList(taskQuery); + case USER -> taskAssigneeService.selectUsersByTaskAssigneeList(taskQuery); + case ROLE -> taskAssigneeService.selectRolesByTaskAssigneeList(taskQuery); + case DEPT -> taskAssigneeService.selectDeptsByTaskAssigneeList(taskQuery); + case POST -> taskAssigneeService.selectPostsByTaskAssigneeList(taskQuery); default -> throw new ServiceException("Unsupported handler type"); }; }