From d4f792810e008fceddab871b14db1cb4b316c706 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: Wed, 19 Mar 2025 10:09:32 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=AE=80?= =?UTF-8?q?=E5=8C=96=20SysTaskAssigneeServiceImpl=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/domain/bo/SysDeptBo.java | 5 + .../system/service/ISysDeptService.java | 12 ++ .../service/impl/SysDeptServiceImpl.java | 26 ++++ .../impl/SysTaskAssigneeServiceImpl.java | 139 +++++++----------- 4 files changed, 93 insertions(+), 89 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java index 5f64d6f30..0d8ac84b9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java @@ -73,4 +73,9 @@ public class SysDeptBo extends BaseEntity { */ private String status; + /** + * 归属部门id(部门树) + */ + private Long belongDeptId; + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java index bf16642fe..1397443cb 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -1,6 +1,8 @@ package org.dromara.system.service; import cn.hutool.core.lang.tree.Tree; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.system.domain.bo.SysDeptBo; import org.dromara.system.domain.vo.SysDeptVo; @@ -12,6 +14,16 @@ import java.util.List; * @author Lion Li */ public interface ISysDeptService { + + /** + * 分页查询部门管理数据 + * + * @param dept 部门信息 + * @param pageQuery 分页对象 + * @return 部门信息集合 + */ + TableDataInfo selectPageDeptList(SysDeptBo dept, PageQuery pageQuery); + /** * 查询部门管理数据 * 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 ecd309f4e..98aad216b 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,6 +8,7 @@ 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; @@ -15,6 +16,8 @@ import org.dromara.common.core.domain.dto.DeptDTO; 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.core.page.TableDataInfo; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.satoken.utils.LoginHelper; @@ -50,6 +53,19 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { private final SysRoleMapper roleMapper; private final SysUserMapper userMapper; + /** + * 分页查询部门管理数据 + * + * @param dept 部门信息 + * @param pageQuery 分页对象 + * @return 部门信息集合 + */ + @Override + public TableDataInfo selectPageDeptList(SysDeptBo dept, PageQuery pageQuery) { + Page page = baseMapper.selectPageDeptList(pageQuery.build(), buildQueryWrapper(dept)); + return TableDataInfo.build(page); + } + /** * 查询部门管理数据 * @@ -87,6 +103,16 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { lqw.orderByAsc(SysDept::getParentId); lqw.orderByAsc(SysDept::getOrderNum); lqw.orderByAsc(SysDept::getDeptId); + if (ObjectUtil.isNotNull(bo.getBelongDeptId())) { + //部门树搜索 + lqw.and(x -> { + Long parentId = bo.getBelongDeptId(); + List deptList = baseMapper.selectListByParentId(parentId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(parentId); + x.in(SysDept::getDeptId, deptIds); + }); + } return lqw; } 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 index 2fbf2408b..0a5f4b1d4 100644 --- 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 @@ -1,32 +1,27 @@ 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.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.bo.SysRoleBo; +import org.dromara.system.domain.bo.SysUserBo; 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.dromara.system.service.ISysDeptService; +import org.dromara.system.service.ISysPostService; +import org.dromara.system.service.ISysRoleService; +import org.dromara.system.service.ISysUserService; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** * 工作流设计器获取任务执行人 @@ -37,10 +32,11 @@ import java.util.List; @Service public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { - private final SysPostMapper postMapper; - private final SysDeptMapper deptMapper; - private final SysUserMapper userMapper; - private final SysRoleMapper roleMapper; + // 上级Service注入下级Service 其他Service永远不可能注入当前类 避免循环注入 + private final ISysPostService postService; + private final ISysDeptService deptService; + private final ISysUserService userService; + private final ISysRoleService roleService; /** * 查询角色并返回任务指派的列表,支持分页 @@ -51,17 +47,15 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { @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) - .eq("r.status", 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); + SysRoleBo bo = new SysRoleBo(); + bo.setRoleName(taskQuery.getHandlerCode()); + bo.setRoleKey(taskQuery.getHandlerName()); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + TableDataInfo page = roleService.selectPageRoleList(bo, pageQuery); // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), SysRoleVo::getRoleId, SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); return new TaskAssigneeDTO(page.getTotal(), handlers); } @@ -75,24 +69,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { @Override public TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery) { PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() - .eq(SysPost::getStatus, SystemConstants.NORMAL) - .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); + SysPostBo bo = new SysPostBo(); + bo.setPostCategory(taskQuery.getHandlerCode()); + bo.setPostName(taskQuery.getHandlerName()); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + bo.setBelongDeptId(Long.valueOf(taskQuery.getGroupId())); + TableDataInfo page = postService.selectPagePostList(bo, pageQuery); // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); return new TaskAssigneeDTO(page.getTotal(), handlers); } @@ -106,30 +92,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { @Override public TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery) { PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() - .eq(SysDept::getDelFlag, SystemConstants.NORMAL) - .eq(SysDept::getStatus, 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); + SysDeptBo bo = new SysDeptBo(); + bo.setDeptCategory(taskQuery.getHandlerCode()); + bo.setDeptName(taskQuery.getHandlerName()); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + bo.setBelongDeptId(Long.valueOf(taskQuery.getGroupId())); + TableDataInfo page = deptService.selectPageDeptList(bo, pageQuery); // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); return new TaskAssigneeDTO(page.getTotal(), handlers); } @@ -144,27 +116,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { @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) - .eq("u.status", 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); + SysUserBo bo = new SysUserBo(); + bo.setUserName(taskQuery.getHandlerCode()); + bo.setNickName(taskQuery.getHandlerName()); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + bo.setDeptId(Long.valueOf(taskQuery.getGroupId())); + TableDataInfo page = userService.selectPageUserList(bo, pageQuery); // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); return new TaskAssigneeDTO(page.getTotal(), handlers); }