修改, 抄送我的分页查询只能查询第一页问题, 新增查询处理中流程当前审核人功能
This commit is contained in:
parent
13aa4ebc7e
commit
878272307e
@ -40,7 +40,7 @@ public class BpmTaskController {
|
|||||||
@Operation(summary = "获取 cc 抄送任务分页", description = "在【抄送我的】菜单中,进行调用")
|
@Operation(summary = "获取 cc 抄送任务分页", description = "在【抄送我的】菜单中,进行调用")
|
||||||
//@PreAuthorize("@ss.hasPermission('bpm:task:query')")
|
//@PreAuthorize("@ss.hasPermission('bpm:task:query')")
|
||||||
//@PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
|
//@PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
|
||||||
public CommonResult<PageResult<BpmTaskDonePageItemRespVO>> getMyProcessInstancePage(
|
public CommonResult<PageResult<BpmTaskCCPageItemRespVO>> getMyProcessInstancePage(
|
||||||
@Valid BpmTaskDonePageReqVO pageReqVO) {
|
@Valid BpmTaskDonePageReqVO pageReqVO) {
|
||||||
return success(taskService.getCCTaskPage(SecurityFrameworkUtils.getLoginUserId(), pageReqVO));
|
return success(taskService.getCCTaskPage(SecurityFrameworkUtils.getLoginUserId(), pageReqVO));
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;
|
|||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -35,13 +34,20 @@ public class BpmTaskCCPageItemRespVO {
|
|||||||
|
|
||||||
@Schema(description = "任务结果-参见 bpm_process_instance_result", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
@Schema(description = "任务结果-参见 bpm_process_instance_result", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||||
private Integer result;
|
private Integer result;
|
||||||
|
|
||||||
@Schema(description = "审批建议", requiredMode = Schema.RequiredMode.REQUIRED, example = "不请假了!")
|
@Schema(description = "审批建议", requiredMode = Schema.RequiredMode.REQUIRED, example = "不请假了!")
|
||||||
private String reason;
|
private String reason;
|
||||||
|
|
||||||
|
@Schema(description = "审批人用户编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private Long assigneeUser;
|
||||||
|
|
||||||
|
@Schema(description = "审批人用户名称", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private String assigneeUserName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 所属流程实例
|
* 所属流程实例
|
||||||
*/
|
*/
|
||||||
private BpmTaskTodoPageItemRespVO.ProcessInstance processInstance;
|
private ProcessInstance processInstance;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "流程实例")
|
@Schema(description = "流程实例")
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.bpm.convert.task;
|
package cn.iocoder.yudao.module.bpm.convert.task;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@ -7,10 +8,12 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|||||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmTaskExtDO;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmConstants;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmConstants;
|
||||||
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;
|
import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;
|
||||||
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
@ -24,7 +27,6 @@ import org.flowable.task.service.impl.persistence.entity.TaskEntityImpl;
|
|||||||
import org.mapstruct.*;
|
import org.mapstruct.*;
|
||||||
import org.mapstruct.factory.Mappers;
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -42,19 +44,26 @@ public interface BpmTaskConvert {
|
|||||||
|
|
||||||
BpmTaskConvert INSTANCE = Mappers.getMapper(BpmTaskConvert.class);
|
BpmTaskConvert INSTANCE = Mappers.getMapper(BpmTaskConvert.class);
|
||||||
|
|
||||||
BpmTaskDonePageItemRespVO convertCC(BpmProcessInstanceExtDO bean);
|
BpmTaskCCPageItemRespVO convertCC(BpmProcessInstanceExtDO bean);
|
||||||
default List<BpmTaskDonePageItemRespVO> convertListCC(List<BpmProcessInstanceExtDO> tasks,
|
default List<BpmTaskCCPageItemRespVO> convertListCC(List<BpmProcessInstanceExtDO> tasks,
|
||||||
Map<String, BpmTaskExtDO> bpmTaskExtDOMap,
|
Map<String, List<BpmTaskExtDO>> bpmTaskExtDOMap,
|
||||||
Map<String, HistoricProcessInstance> historicProcessInstanceMap,
|
Map<String, HistoricProcessInstance> historicProcessInstanceMap,
|
||||||
Map<Long,AdminUserRespDTO> userMap) {
|
Map<Long,AdminUserRespDTO> userMap) {
|
||||||
return CollectionUtils.convertList(tasks, task -> {
|
return CollectionUtils.convertList(tasks, task -> {
|
||||||
BpmTaskDonePageItemRespVO respVO = convertCC(task);
|
BpmTaskCCPageItemRespVO respVO = convertCC(task);
|
||||||
BpmTaskExtDO taskExtDO = bpmTaskExtDOMap.get(task.getId());
|
List<BpmTaskExtDO> taskExtDOs = bpmTaskExtDOMap.get(task.getProcessInstanceId());
|
||||||
copyTo(taskExtDO, respVO);
|
|
||||||
HistoricProcessInstance processInstance = historicProcessInstanceMap.get(task.getProcessInstanceId());
|
HistoricProcessInstance processInstance = historicProcessInstanceMap.get(task.getProcessInstanceId());
|
||||||
if (processInstance != null) {
|
if (processInstance != null) {
|
||||||
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
||||||
respVO.setProcessInstance(convert(processInstance, startUser));
|
respVO.setProcessInstance(BeanUtils.toBean(convert(processInstance, startUser), BpmTaskCCPageItemRespVO.ProcessInstance.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!CollectionUtil.isEmpty(taskExtDOs) && task.getResult().equals(BpmProcessInstanceResultEnum.PROCESS.getResult())) {
|
||||||
|
|
||||||
|
BpmTaskExtDO taskExtDO = taskExtDOs.get(0);
|
||||||
|
respVO.setAssigneeUser(taskExtDO.getAssigneeUserId());
|
||||||
|
respVO.setAssigneeUserName(userMap.get(taskExtDO.getAssigneeUserId()).getNickname());
|
||||||
}
|
}
|
||||||
return respVO;
|
return respVO;
|
||||||
});
|
});
|
||||||
|
@ -49,6 +49,7 @@ public interface BpmTaskExtMapper extends BaseMapperX<BpmTaskExtDO> {
|
|||||||
|
|
||||||
return selectList(new LambdaQueryWrapperX<BpmTaskExtDO>()
|
return selectList(new LambdaQueryWrapperX<BpmTaskExtDO>()
|
||||||
.inIfPresent(BpmTaskExtDO::getProcessInstanceId, processInstanceId)
|
.inIfPresent(BpmTaskExtDO::getProcessInstanceId, processInstanceId)
|
||||||
.eqIfPresent(BpmTaskExtDO::getResult, result));
|
.eqIfPresent(BpmTaskExtDO::getResult, result)
|
||||||
|
.orderByDesc(BpmTaskExtDO::getCreateTime));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ public interface BpmTaskService {
|
|||||||
* @param pageReqVO 分页请求
|
* @param pageReqVO 分页请求
|
||||||
* @return 流程实例的分页
|
* @return 流程实例的分页
|
||||||
*/
|
*/
|
||||||
PageResult<BpmTaskDonePageItemRespVO> getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageReqVO);
|
PageResult<BpmTaskCCPageItemRespVO> getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得待办的流程任务分页
|
* 获得待办的流程任务分页
|
||||||
|
@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.PageUtils;
|
import cn.iocoder.yudao.framework.common.util.object.PageUtils;
|
||||||
import cn.iocoder.yudao.framework.flowable.core.util.BpmnModelUtils;
|
import cn.iocoder.yudao.framework.flowable.core.util.BpmnModelUtils;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
@ -100,11 +101,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
private BpmProcessInstanceExtMapper processInstanceExtMapper;
|
private BpmProcessInstanceExtMapper processInstanceExtMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<BpmTaskDonePageItemRespVO> getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) {
|
public PageResult<BpmTaskCCPageItemRespVO> getCCTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) {
|
||||||
// 查询被抄送的Task
|
// 查询被抄送的Task
|
||||||
BpmProcessInstanceMyPageReqVO reqVO = new BpmProcessInstanceMyPageReqVO();
|
BpmProcessInstanceMyPageReqVO reqVO = BeanUtils.toBean(pageVO, BpmProcessInstanceMyPageReqVO.class);
|
||||||
reqVO.setName(pageVO.getName());
|
// reqVO.setName(pageVO.getName());
|
||||||
reqVO.setCreateTime(pageVO.getCreateTime());
|
// reqVO.setCreateTime(pageVO.getCreateTime());
|
||||||
// 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页
|
// 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页
|
||||||
PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectCCPage(userId, reqVO);
|
PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectCCPage(userId, reqVO);
|
||||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||||
@ -113,20 +114,21 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|||||||
// 获得流程 Task Map
|
// 获得流程 Task Map
|
||||||
List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId);
|
List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId);
|
||||||
// 获得 TaskExtDO Map
|
// 获得 TaskExtDO Map
|
||||||
List<BpmTaskExtDO> bpmTaskExtDOs =
|
List<BpmTaskExtDO> bpmTaskExtDOs = getTaskByProcessInstanceIdAndResult(processInstanceIds, null);
|
||||||
taskExtMapper.selectListByTaskIds(processInstanceIds);
|
Map<String, List<BpmTaskExtDO>> bpmTaskExtDOMap = convertMultiMap(bpmTaskExtDOs, BpmTaskExtDO::getProcessInstanceId);
|
||||||
Map<String, BpmTaskExtDO> bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, BpmTaskExtDO::getTaskId);
|
|
||||||
|
|
||||||
// 获得 ProcessInstance Map
|
// 获得 ProcessInstance Map
|
||||||
Set<String> ids = new HashSet<>(processInstanceIds);
|
Set<String> ids = new HashSet<>(processInstanceIds);
|
||||||
|
|
||||||
Map<String, HistoricProcessInstance> historicProcessInstanceMap =
|
Map<String, HistoricProcessInstance> historicProcessInstanceMap =
|
||||||
processInstanceService.getHistoricProcessInstanceMap(ids);
|
processInstanceService.getHistoricProcessInstanceMap(ids);
|
||||||
|
|
||||||
// 获得 User Map
|
// 获得 User Map
|
||||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
|
List<Long> userIds = convertList(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()));
|
||||||
convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
userIds.addAll(convertList(bpmTaskExtDOs, BpmTaskExtDO::getAssigneeUserId));
|
||||||
|
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(new HashSet<>(userIds));
|
||||||
// 拼接结果
|
// 拼接结果
|
||||||
return new PageResult<>(BpmTaskConvert.INSTANCE.convertListCC(pageResult.getList(), bpmTaskExtDOMap, historicProcessInstanceMap, userMap), new Long(pageResult.getTotal()));
|
return new PageResult<>(BpmTaskConvert.INSTANCE.convertListCC(pageResult.getList(), bpmTaskExtDOMap, historicProcessInstanceMap, userMap), pageResult.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user