浏览代码

我已发起的流程

dongpo 1 年之前
父节点
当前提交
24c829f099

+ 7 - 3
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java

@@ -35,10 +35,10 @@ import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
 @Tag(name = "管理后台 - 流程实例") // 流程实例,通过流程定义创建的一次“申请”
@@ -77,13 +77,17 @@ public class BpmProcessInstanceController {
                 convertList(pageResult.getList(), HistoricProcessInstance::getId));
         Map<String, ProcessDefinition> processDefinitionMap = processDefinitionService.getProcessDefinitionMap(
                 convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
+        List<Task> tasksByProcessInstanceIds = taskService.getTasksByProcessInstanceIds(pageResult.getList().stream().map(HistoricProcessInstance::getId).collect(Collectors.toList()));
+        List<Long> collect = tasksByProcessInstanceIds.stream().map(task -> Long.valueOf(task.getAssignee())).collect(Collectors.toList());
+        List<AdminUserRespDTO> userList = adminUserApi.getUserList(collect);
+        Map<Long, AdminUserRespDTO> userMap = convertMap(userList, AdminUserRespDTO::getId);
         Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
                 convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
         Map<String, BpmProcessDefinitionExtDO> bpmProcessDefinitionExtDOMap = processDefinitionService.getProcessDefinitionExtMap(
                 convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId)
         );
         return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
-                processDefinitionMap, categoryMap, taskMap, null, null, bpmProcessDefinitionExtDOMap));
+                processDefinitionMap, categoryMap, taskMap, userMap, null, bpmProcessDefinitionExtDOMap));
     }
 
     @GetMapping("/manager-page")

+ 8 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java

@@ -46,6 +46,11 @@ public class BpmProcessInstanceRespVO {
      */
     private User startUser;
 
+    /**
+     * 当前处理人
+     */
+    private User currentAuditUser;
+
     @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
     private String processDefinitionId;
     /**
@@ -84,6 +89,9 @@ public class BpmProcessInstanceRespVO {
         @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
         private String name;
 
+        @Schema(description = "当前任务处理人")
+        private String assignee;
+
     }
 
 }

+ 10 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvert.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.bpm.convert.task;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
@@ -60,7 +61,15 @@ public interface BpmProcessInstanceConvert {
             MapUtils.findAndThen(processDefinitionMap, respVO.getProcessDefinitionId(),
                     processDefinition -> respVO.setCategory(processDefinition.getCategory()));
             MapUtils.findAndThen(categoryMap, respVO.getCategory(), category -> respVO.setCategoryName(category.getName()));
-            respVO.setTasks(BeanUtils.toBean(taskMap.get(respVO.getId()), BpmProcessInstanceRespVO.Task.class));
+            List<Task> tasks = taskMap.get(respVO.getId());
+            respVO.setTasks(BeanUtils.toBean(tasks, BpmProcessInstanceRespVO.Task.class));
+            if (CollectionUtil.isNotEmpty(tasks)) {
+                String assignee = tasks.get(0).getAssignee();
+                if (userMap != null){
+                    AdminUserRespDTO adminUserRespDTO = userMap.get(Long.valueOf(assignee));
+                    respVO.setCurrentAuditUser(BeanUtils.toBean(adminUserRespDTO, BpmProcessInstanceRespVO.User.class));
+                }
+            }
             // user
             if (userMap != null) {
                 AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(pageResult.getList().get(i).getStartUserId()));