update 优化任务办理人查询
This commit is contained in:
parent
178027931d
commit
4f3d79faa0
@ -3,6 +3,7 @@ package org.dromara.common.core.domain.dto;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
@ -60,10 +61,10 @@ public class TaskAssigneeDTO implements Serializable {
|
||||
return sourceList.stream()
|
||||
.map(item -> new TaskHandler(
|
||||
String.valueOf(storageId.apply(item)),
|
||||
handlerCode != null ? handlerCode.apply(item) : "无",
|
||||
handlerName != null ? handlerName.apply(item) : "无",
|
||||
groupName != null ? groupName.apply(item) : "默认分组",
|
||||
createTimeMapper != null ? createTimeMapper.apply(item) : new Date()
|
||||
StringUtils.blankToDefault(handlerCode.apply(item), "无"),
|
||||
StringUtils.blankToDefault(handlerName.apply(item), "无"),
|
||||
StringUtils.blankToDefault(groupName != null ? groupName.apply(item) : null, "默认分组"),
|
||||
createTimeMapper.apply(item)
|
||||
))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
@ -2,12 +2,13 @@ package org.dromara.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.dromara.common.mybatis.annotation.DataColumn;
|
||||
import org.dromara.common.mybatis.annotation.DataPermission;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.system.domain.SysDept;
|
||||
import org.dromara.system.domain.vo.SysDeptVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -29,6 +30,17 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDept, SysDeptVo> {
|
||||
})
|
||||
List<SysDeptVo> selectDeptList(@Param(Constants.WRAPPER) Wrapper<SysDept> queryWrapper);
|
||||
|
||||
/**
|
||||
* 分页查询部门管理数据
|
||||
*
|
||||
* @param queryWrapper 查询条件
|
||||
* @return 部门信息集合
|
||||
*/
|
||||
@DataPermission({
|
||||
@DataColumn(key = "deptName", value = "dept_id"),
|
||||
})
|
||||
Page<SysDeptVo> selectPageDeptList(@Param("page") Page<SysDeptVo> page, @Param(Constants.WRAPPER) Wrapper<SysDept> queryWrapper);
|
||||
|
||||
@DataPermission({
|
||||
@DataColumn(key = "deptName", value = "dept_id")
|
||||
})
|
||||
|
@ -41,6 +41,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 部门管理 服务实现
|
||||
@ -179,7 +180,9 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
||||
*/
|
||||
@Override
|
||||
public List<DeptDTO> selectDeptsByList() {
|
||||
List<SysDeptVo> list = baseMapper.selectVoList();
|
||||
List<SysDeptVo> list = baseMapper.selectDeptList(new LambdaQueryWrapper<SysDept>()
|
||||
.select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getParentId)
|
||||
.eq(SysDept::getStatus, UserConstants.DEPT_NORMAL));
|
||||
return BeanUtil.copyToList(list, DeptDTO.class);
|
||||
}
|
||||
|
||||
@ -193,18 +196,36 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
||||
public TaskAssigneeDTO selectDeptsByTaskAssigneeList(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()),
|
||||
LambdaQueryWrapper<SysDept> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(SysDept::getDelFlag, UserConstants.DEL_FLAG_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 -> {
|
||||
List<Long> deptIds = baseMapper.selectList(new LambdaQueryWrapper<SysDept>()
|
||||
.select(SysDept::getDeptId)
|
||||
.apply(DataBaseHelper.findInSet(taskQuery.getGroupId(), "ancestors")))
|
||||
.stream()
|
||||
.map(SysDept::getDeptId)
|
||||
.collect(Collectors.toList());
|
||||
deptIds.add(Long.valueOf(taskQuery.getGroupId()));
|
||||
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);
|
||||
|
||||
// 执行分页查询,并将查询结果封装为 SysDeptVo 对象的 Page
|
||||
Page<SysDeptVo> page = baseMapper.selectVoPage(pageQuery.build(), wrapper);
|
||||
Page<SysDeptVo> page = baseMapper.selectPageDeptList(pageQuery.build(), wrapper);
|
||||
// TODO 需要回显父部门名称
|
||||
|
||||
// 使用封装的字段映射方法进行转换
|
||||
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
|
||||
SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, null, SysDeptVo::getCreateTime);
|
||||
SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentName, SysDeptVo::getCreateTime);
|
||||
|
||||
return new TaskAssigneeDTO(page.getTotal(), handlers);
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -252,16 +253,24 @@ public class SysPostServiceImpl implements ISysPostService, PostService {
|
||||
@Override
|
||||
public TaskAssigneeDTO selectPostsByTaskAssigneeList(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 = baseMapper.selectVoPage(pageQuery.build(), wrapper);
|
||||
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<SysPost> 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<SysPostVo> page = baseMapper.selectPagePostList(pageQuery.build(), wrapper);
|
||||
// TODO 需要回显部门名称
|
||||
|
||||
// 使用封装的字段映射方法进行转换
|
||||
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
|
||||
|
@ -524,15 +524,19 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
|
||||
@Override
|
||||
public TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery) {
|
||||
PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum());
|
||||
// 使用 LambdaQueryWrapper 构建查询条件
|
||||
LambdaQueryWrapper<SysRole> wrapper = new LambdaQueryWrapper<SysRole>()
|
||||
.like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysRole::getRoleKey, taskQuery.getHandlerCode())
|
||||
.like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysRole::getRoleName, taskQuery.getHandlerName())
|
||||
.between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()),
|
||||
SysRole::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime());
|
||||
|
||||
// 执行分页查询,并将查询结果封装为 SysRoleVo 对象的 Page
|
||||
Page<SysRoleVo> page = baseMapper.selectVoPage(pageQuery.build(), wrapper);
|
||||
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<String, Object> params = role.getParams();
|
||||
params.put("beginTime", taskQuery.getBeginTime());
|
||||
params.put("endTime", taskQuery.getEndTime());
|
||||
}
|
||||
Page<SysRoleVo> page = baseMapper.selectPageRoleList(pageQuery.build(), this.buildQueryWrapper(role));
|
||||
// TODO 回显数据范围
|
||||
|
||||
// 使用封装的字段映射方法进行转换
|
||||
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
|
||||
|
@ -41,10 +41,7 @@ import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 用户 业务层处理
|
||||
@ -714,16 +711,22 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
||||
@Override
|
||||
public TaskAssigneeDTO selectUsersByTaskAssigneeList(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());
|
||||
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);
|
||||
|
||||
// 执行分页查询,并将查询结果封装为 SysUserVo 对象的 Page
|
||||
Page<SysUserVo> page = baseMapper.selectVoPage(pageQuery.build(), wrapper);
|
||||
// 如果 beginTime 和 endTime 都有值,才添加到 params 中
|
||||
if (StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime())) {
|
||||
Map<String, Object> params = user.getParams();
|
||||
params.put("beginTime", taskQuery.getBeginTime());
|
||||
params.put("endTime", taskQuery.getEndTime());
|
||||
}
|
||||
Page<SysUserVo> page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user));
|
||||
// TODO 需要回显部门名称
|
||||
|
||||
// 使用封装的字段映射方法进行转换
|
||||
List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(),
|
||||
|
@ -18,6 +18,17 @@
|
||||
from sys_dept ${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="selectPageDeptList" resultMap="SysDeptResult">
|
||||
select
|
||||
<if test="ew.getSqlSelect != null">
|
||||
${ew.getSqlSelect}
|
||||
</if>
|
||||
<if test="ew.getSqlSelect == null">
|
||||
*
|
||||
</if>
|
||||
from sys_dept ${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="countDeptById" resultType="Long">
|
||||
select count(*) from sys_dept where del_flag = '0' and dept_id = #{deptId}
|
||||
</select>
|
||||
|
@ -98,7 +98,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
FlowInstance flowInstance = iFlwInstanceService.instanceByBusinessId(businessKey);
|
||||
if (flowInstance != null) {
|
||||
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId()));
|
||||
return buildMap(taskList.get(0).getInstanceId(), taskList.get(0).getId());
|
||||
return Map.of("processInstanceId", taskList.get(0).getInstanceId(), "taskId", taskList.get(0).getId());
|
||||
}
|
||||
FlowParams flowParams = new FlowParams();
|
||||
flowParams.flowCode(wfDefinitionConfigVo.getProcessKey());
|
||||
@ -116,18 +116,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
if (taskList.size() > 1) {
|
||||
throw new ServiceException("请检查流程第一个环节是否为申请人!");
|
||||
}
|
||||
return buildMap(instance.getId(), taskList.get(0).getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建一个包含给定 `processInstanceId` 和 `taskId` 的 Map
|
||||
*
|
||||
* @param instanceId 流程实例的 ID
|
||||
* @param taskId 任务的 ID
|
||||
* @return 返回一个包含 `processInstanceId` 和 `taskId` 的不可变 Map
|
||||
*/
|
||||
private Map<String, Object> buildMap(Object instanceId, Object taskId) {
|
||||
return Map.of("processInstanceId", instanceId, "taskId", taskId);
|
||||
return Map.of("processInstanceId", instance.getId(), "taskId", taskList.get(0).getId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -84,7 +84,7 @@ public class WfTaskAssigneeServiceImpl implements HandlerSelectService {
|
||||
* 根据任务办理类型获取部门数据
|
||||
*/
|
||||
private List<DeptDTO> fetchDeptData(TaskAssigneeEnum type) {
|
||||
if (type == TaskAssigneeEnum.USER || type == TaskAssigneeEnum.POST) {
|
||||
if (type == TaskAssigneeEnum.USER || type == TaskAssigneeEnum.DEPT || type == TaskAssigneeEnum.POST) {
|
||||
return deptService.selectDeptsByList();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
|
Loading…
x
Reference in New Issue
Block a user