mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	update 优化 简化 SysTaskAssigneeServiceImpl 代码实现
This commit is contained in:
		@@ -73,4 +73,9 @@ public class SysDeptBo extends BaseEntity {
 | 
			
		||||
     */
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 归属部门id(部门树)
 | 
			
		||||
     */
 | 
			
		||||
    private Long belongDeptId;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询部门管理数据
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user