Commit acea73c9915e6c8ec9e20efd336b18c982e63b3b
1 parent
ba4b3701
BPM:新增【流程任务】菜单,用于全部流程实例的查询
Showing
5 changed files
with
83 additions
and
15 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java
| @@ -59,8 +59,12 @@ public class BpmTaskController { | @@ -59,8 +59,12 @@ public class BpmTaskController { | ||
| 59 | @GetMapping("todo-page") | 59 | @GetMapping("todo-page") |
| 60 | @Operation(summary = "获取 Todo 待办任务分页") | 60 | @Operation(summary = "获取 Todo 待办任务分页") |
| 61 | @PreAuthorize("@ss.hasPermission('bpm:task:query')") | 61 | @PreAuthorize("@ss.hasPermission('bpm:task:query')") |
| 62 | - public CommonResult<PageResult<BpmTaskRespVO>> getTodoTaskPage(@Valid BpmTaskPageReqVO pageVO) { | ||
| 63 | - PageResult<Task> pageResult = taskService.getTodoTaskPage(getLoginUserId(), pageVO); | 62 | + public CommonResult<PageResult<BpmTaskRespVO>> getTaskTodoPage(@Valid BpmTaskPageReqVO pageVO) { |
| 63 | + PageResult<Task> pageResult = taskService.getTaskTodoPage(getLoginUserId(), pageVO); | ||
| 64 | + if (CollUtil.isEmpty(pageResult.getList())) { | ||
| 65 | + return success(PageResult.empty()); | ||
| 66 | + } | ||
| 67 | + | ||
| 64 | // 拼接数据 | 68 | // 拼接数据 |
| 65 | Map<String, ProcessInstance> processInstanceMap = processInstanceService.getProcessInstanceMap( | 69 | Map<String, ProcessInstance> processInstanceMap = processInstanceService.getProcessInstanceMap( |
| 66 | convertSet(pageResult.getList(), Task::getProcessInstanceId)); | 70 | convertSet(pageResult.getList(), Task::getProcessInstanceId)); |
| @@ -72,14 +76,39 @@ public class BpmTaskController { | @@ -72,14 +76,39 @@ public class BpmTaskController { | ||
| 72 | @GetMapping("done-page") | 76 | @GetMapping("done-page") |
| 73 | @Operation(summary = "获取 Done 已办任务分页") | 77 | @Operation(summary = "获取 Done 已办任务分页") |
| 74 | @PreAuthorize("@ss.hasPermission('bpm:task:query')") | 78 | @PreAuthorize("@ss.hasPermission('bpm:task:query')") |
| 75 | - public CommonResult<PageResult<BpmTaskRespVO>> getDoneTaskPage(@Valid BpmTaskPageReqVO pageVO) { | ||
| 76 | - PageResult<HistoricTaskInstance> pageResult = taskService.getDoneTaskPage(getLoginUserId(), pageVO); | 79 | + public CommonResult<PageResult<BpmTaskRespVO>> getTaskDonePage(@Valid BpmTaskPageReqVO pageVO) { |
| 80 | + PageResult<HistoricTaskInstance> pageResult = taskService.getTaskDonePage(getLoginUserId(), pageVO); | ||
| 81 | + if (CollUtil.isEmpty(pageResult.getList())) { | ||
| 82 | + return success(PageResult.empty()); | ||
| 83 | + } | ||
| 84 | + | ||
| 77 | // 拼接数据 | 85 | // 拼接数据 |
| 78 | Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap( | 86 | Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap( |
| 79 | convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId)); | 87 | convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId)); |
| 80 | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( | 88 | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( |
| 81 | convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()))); | 89 | convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()))); |
| 82 | - return success(BpmTaskConvert.INSTANCE.buildDoneTaskPage(pageResult, processInstanceMap, userMap)); | 90 | + return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, null)); |
| 91 | + } | ||
| 92 | + | ||
| 93 | + @GetMapping("manager-page") | ||
| 94 | + @Operation(summary = "获取全部任务的分页", description = "用于【流程任务】菜单") | ||
| 95 | + @PreAuthorize("@ss.hasPermission('bpm:task:mananger-query')") | ||
| 96 | + public CommonResult<PageResult<BpmTaskRespVO>> getDoneTaskPage(@Valid BpmTaskPageReqVO pageVO) { | ||
| 97 | + PageResult<HistoricTaskInstance> pageResult = taskService.getTaskPage(getLoginUserId(), pageVO); | ||
| 98 | + if (CollUtil.isEmpty(pageResult.getList())) { | ||
| 99 | + return success(PageResult.empty()); | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + // 拼接数据 | ||
| 103 | + Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap( | ||
| 104 | + convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId)); | ||
| 105 | + // 获得 User 和 Dept Map | ||
| 106 | + Set<Long> userIds = convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())); | ||
| 107 | + userIds.addAll(convertSet(pageResult.getList(), task -> NumberUtils.parseLong(task.getAssignee()))); | ||
| 108 | + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds); | ||
| 109 | + Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap( | ||
| 110 | + convertSet(userMap.values(), AdminUserRespDTO::getDeptId)); | ||
| 111 | + return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, deptMap)); | ||
| 83 | } | 112 | } |
| 84 | 113 | ||
| 85 | @GetMapping("/list-by-process-instance-id") | 114 | @GetMapping("/list-by-process-instance-id") |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvert.java
| @@ -51,9 +51,11 @@ public interface BpmProcessInstanceConvert { | @@ -51,9 +51,11 @@ public interface BpmProcessInstanceConvert { | ||
| 51 | MapUtils.findAndThen(categoryMap, respVO.getCategory(), category -> respVO.setCategoryName(category.getName())); | 51 | MapUtils.findAndThen(categoryMap, respVO.getCategory(), category -> respVO.setCategoryName(category.getName())); |
| 52 | respVO.setTasks(BeanUtils.toBean(taskMap.get(respVO.getId()), BpmProcessInstanceRespVO.Task.class)); | 52 | respVO.setTasks(BeanUtils.toBean(taskMap.get(respVO.getId()), BpmProcessInstanceRespVO.Task.class)); |
| 53 | // user | 53 | // user |
| 54 | - AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(pageResult.getList().get(i).getStartUserId())); | ||
| 55 | - respVO.setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class)); | ||
| 56 | - MapUtils.findAndThen(deptMap, startUser.getDeptId(), dept -> respVO.getStartUser().setDeptName(dept.getName())); | 54 | + if (userMap != null) { |
| 55 | + AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(pageResult.getList().get(i).getStartUserId())); | ||
| 56 | + respVO.setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class)); | ||
| 57 | + MapUtils.findAndThen(deptMap, startUser.getDeptId(), dept -> respVO.getStartUser().setDeptName(dept.getName())); | ||
| 58 | + } | ||
| 57 | } | 59 | } |
| 58 | return vpPageResult; | 60 | return vpPageResult; |
| 59 | } | 61 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java
| @@ -52,12 +52,19 @@ public interface BpmTaskConvert { | @@ -52,12 +52,19 @@ public interface BpmTaskConvert { | ||
| 52 | }); | 52 | }); |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | - default PageResult<BpmTaskRespVO> buildDoneTaskPage(PageResult<HistoricTaskInstance> pageResult, | ||
| 56 | - Map<String, HistoricProcessInstance> processInstanceMap, | ||
| 57 | - Map<Long, AdminUserRespDTO> userMap) { | 55 | + default PageResult<BpmTaskRespVO> buildTaskPage(PageResult<HistoricTaskInstance> pageResult, |
| 56 | + Map<String, HistoricProcessInstance> processInstanceMap, | ||
| 57 | + Map<Long, AdminUserRespDTO> userMap, | ||
| 58 | + Map<Long, DeptRespDTO> deptMap) { | ||
| 58 | List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(pageResult.getList(), task -> { | 59 | List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(pageResult.getList(), task -> { |
| 59 | BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class); | 60 | BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class); |
| 60 | taskVO.setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task)); | 61 | taskVO.setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task)); |
| 62 | + // 用户信息 | ||
| 63 | + AdminUserRespDTO assignUser = userMap.get(NumberUtils.parseLong(task.getAssignee())); | ||
| 64 | + if (assignUser != null) { | ||
| 65 | + taskVO.setAssigneeUser(BeanUtils.toBean(assignUser, BpmProcessInstanceRespVO.User.class)); | ||
| 66 | + findAndThen(deptMap, assignUser.getDeptId(), dept -> taskVO.getAssigneeUser().setDeptName(dept.getName())); | ||
| 67 | + } | ||
| 61 | // 流程实例 | 68 | // 流程实例 |
| 62 | HistoricProcessInstance processInstance = processInstanceMap.get(taskVO.getProcessInstanceId()); | 69 | HistoricProcessInstance processInstance = processInstanceMap.get(taskVO.getProcessInstanceId()); |
| 63 | if (processInstance != null) { | 70 | if (processInstance != null) { |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java
| @@ -27,7 +27,7 @@ public interface BpmTaskService { | @@ -27,7 +27,7 @@ public interface BpmTaskService { | ||
| 27 | * @param pageReqVO 分页请求 | 27 | * @param pageReqVO 分页请求 |
| 28 | * @return 流程任务分页 | 28 | * @return 流程任务分页 |
| 29 | */ | 29 | */ |
| 30 | - PageResult<Task> getTodoTaskPage(Long userId, BpmTaskPageReqVO pageReqVO); | 30 | + PageResult<Task> getTaskTodoPage(Long userId, BpmTaskPageReqVO pageReqVO); |
| 31 | 31 | ||
| 32 | /** | 32 | /** |
| 33 | * 获得已办的流程任务分页 | 33 | * 获得已办的流程任务分页 |
| @@ -36,7 +36,16 @@ public interface BpmTaskService { | @@ -36,7 +36,16 @@ public interface BpmTaskService { | ||
| 36 | * @param pageReqVO 分页请求 | 36 | * @param pageReqVO 分页请求 |
| 37 | * @return 流程任务分页 | 37 | * @return 流程任务分页 |
| 38 | */ | 38 | */ |
| 39 | - PageResult<HistoricTaskInstance> getDoneTaskPage(Long userId, BpmTaskPageReqVO pageReqVO); | 39 | + PageResult<HistoricTaskInstance> getTaskDonePage(Long userId, BpmTaskPageReqVO pageReqVO); |
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 获得全部的流程任务分页 | ||
| 43 | + * | ||
| 44 | + * @param userId 用户编号 | ||
| 45 | + * @param pageReqVO 分页请求 | ||
| 46 | + * @return 流程任务分页 | ||
| 47 | + */ | ||
| 48 | + PageResult<HistoricTaskInstance> getTaskPage(Long userId, BpmTaskPageReqVO pageReqVO); | ||
| 40 | 49 | ||
| 41 | /** | 50 | /** |
| 42 | * 获得流程任务 Map | 51 | * 获得流程任务 Map |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
| @@ -86,7 +86,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -86,7 +86,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 86 | private AdminUserApi adminUserApi; | 86 | private AdminUserApi adminUserApi; |
| 87 | 87 | ||
| 88 | @Override | 88 | @Override |
| 89 | - public PageResult<Task> getTodoTaskPage(Long userId, BpmTaskPageReqVO pageVO) { | 89 | + public PageResult<Task> getTaskTodoPage(Long userId, BpmTaskPageReqVO pageVO) { |
| 90 | TaskQuery taskQuery = taskService.createTaskQuery() | 90 | TaskQuery taskQuery = taskService.createTaskQuery() |
| 91 | .taskAssignee(String.valueOf(userId)) // 分配给自己 | 91 | .taskAssignee(String.valueOf(userId)) // 分配给自己 |
| 92 | .active() | 92 | .active() |
| @@ -108,7 +108,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -108,7 +108,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 108 | } | 108 | } |
| 109 | 109 | ||
| 110 | @Override | 110 | @Override |
| 111 | - public PageResult<HistoricTaskInstance> getDoneTaskPage(Long userId, BpmTaskPageReqVO pageVO) { | 111 | + public PageResult<HistoricTaskInstance> getTaskDonePage(Long userId, BpmTaskPageReqVO pageVO) { |
| 112 | HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery() | 112 | HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery() |
| 113 | .finished() // 已完成 | 113 | .finished() // 已完成 |
| 114 | .taskAssignee(String.valueOf(userId)) // 分配给自己 | 114 | .taskAssignee(String.valueOf(userId)) // 分配给自己 |
| @@ -131,6 +131,27 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -131,6 +131,27 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | @Override | 133 | @Override |
| 134 | + public PageResult<HistoricTaskInstance> getTaskPage(Long userId, BpmTaskPageReqVO pageVO) { | ||
| 135 | + HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery() | ||
| 136 | + .includeTaskLocalVariables() | ||
| 137 | + .orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序 | ||
| 138 | + if (StrUtil.isNotBlank(pageVO.getName())) { | ||
| 139 | + taskQuery.taskNameLike("%" + pageVO.getName() + "%"); | ||
| 140 | + } | ||
| 141 | + if (ArrayUtil.isNotEmpty(pageVO.getCreateTime())) { | ||
| 142 | + taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[0])); | ||
| 143 | + taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[1])); | ||
| 144 | + } | ||
| 145 | + // 执行查询 | ||
| 146 | + long count = taskQuery.count(); | ||
| 147 | + if (count == 0) { | ||
| 148 | + return PageResult.empty(); | ||
| 149 | + } | ||
| 150 | + List<HistoricTaskInstance> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); | ||
| 151 | + return new PageResult<>(tasks, count); | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | + @Override | ||
| 134 | public List<Task> getTasksByProcessInstanceIds(List<String> processInstanceIds) { | 155 | public List<Task> getTasksByProcessInstanceIds(List<String> processInstanceIds) { |
| 135 | if (CollUtil.isEmpty(processInstanceIds)) { | 156 | if (CollUtil.isEmpty(processInstanceIds)) { |
| 136 | return Collections.emptyList(); | 157 | return Collections.emptyList(); |