update 完善任务办理人

This commit is contained in:
AprilWind 2024-11-07 12:20:20 +08:00
parent 22cd701d94
commit e46d26b54e
6 changed files with 196 additions and 73 deletions

View File

@ -0,0 +1,37 @@
package org.dromara.common.core.domain.dto;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
/**
* 部门
*
* @author AprilWind
*/
@Data
@NoArgsConstructor
public class DeptDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 部门ID
*/
private Long deptId;
/**
* 父部门ID
*/
private Long parentId;
/**
* 部门名称
*/
private String deptName;
}

View File

@ -63,7 +63,7 @@ public class TaskAssigneeDTO implements Serializable {
handlerCode != null ? handlerCode.apply(item) : "",
handlerName != null ? handlerName.apply(item) : "",
groupName != null ? groupName.apply(item) : "默认分组",
createTimeMapper != null ? createTimeMapper.apply(item) : null
createTimeMapper != null ? createTimeMapper.apply(item) : new Date()
))
.collect(Collectors.toList());
}

View File

@ -1,5 +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.dto.UserDTO;
import org.dromara.common.core.domain.model.TaskAssigneeBody;
@ -86,10 +87,42 @@ public interface UserService {
List<UserDTO> selectUsersByDeptIds(List<Long> deptIds);
/**
* 查询角色信息
* 查询角色并返回任务指派的列表支持分页
*
* @return 角色信息列表
* @param taskQuery 查询条件
* @return 办理人
*/
TaskAssigneeDTO selectUsersByRoleList(TaskAssigneeBody taskQuery);
/**
* 查询用户并返回任务指派的列表支持分页
*
* @param taskQuery 查询条件
* @return 办理人
*/
TaskAssigneeDTO selectUsersByUserList(TaskAssigneeBody taskQuery);
/**
* 查询部门并返回任务指派的列表支持分页
*
* @param taskQuery 查询条件
* @return 办理人
*/
TaskAssigneeDTO selectUsersByDeptList(TaskAssigneeBody taskQuery);
/**
* 查询部门
*
* @return 部门列表
*/
List<DeptDTO> selectUsersByDeptList();
/**
* 查询岗位并返回任务指派的列表支持分页
*
* @param taskQuery 查询条件
* @return 办理人
*/
TaskAssigneeDTO selectUsersByPostList(TaskAssigneeBody taskQuery);
}

View File

@ -117,4 +117,9 @@ public class PageQuery implements Serializable {
return (pageNum - 1) * pageSize;
}
public PageQuery(Integer pageSize, Integer pageNum) {
this.pageSize = pageSize;
this.pageNum = pageNum;
}
}

View File

@ -15,6 +15,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.domain.dto.DeptDTO;
import org.dromara.common.core.domain.dto.TaskAssigneeDTO;
import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.domain.model.TaskAssigneeBody;
@ -30,10 +31,7 @@ import org.dromara.common.mybatis.helper.DataBaseHelper;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.*;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysPostVo;
import org.dromara.system.domain.vo.SysRoleVo;
import org.dromara.system.domain.vo.SysUserExportVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.domain.vo.*;
import org.dromara.system.mapper.*;
import org.dromara.system.service.ISysUserService;
import org.springframework.cache.annotation.CacheEvict;
@ -706,18 +704,14 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
}
/**
* 根据角色列表查询用户信息
* 查询并返回任务指派的列表支持分页
*
* @param taskQuery 包含查询条件的请求体对象包含分页参数权限编码权限名称时间范围等信息
* @return 返回包含查询结果的 `TaskAssigneeDTO` 对象其中包含符合条件的总记录数和处理人列表
* @param taskQuery 查询条件
* @return 办理人
*/
@Override
public TaskAssigneeDTO selectUsersByRoleList(TaskAssigneeBody taskQuery) {
// 创建分页查询对象并设置分页大小和页码
PageQuery pageQuery = new PageQuery();
pageQuery.setPageSize(taskQuery.getPageSize());
pageQuery.setPageNum(taskQuery.getPageNum());
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
// 使用 LambdaQueryWrapper 构建查询条件
LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<SysRole>()
.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysRole::getRoleKey, taskQuery.getHandlerCode())
@ -735,4 +729,95 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
/**
* 查询并返回任务指派的列表支持分页
*
* @param taskQuery 查询条件
* @return 办理人
*/
@Override
public TaskAssigneeDTO selectUsersByUserList(TaskAssigneeBody taskQuery) {
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
// 使用 LambdaQueryWrapper 构建查询条件
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<SysUser>()
.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysUser::getUserName, taskQuery.getHandlerCode())
.like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysUser::getNickName, taskQuery.getHandlerName())
.eq(StringUtils.isNotBlank(taskQuery.getGroupId()), SysUser::getDeptId, taskQuery.getGroupId())
.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()),
SysUser::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime());
// 执行分页查询并将查询结果封装为 SysUserVo 对象的 Page
Page<SysUserVo> page = baseMapper.selectVoPage(pageQuery.build(), wrapper);
// 使用封装的字段映射方法进行转换
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptName, SysUserVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
/**
* 查询并返回任务指派的列表支持分页
*
* @param taskQuery 查询条件
* @return 办理人
*/
@Override
public TaskAssigneeDTO selectUsersByDeptList(TaskAssigneeBody taskQuery) {
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
// 使用 LambdaQueryWrapper 构建查询条件
LambdaQueryWrapper<SysDept> wrapper = new LambdaQueryWrapper<SysDept>()
.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());
// 执行分页查询并将查询结果封装为 SysDeptVo 对象的 Page
Page<SysDeptVo> page = deptMapper.selectVoPage(pageQuery.build(), wrapper);
// 使用封装的字段映射方法进行转换
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, null, SysDeptVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
/**
* 查询部门
*
* @return 部门列表
*/
@Override
public List<DeptDTO> selectUsersByDeptList() {
List<SysDeptVo> list = deptMapper.selectVoList();
return BeanUtil.copyToList(list, DeptDTO.class);
}
/**
* 查询并返回任务指派的列表支持分页
*
* @param taskQuery 查询条件
* @return 办理人
*/
@Override
public TaskAssigneeDTO selectUsersByPostList(TaskAssigneeBody taskQuery) {
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
// 使用 LambdaQueryWrapper 构建查询条件
LambdaQueryWrapper<SysPost> wrapper = new LambdaQueryWrapper<SysPost>()
.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysPost::getPostCategory, taskQuery.getHandlerCode())
.like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysPost::getPostName, taskQuery.getHandlerName())
.like(StringUtils.isNotBlank(taskQuery.getGroupId()), SysPost::getDeptId, taskQuery.getGroupId())
.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()),
SysPost::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime());
// 执行分页查询并将查询结果封装为 SysPostVo 对象的 Page
Page<SysPostVo> page = postMapper.selectVoPage(pageQuery.build(), wrapper);
// 使用封装的字段映射方法进行转换
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptName, SysPostVo::getCreateTime);
return new TaskAssigneeDTO(page.getTotal(), handlers);
}
}

View File

@ -3,10 +3,12 @@ package org.dromara.workflow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.warm.flow.ui.dto.HandlerFunDto;
import com.warm.flow.ui.dto.HandlerQuery;
import com.warm.flow.ui.dto.TreeFunDto;
import com.warm.flow.ui.service.HandlerSelectService;
import com.warm.flow.ui.vo.HandlerSelectVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.service.UserService;
@ -14,10 +16,9 @@ import org.dromara.common.core.utils.DateUtils;
import org.dromara.workflow.common.enums.TaskAssigneeEnum;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import static org.dromara.workflow.common.enums.TaskAssigneeEnum.ROLE;
/**
* 流程设计器-获取办理人权限设置列表
*
@ -40,7 +41,7 @@ public class WfTaskAssigneeServiceImpl implements HandlerSelectService {
}
/**
* 获取用户列表, 同时构建左侧部门树状结构
* 获取办理列表, 同时构建左侧部门树状结构
*
* @param query 查询条件
* @return HandlerSelectVo
@ -49,77 +50,39 @@ public class WfTaskAssigneeServiceImpl implements HandlerSelectService {
public HandlerSelectVo getHandlerSelect(HandlerQuery query) {
TaskAssigneeEnum type = TaskAssigneeEnum.fromDesc(query.getHandlerType());
TaskAssigneeBody taskQuery = BeanUtil.toBean(query, TaskAssigneeBody.class);
List<DeptDTO> depts = new ArrayList<>();
TaskAssigneeDTO dto = new TaskAssigneeDTO();
if (TaskAssigneeEnum.USER == type) {
// 处理用户相关的业务逻辑
} else if (ROLE == type) {
dto = userService.selectUsersByUserList(taskQuery);
depts = userService.selectUsersByDeptList();
} else if (TaskAssigneeEnum.ROLE == type) {
// 处理角色相关的业务逻辑
dto = userService.selectUsersByRoleList(taskQuery);
} else if (TaskAssigneeEnum.DEPT == type) {
// 处理部门相关的业务逻辑
dto = userService.selectUsersByDeptList(taskQuery);
} else if (TaskAssigneeEnum.POST == type) {
// 处理岗位相关的业务逻辑
dto = userService.selectUsersByPostList(taskQuery);
depts = userService.selectUsersByDeptList();
}
// 业务系统机构转成组件内部左侧树列表能够显示的数据
TreeFunDto<DeptDTO> treeFunDto = new TreeFunDto<>(depts)
.setId(dept -> String.valueOf(dept.getDeptId()))
.setName(DeptDTO::getDeptName)
.setParentId(dept -> String.valueOf(dept.getParentId()));
// 业务系统数据转成组件内部能够显示的数据, total是业务数据总数用于分页显示
HandlerFunDto<TaskAssigneeDTO.TaskHandler> handlerFunDto = new HandlerFunDto<>(dto.getList(), dto.getTotal())
.setStorageId(assignee -> ROLE.getCode() + assignee.getStorageId())
.setStorageId(assignee -> type.getCode() + assignee.getStorageId())
.setHandlerCode(TaskAssigneeDTO.TaskHandler::getHandlerCode)
.setHandlerName(TaskAssigneeDTO.TaskHandler::getHandlerName)
.setGroupName(TaskAssigneeDTO.TaskHandler::getGroupName)
.setCreateTime(assignee -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime()));
return getHandlerSelectVo(handlerFunDto);
return getHandlerSelectVo(handlerFunDto, treeFunDto);
}
// /**
// * 获取用户列表
// *
// * @param query 查询条件
// * @return HandlerSelectVo
// */
// private HandlerSelectVo getDept(HandlerQuery query) {
// // 查询部门列表
// List<SysDept> deptList = userService.selectDeptList(sysDept);
// long total = new PageInfo<>(deptList).getTotal();
//
// // 业务系统数据转成组件内部能够显示的数据, total是业务数据总数用于分页显示
// HandlerFunDto<SysDept> handlerFunDto = new HandlerFunDto<>(deptList, total)
// .setStorageId(dept -> "dept:" + dept.getDeptId()) // 前面拼接dept: 是为了防止用户部门的主键重复
// .setHandlerName(SysDept::getDeptName) // 权限名称
// .setCreateTime(dept -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, dept.getCreateTime()));
//
// return getHandlerSelectVo(handlerFunDto);
//
// }
//
// /**
// * 获取用户列表, 同时构建左侧部门树状结构
// *
// * @param query 查询条件
// * @return HandlerSelectVo
// */
// private HandlerSelectVo getUser(HandlerQuery query) {
// ......
// // 查询用户列表
// List<SysUser> userList = userService.selectUserList(sysUser);
// long total = new PageInfo<>(userList).getTotal();
// // 查询部门列表构建树状结构
// List<SysDept> deptList = deptMapper.selectDeptList(new SysDept());
//
// // 业务系统数据转成组件内部能够显示的数据, total是业务数据总数用于分页显示
// HandlerFunDto<SysUser> handlerFunDto = new HandlerFunDto<>(userList, total)
// .setStorageId(user -> user.getUserId().toString())
// .setHandlerCode(SysUser::getUserName) // 权限编码
// .setHandlerName(SysUser::getNickName) // 权限名称
// .setCreateTime(user -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, user.getCreateTime()))
// .setGroupName(user -> user.getDept() != null ? user.getDept().getDeptName() : "");
//
// // 业务系统机构转成组件内部左侧树列表能够显示的数据
// TreeFunDto<SysDept> treeFunDto = new TreeFunDto<>(deptList)
// .setId(dept -> dept.getDeptId().toString()) // 左侧树ID
// .setName(SysDept::getDeptName) // 左侧树名称
// .setParentId(dept -> dept.getParentId().toString()); // 左侧树父级ID
//
// return getHandlerSelectVo(handlerFunDto, treeFunDto);
// }
}