瀏覽代碼

update 优化 简化 SysTaskAssigneeServiceImpl 代码实现

疯狂的狮子Li 1 月之前
父節點
當前提交
d4f792810e

+ 5 - 0
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;
+
 }

+ 12 - 0
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<SysDeptVo> selectPageDeptList(SysDeptBo dept, PageQuery pageQuery);
+
     /**
      * 查询部门管理数据
      *

+ 26 - 0
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<SysDeptVo> selectPageDeptList(SysDeptBo dept, PageQuery pageQuery) {
+        Page<SysDeptVo> 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<SysDept> deptList = baseMapper.selectListByParentId(parentId);
+                List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
+                deptIds.add(parentId);
+                x.in(SysDept::getDeptId, deptIds);
+            });
+        }
         return lqw;
     }
 

+ 50 - 89
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<SysRole> 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<SysRoleVo> page = roleMapper.selectPageRoleList(pageQuery.build(), wrapper);
+        SysRoleBo bo = new SysRoleBo();
+        bo.setRoleName(taskQuery.getHandlerCode());
+        bo.setRoleKey(taskQuery.getHandlerName());
+        Map<String, Object> params = bo.getParams();
+        params.put("beginTime", taskQuery.getBeginTime());
+        params.put("endTime", taskQuery.getEndTime());
+        TableDataInfo<SysRoleVo> page = roleService.selectPageRoleList(bo, pageQuery);
         // 使用封装的字段映射方法进行转换
-        List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
+        List<TaskAssigneeDTO.TaskHandler> 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<SysPost> wrapper = Wrappers.<SysPost>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<SysDept> deptList = deptMapper.selectListByParentId(belongDeptId);
-                List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
-                deptIds.add(belongDeptId);
-                x.in(SysPost::getDeptId, deptIds);
-            });
-        }
-        Page<SysPostVo> page = postMapper.selectPagePostList(pageQuery.build(), wrapper);
+        SysPostBo bo = new SysPostBo();
+        bo.setPostCategory(taskQuery.getHandlerCode());
+        bo.setPostName(taskQuery.getHandlerName());
+        Map<String, Object> params = bo.getParams();
+        params.put("beginTime", taskQuery.getBeginTime());
+        params.put("endTime", taskQuery.getEndTime());
+        bo.setBelongDeptId(Long.valueOf(taskQuery.getGroupId()));
+        TableDataInfo<SysPostVo> page = postService.selectPagePostList(bo, pageQuery);
         // 使用封装的字段映射方法进行转换
-        List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
+        List<TaskAssigneeDTO.TaskHandler> 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<SysDept> wrapper = Wrappers.<SysDept>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<SysDept> deptList = deptMapper.selectListByParentId(parentId);
-                List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
-                deptIds.add(parentId);
-                x.in(SysDept::getDeptId, deptIds);
-            });
-        }
-        Page<SysDeptVo> page = deptMapper.selectPageDeptList(pageQuery.build(), wrapper);
+        SysDeptBo bo = new SysDeptBo();
+        bo.setDeptCategory(taskQuery.getHandlerCode());
+        bo.setDeptName(taskQuery.getHandlerName());
+        Map<String, Object> params = bo.getParams();
+        params.put("beginTime", taskQuery.getBeginTime());
+        params.put("endTime", taskQuery.getEndTime());
+        bo.setBelongDeptId(Long.valueOf(taskQuery.getGroupId()));
+        TableDataInfo<SysDeptVo> page = deptService.selectPageDeptList(bo, pageQuery);
         // 使用封装的字段映射方法进行转换
-        List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
+        List<TaskAssigneeDTO.TaskHandler> 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<SysUser> 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<SysDept> deptList = deptMapper.selectListByParentId(parentId);
-                List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId);
-                deptIds.add(parentId);
-                x.in("u.dept_id", deptIds);
-            });
-        }
-        Page<SysUserVo> page = userMapper.selectPageUserList(pageQuery.build(), wrapper);
+        SysUserBo bo = new SysUserBo();
+        bo.setUserName(taskQuery.getHandlerCode());
+        bo.setNickName(taskQuery.getHandlerName());
+        Map<String, Object> params = bo.getParams();
+        params.put("beginTime", taskQuery.getBeginTime());
+        params.put("endTime", taskQuery.getEndTime());
+        bo.setDeptId(Long.valueOf(taskQuery.getGroupId()));
+        TableDataInfo<SysUserVo> page = userService.selectPageUserList(bo, pageQuery);
         // 使用封装的字段映射方法进行转换
-        List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
+        List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(),
             SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime);
         return new TaskAssigneeDTO(page.getTotal(), handlers);
     }