diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAReimbursementController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAReimbursementController.java index e7abe54c..e59ac9e3 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAReimbursementController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAReimbursementController.java @@ -11,8 +11,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jodd.util.StringUtil; -import org.mapstruct.ap.internal.util.Strings; -import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -62,13 +60,20 @@ public class BpmOAReimbursementController { return success(respVO); } -// @GetMapping("/page") -// @PreAuthorize("@ss.hasPermission('bpm:oa-reimbursement:query')") -// @Operation(summary = "获得请假申请分页") -// public CommonResult> getLeavePage(@Valid BpmOALeavePageReqVO pageVO) { -// PageResult pageResult = leaveService.getLeavePage(getLoginUserId(), pageVO); -// return success(BpmOALeaveConvert.INSTANCE.convertPage(pageResult)); -// } + @GetMapping("/getByImprest") + @Operation(summary = "获得指定备用金得报销申请") + @Parameter(name = "imprestId", description = "备用金编号", required = true, example = "1024") + public CommonResult getReimbursementByImprest(@RequestParam("imprestId") Long imprestId) { + + BpmOAReimbursementDO reimbursement = service.getReimbursementByImprest(imprestId); + BpmOAReimbursementRespVO respVO = service.convert(reimbursement); + if (respVO != null && StringUtil.isNotEmpty(respVO.getProjectNo())) { + // 设置项目名称 + ProjectDTO projectDTO = projectApi.getProject(respVO.getProjectNo()).getCheckedData(); + respVO.setProjectName(projectDTO.getName()); + } + return success(respVO); + } @GetMapping("/getByProcessInstanceId") @Operation(summary = "获得报销申请") diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java index 0ae0bbe8..f281a34f 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java @@ -122,7 +122,7 @@ public class BpmTaskController { @GetMapping("done-page") @Operation(summary = "获取 Done 已办任务分页") @PreAuthorize("@ss.hasPermission('bpm:task:query')") - public CommonResult> getDoneTaskPage(@Valid BpmTaskDonePageReqVO pageVO) { + public CommonResult> getDoneTaskPage(@Valid BpmTaskDonePageReqVO pageVO) { return success(taskService.getDoneTaskPage(getLoginUserId(), pageVO)); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageRespVO.java new file mode 100644 index 00000000..1f26fcf9 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 流程任务的 Done 已完成的分页项 Response VO") +@Data +public class BpmTaskDonePageRespVO { + + @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private String id; + + @Schema(description = "任务名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + private String name; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + + @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime endTime; + + @Schema(description = "任务结果-参见 bpm_process_instance_result", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + private Integer result; + + @Schema(description = "审批建议", requiredMode = Schema.RequiredMode.REQUIRED, example = "不请假了!") + private String reason; + + @Schema(description = "流程实例编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private String processInstanceId; + + @Schema(description = "流程实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + private String processInstanceName; + + @Schema(description = "发起人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long startUserId; + + @Schema(description = "发起人的用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + private String startUserNickname; + + @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") + private String processDefinitionId; + + @Schema(description = "被抄送人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "100,200") + private String ccUserIds; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java index 27d926c0..fb5d64e1 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmTaskExtMapper.java @@ -3,19 +3,21 @@ package cn.iocoder.yudao.module.bpm.dal.mysql.task; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmCrmTaskPageReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskTodoPageReqVO; -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskTodoPageRespVO; +import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; +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.BpmTaskExtDO; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.mapstruct.ap.internal.util.Strings; import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.Objects; @Mapper public interface BpmTaskExtMapper extends BaseMapperX { @@ -75,4 +77,31 @@ public interface BpmTaskExtMapper extends BaseMapperX { .eq(pageReqVO.getIsTodo(), BpmTaskExtDO::getResult, BpmProcessInstanceResultEnum.PROCESS.getResult()) .in(!pageReqVO.getIsTodo(), BpmTaskExtDO::getResult, approveOrReject)); } + + default PageResult selectDonePage(Long userId, BpmTaskDonePageReqVO pageVO, List userIds) { + + MPJLambdaWrapperX queryWrapperX = new MPJLambdaWrapperX(); + queryWrapperX.selectAs(BpmTaskExtDO::getTaskId, BpmTaskDonePageRespVO::getId); + queryWrapperX.selectAs(BpmTaskExtDO::getName, BpmTaskDonePageRespVO::getName); + queryWrapperX.selectAs(BpmTaskExtDO::getEndTime, BpmTaskDonePageRespVO::getEndTime); + queryWrapperX.selectAs(BpmTaskExtDO::getReason, BpmTaskDonePageRespVO::getReason); + queryWrapperX.selectAs(BpmTaskExtDO::getResult, BpmTaskDonePageRespVO::getResult); + queryWrapperX.selectAs(BpmTaskExtDO::getCreateTime, BpmTaskDonePageRespVO::getCreateTime); + queryWrapperX.selectAs(BpmTaskExtDO::getProcessInstanceId, BpmTaskDonePageRespVO::getProcessInstanceId); + queryWrapperX.selectAs(BpmProcessInstanceExtDO::getName, BpmTaskDonePageRespVO::getProcessInstanceName); + queryWrapperX.selectAs(BpmProcessInstanceExtDO::getStartUserId, BpmTaskDonePageRespVO::getStartUserId); + queryWrapperX.selectAs(BpmProcessInstanceExtDO::getProcessDefinitionId, BpmTaskDonePageRespVO::getProcessDefinitionId); + queryWrapperX.selectAs(BpmProcessInstanceExtDO::getCcids, BpmTaskDonePageRespVO::getCcUserIds); + + queryWrapperX.innerJoin(BpmProcessInstanceExtDO.class, on -> on + .eq(BpmTaskExtDO::getProcessInstanceId, BpmProcessInstanceExtDO::getProcessInstanceId) + .in(Objects.nonNull(userIds), BpmProcessInstanceExtDO::getStartUserId, userIds) + .eq(Strings.isNotEmpty(pageVO.getName()), BpmProcessInstanceExtDO::getName, pageVO.getName())); + queryWrapperX.likeRight(BpmProcessInstanceExtDO::getProcessDefinitionId, "oa_"); + queryWrapperX.eq(BpmTaskExtDO::getAssigneeUserId, userId); + queryWrapperX.betweenIfPresent(BpmTaskExtDO::getCreateTime, pageVO.getCreateTime()); + queryWrapperX.orderByDesc(BpmTaskExtDO::getEndTime); + + return selectJoinPage(pageVO, BpmTaskDonePageRespVO.class, queryWrapperX); + } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementService.java index 74c1c2af..c67cebc2 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementService.java @@ -60,4 +60,10 @@ public interface BpmOAReimbursementService { */ BpmOAReimbursementDO getByProcessInstanceId(String processInstanceId); + /** + * 获得指定备用金得报销申请 + * @param imprestId 备用金编号 + * @return 报销申请 + */ + BpmOAReimbursementDO getReimbursementByImprest(Long imprestId); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java index b275c0fa..50828ce8 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAReimbursementServiceImpl.java @@ -371,4 +371,12 @@ public class BpmOAReimbursementServiceImpl extends BpmOABaseService implements B } return null; } + + @Override + public BpmOAReimbursementDO getReimbursementByImprest(Long imprestId) { + + return reimbursementMapper.selectOne(new LambdaQueryWrapper() + .eq(BpmOAReimbursementDO::getImprestId, imprestId) + .eq(BpmOAReimbursementDO::getResult, BpmProcessInstanceResultEnum.APPROVE.getResult())); + } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java index 81dcef20..720449d0 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java @@ -53,7 +53,7 @@ public interface BpmTaskService { * @param pageReqVO 分页请求 * @return 流程任务分页 */ - PageResult getDoneTaskPage(Long userId, BpmTaskDonePageReqVO pageReqVO); + PageResult getDoneTaskPage(Long userId, BpmTaskDonePageReqVO pageReqVO); /** * 获得流程任务 Map diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java index e3006477..a70455f4 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java @@ -47,7 +47,6 @@ import org.flowable.task.api.Task; import org.flowable.task.api.TaskInfo; import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; -import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.flowable.task.service.impl.persistence.entity.TaskEntityImpl; import org.springframework.context.annotation.Lazy; @@ -199,106 +198,131 @@ public class BpmTaskServiceImpl implements BpmTaskService { } @Override - public PageResult getDoneTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) { - //查询bpm_task_ext扩展表, 接受人是自己,不是自动审批的任务, 按任务名称分组 - LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); - queryWrapperX.eq(BpmTaskExtDO::getAssigneeUserId, userId); - queryWrapperX.ne(BpmTaskExtDO::getReason, BpmConstants.AUTO_APPRAVAL); - queryWrapperX.eq(BpmTaskExtDO::getDeleted, false); - queryWrapperX.groupBy(BpmTaskExtDO::getName); - queryWrapperX.select(BpmTaskExtDO::getName); - //只能查询流程标识定义为oa开头的流程 - queryWrapperX.likeIfPresent(BpmTaskExtDO::getProcessDefinitionId,"oa_"); - List list = taskExtMapper.selectList(queryWrapperX); - List taskNames = list.stream().map(BpmTaskExtDO::getName) - .collect(Collectors.toList()); - - // 查询已办任务 - HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery().finished() // 已完成 - .taskAssignee(String.valueOf(userId)) // 分配给自己 - .processDefinitionKeyLike("oa_%") - .orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序 - if (taskNames != null && !taskNames.isEmpty()) { - /** - * 条件是: 已被分配的任务的名称分组数据,作为条件查询 - */ - taskQuery.taskNameIn(taskNames); - } else { - /** - * taskNames是空或者没有数据,表示没有任何分配给自己的任务,且分自动审批的任务。 - * 那么就输出一个不存在的任务名称,可以让数据查询不出来 - */ - taskQuery.taskName("//////"); - } - - if (StrUtil.isNotBlank(pageVO.getName())) { -// taskQuery.taskNameLike("%" + pageVO.getName() + "%"); - //流程定义的名称 - taskQuery.processDefinitionName(pageVO.getName()); - } - LocalDateTime[] localDateTimes = pageVO.getCreateTime(); - if (localDateTimes != null) { - if (localDateTimes[0] != null) { - taskQuery.taskCreatedAfter(DateUtils.of(localDateTimes[0])); - } - if (localDateTimes[1] != null) { - taskQuery.taskCreatedBefore(DateUtils.of(localDateTimes[1])); - } - } - - // 执行查询 - List tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); - if (CollUtil.isEmpty(tasks)) { - return PageResult.empty(taskQuery.count()); - } - - // 获得 TaskExtDO Map - List bpmTaskExtDOs = - taskExtMapper.selectListByTaskIds(convertSet(tasks, HistoricTaskInstance::getId)); - Map bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, BpmTaskExtDO::getTaskId); -// // 获得 ProcessInstance Map -// Map historicProcessInstanceMap = -// processInstanceService.getHistoricProcessInstanceMap( -// convertSet(tasks, HistoricTaskInstance::getProcessInstanceId)); - - // 获得 ProcessInstance - List historicProcessInstances = processInstanceService.getHistoricProcessInstances( - convertSet(tasks, HistoricTaskInstance::getProcessInstanceId)); + public PageResult getDoneTaskPage(Long userId, BpmTaskDonePageReqVO pageVO) { // 判断搜索条件是否选择用户 - if (pageVO.getUserId() != null) { - // 筛选出 发起人是pageVO.getUserId() 的流程实例 - historicProcessInstances = historicProcessInstances.stream() - .filter(instance -> instance.getStartUserId().equals(pageVO.getUserId().toString())) - .collect(Collectors.toList()); - - // 同步筛选掉 task记录 - List processInstanceIds = convertList(historicProcessInstances, HistoricProcessInstance::getId); - tasks = tasks.stream().filter(task -> processInstanceIds.contains(task.getProcessInstanceId())).collect(Collectors.toList()); - }else if (pageVO.getDeptId() != null) { + List userIds = null; + if (pageVO.getDeptId() != null) { List users = adminUserApi.getUserByDeptIdAll(pageVO.getDeptId()).getCheckedData(); - List userIds = users.stream().map(AdminUserRespDTO::getId).collect(Collectors.toList()); - - historicProcessInstances = historicProcessInstances.stream() - .filter(instance -> userIds.contains(Long.valueOf(instance.getStartUserId()))) - .collect(Collectors.toList()); - - // 同步筛选掉 task记录 - List processInstanceIds = convertList(historicProcessInstances, HistoricProcessInstance::getId); - tasks = tasks.stream().filter(task -> processInstanceIds.contains(task.getProcessInstanceId())).collect(Collectors.toList()); + userIds = users.stream().map(AdminUserRespDTO::getId).collect(Collectors.toList()); } - // 获得 ProcessInstance Map - Map historicProcessInstanceMap = convertMap(historicProcessInstances, HistoricProcessInstance::getId); + // 获取待办任务 + PageResult pageResult = taskExtMapper.selectDonePage(userId, pageVO, userIds); + if (CollUtil.isNotEmpty(pageResult.getList())) { - // 获得 User Map - Map userMap = adminUserApi.getUserMap( - convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()))); - // 拼接结果 - return new PageResult<>( - BpmTaskConvert.INSTANCE.convertList2(tasks, bpmTaskExtDOMap, historicProcessInstanceMap, userMap), - taskQuery.count()); + // 获取用户编号集合 + Set startUserIds = convertSet(pageResult.getList(), BpmTaskDonePageRespVO::getStartUserId); + // 获得 User Map + Map userMap = adminUserApi.getUserMap(startUserIds); + + pageResult.getList().forEach(item -> { + item.setStartUserNickname(userMap.get(item.getStartUserId()).getNickname()); + }); + } + + return pageResult; + +// //查询bpm_task_ext扩展表, 接受人是自己,不是自动审批的任务, 按任务名称分组 +// LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); +// queryWrapperX.eq(BpmTaskExtDO::getAssigneeUserId, userId); +// queryWrapperX.ne(BpmTaskExtDO::getReason, BpmConstants.AUTO_APPRAVAL); +// queryWrapperX.eq(BpmTaskExtDO::getDeleted, false); +// queryWrapperX.groupBy(BpmTaskExtDO::getName); +// queryWrapperX.select(BpmTaskExtDO::getName); +// //只能查询流程标识定义为oa开头的流程 +// queryWrapperX.likeIfPresent(BpmTaskExtDO::getProcessDefinitionId,"oa_"); +// List list = taskExtMapper.selectList(queryWrapperX); +// List taskNames = list.stream().map(BpmTaskExtDO::getName) +// .collect(Collectors.toList()); +// +// // 查询已办任务 +// HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery().finished() // 已完成 +// .taskAssignee(String.valueOf(userId)) // 分配给自己 +// .processDefinitionKeyLike("oa_%") +// .orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序 +// if (taskNames != null && !taskNames.isEmpty()) { +// /** +// * 条件是: 已被分配的任务的名称分组数据,作为条件查询 +// */ +// taskQuery.taskNameIn(taskNames); +// } else { +// /** +// * taskNames是空或者没有数据,表示没有任何分配给自己的任务,且分自动审批的任务。 +// * 那么就输出一个不存在的任务名称,可以让数据查询不出来 +// */ +// taskQuery.taskName("//////"); +// } +// +// if (StrUtil.isNotBlank(pageVO.getName())) { +//// taskQuery.taskNameLike("%" + pageVO.getName() + "%"); +// //流程定义的名称 +// taskQuery.processDefinitionName(pageVO.getName()); +// } +// LocalDateTime[] localDateTimes = pageVO.getCreateTime(); +// if (localDateTimes != null) { +// if (localDateTimes[0] != null) { +// taskQuery.taskCreatedAfter(DateUtils.of(localDateTimes[0])); +// } +// if (localDateTimes[1] != null) { +// taskQuery.taskCreatedBefore(DateUtils.of(localDateTimes[1])); +// } +// } +// +// // 执行查询 +// List tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); +// if (CollUtil.isEmpty(tasks)) { +// return PageResult.empty(taskQuery.count()); +// } +// +// // 获得 TaskExtDO Map +// List bpmTaskExtDOs = +// taskExtMapper.selectListByTaskIds(convertSet(tasks, HistoricTaskInstance::getId)); +// Map bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, BpmTaskExtDO::getTaskId); +//// // 获得 ProcessInstance Map +//// Map historicProcessInstanceMap = +//// processInstanceService.getHistoricProcessInstanceMap( +//// convertSet(tasks, HistoricTaskInstance::getProcessInstanceId)); +// +// // 获得 ProcessInstance, +// List historicProcessInstances = processInstanceService.getHistoricProcessInstances( +// convertSet(tasks, HistoricTaskInstance::getProcessInstanceId)); +// +// // 判断搜索条件是否选择用户 +// if (pageVO.getUserId() != null) { +// // 筛选出 发起人是pageVO.getUserId() 的流程实例 +// historicProcessInstances = historicProcessInstances.stream() +// .filter(instance -> instance.getStartUserId().equals(pageVO.getUserId().toString())) +// .collect(Collectors.toList()); +// +// // 同步筛选掉 task记录 +// List processInstanceIds = convertList(historicProcessInstances, HistoricProcessInstance::getId); +// tasks = tasks.stream().filter(task -> processInstanceIds.contains(task.getProcessInstanceId())).collect(Collectors.toList()); +// }else if (pageVO.getDeptId() != null) { +// +// List users = adminUserApi.getUserByDeptIdAll(pageVO.getDeptId()).getCheckedData(); +// List userIds = users.stream().map(AdminUserRespDTO::getId).collect(Collectors.toList()); +// +// historicProcessInstances = historicProcessInstances.stream() +// .filter(instance -> userIds.contains(Long.valueOf(instance.getStartUserId()))) +// .collect(Collectors.toList()); +// +// // 同步筛选掉 task记录 +// List processInstanceIds = convertList(historicProcessInstances, HistoricProcessInstance::getId); +// tasks = tasks.stream().filter(task -> processInstanceIds.contains(task.getProcessInstanceId())).collect(Collectors.toList()); +// } +// +// // 获得 ProcessInstance Map +// Map historicProcessInstanceMap = convertMap(historicProcessInstances, HistoricProcessInstance::getId); +// +// // 获得 User Map +// Map userMap = adminUserApi.getUserMap( +// convertSet(historicProcessInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()))); +// // 拼接结果 +// return new PageResult<>( +// BpmTaskConvert.INSTANCE.convertList2(tasks, bpmTaskExtDOMap, historicProcessInstanceMap, userMap), +// taskQuery.count()); // // 获得 TaskExtDO Map // List bpmTaskExtDOsTemp =