Эх сурвалжийг харах

bpm 我的流程,增加 task 的展示

YunaiV 3 жил өмнө
parent
commit
1ab15dd1f9
16 өөрчлөгдсөн 137 нэмэгдсэн , 87 устгасан
  1. 1 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/BpmProcessInstanceController.http
  2. 2 2
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/TaskController.java
  3. 17 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/instance/BpmProcessInstancePageItemRespVO.java
  4. 1 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/FileResp.java
  5. 1 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskHandleVO.java
  6. 1 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskQueryReqVO.java
  7. 1 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskReqVO.java
  8. 1 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskStepVO.java
  9. 1 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TodoTaskPageReqVO.java
  10. 1 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TodoTaskRespVO.java
  11. 11 1
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/BpmProcessInstanceConvert.java
  12. 2 2
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/TaskConvert.java
  13. 28 2
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmTaskService.java
  14. 20 29
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java
  15. 42 41
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java
  16. 7 1
      yudao-admin-ui/src/views/bpm/process/index.vue

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/BpmProcessInstanceController.http

@@ -5,7 +5,7 @@ tenant-id: 1
 Authorization: Bearer {{token}}
 
 {
-  "processDefinitionId": "leave:7:20ada39c-6c95-11ec-88b1-cacd34981f8e",
+  "processDefinitionId": "gateway_test:2:00e52d8e-701b-11ec-aca9-a2380e71991a",
   "variables": {
     "a": 1,
     "b": "2"

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/TaskController.java → yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/TaskController.java

@@ -1,6 +1,6 @@
-package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow;
+package cn.iocoder.yudao.adminserver.modules.bpm.controller.task;
 
-import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.*;
+import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.*;
 import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;

+ 17 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/instance/BpmProcessInstancePageItemRespVO.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 @ApiModel("流程实例的分页 Item Response VO")
 @Data
@@ -34,6 +35,21 @@ public class BpmProcessInstancePageItemRespVO {
     @ApiModelProperty(value = "结束时间", required = true)
     private Date endTime;
 
-    // TODO 芋艿:tasks
+    /**
+     * 当前任务
+     */
+    private List<Task> tasks;
+
+    @ApiModel("流程任务")
+    @Data
+    public static class Task {
+
+        @ApiModelProperty(value = "流程任务的编号", required = true, example = "1024")
+        private String id;
+
+        @ApiModelProperty(value = "任务名称", required = true, example = "芋道")
+        private String name;
+
+    }
 
 }

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/FileResp.java → yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/FileResp.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo;
+package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
 
 import lombok.Data;
 

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/TaskHandleVO.java → yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskHandleVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo;
+package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/TaskQueryReqVO.java → yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskQueryReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo;
+package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/TaskReqVO.java → yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo;
+package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/TaskStepVO.java → yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TaskStepVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo;
+package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
 
 import lombok.Data;
 import lombok.ToString;

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/TodoTaskPageReqVO.java → yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TodoTaskPageReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo;
+package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
 
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import io.swagger.annotations.ApiModel;

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/TodoTaskRespVO.java → yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/task/TodoTaskRespVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo;
+package cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task;
 
 import io.swagger.annotations.ApiModel;
 import lombok.Data;

+ 11 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/BpmProcessInstanceConvert.java

@@ -5,12 +5,15 @@ import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmProcessIn
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import org.activiti.engine.repository.ProcessDefinition;
 import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.Mappings;
 import org.mapstruct.factory.Mappers;
 
 import java.util.List;
+import java.util.Map;
+import java.util.function.Consumer;
 
 /**
  * 流程实例 Convert
@@ -32,10 +35,17 @@ public interface BpmProcessInstanceConvert {
     })
     BpmProcessInstanceExtDO convert(ProcessInstance instance, ProcessDefinition definition);
 
-    PageResult<BpmProcessInstancePageItemRespVO> convertPage(PageResult<BpmProcessInstanceExtDO> page);
+    default PageResult<BpmProcessInstancePageItemRespVO> convertPage(PageResult<BpmProcessInstanceExtDO> page,
+                                                                     Map<String, List<Task>> taskMap) {
+        List<BpmProcessInstancePageItemRespVO> list = convertList(page.getList());
+        list.forEach(respVO -> respVO.setTasks(convertList2(taskMap.get(respVO.getId()))));
+        return new PageResult<>(list, page.getTotal());
+    }
 
     List<BpmProcessInstancePageItemRespVO> convertList(List<BpmProcessInstanceExtDO> list);
 
+    List<BpmProcessInstancePageItemRespVO.Task> convertList2(List<Task> tasks);
+
     @Mapping(source = "processInstanceId", target = "id")
     BpmProcessInstancePageItemRespVO convert(BpmProcessInstanceExtDO bean);
 

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/task/TaskConvert.java

@@ -1,7 +1,7 @@
 package cn.iocoder.yudao.adminserver.modules.bpm.convert.task;
 
-import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.TaskStepVO;
-import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.TodoTaskRespVO;
+import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.TaskStepVO;
+import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.TodoTaskRespVO;
 import org.activiti.api.task.model.Task;
 import org.activiti.engine.history.HistoricActivityInstance;
 import org.activiti.engine.repository.ProcessDefinition;

+ 28 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/BpmTaskService.java

@@ -1,15 +1,41 @@
 package cn.iocoder.yudao.adminserver.modules.bpm.service.task;
 
-import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.*;
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.*;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
+import org.activiti.engine.task.Task;
 
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
- * 工作流用户任务服务接口
+ * 工作任务 Service 接口
+ *
+ * @author jason
+ * @author 芋道源码
  */
 public interface BpmTaskService {
 
+    /**
+     * 获得流程任务列表
+     *
+     * @param processInstanceIds 流程实例的编号数组
+     * @return 流程任务列表
+     */
+    List<Task> getTasksByProcessInstanceIds(List<String> processInstanceIds);
+
+    /**
+     * 获得流程任务 Map
+     *
+     * @param processInstanceIds 流程实例的编号数组
+     * @return 流程任务 Map
+     */
+    default Map<String, List<Task>> getTaskMapByProcessInstanceIds(List<String> processInstanceIds) {
+        return CollectionUtils.convertMultiMap(getTasksByProcessInstanceIds(processInstanceIds),
+                Task::getProcessInstanceId);
+    }
 
     /**
      * 获取当前用户的待办任务, 分页

+ 20 - 29
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmProcessInstanceServiceImpl.java

@@ -12,9 +12,11 @@ import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceRes
 import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceStatusEnum;
 import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService;
 import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService;
+import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService;
 import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
 import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.activiti.engine.HistoryService;
 import org.activiti.engine.RuntimeService;
@@ -34,6 +36,7 @@ import java.util.Map;
 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.PROCESS_DEFINITION_IS_SUSPENDED;
 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.PROCESS_DEFINITION_NOT_EXISTS;
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
 
 /**
  * 流程实例 Service 实现类
@@ -55,7 +58,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
     @Resource
     private RuntimeService runtimeService;
     @Resource
-    private TaskService taskService;
+    private BpmTaskService taskService;
     @Resource
     private HistoryService historyService;
 
@@ -88,17 +91,17 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
         createProcessInstanceExt(instance, definition);
 
         // 添加初始的评论 TODO 芋艿:在思考下
-        Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult();
-        if (task != null) {
-            SysUserDO user = userService.getUser(userId);
-            Assert.notNull(user, "用户({})不存在", userId);
-            String type = "normal";
-            taskService.addComment(task.getId(), instance.getProcessInstanceId(), type,
-                    String.format("%s 发起流程申请", user.getNickname()));
-            // TODO 芋艿:应该不用下面两个步骤
-//           taskService.setAssignee(task.getId(), String.valueOf(userId));
-//            taskService.complete(task.getId(), variables);
-        }
+//        Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult();
+//        if (task != null) {
+//            SysUserDO user = userService.getUser(userId);
+//            Assert.notNull(user, "用户({})不存在", userId);
+//            String type = "normal";
+//            taskService.addComment(task.getId(), instance.getProcessInstanceId(), type,
+//                    String.format("%s 发起流程申请", user.getNickname()));
+//            // TODO 芋艿:应该不用下面两个步骤
+////           taskService.setAssignee(task.getId(), String.valueOf(userId));
+////            taskService.complete(task.getId(), variables);
+//        }
         return instance.getId();
     }
 
@@ -123,24 +126,12 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
         if (CollUtil.isEmpty(pageResult.getList())) {
             return new PageResult<>(pageResult.getTotal());
         }
-        // TODO 芋艿:tasks
-        // 转换返回
-        return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult);
-    }
-
-    public void getMyProcessInstancePage(Long userId) {
-        // id title 所属流程 当前审批环节 状态 结果 创建时间 提交申请时间 【标题、状态】「ActBusiness」
-        // id title 流程类别 流程版本 提交时间 流程状态 耗时 当前节点 办理 【标题、提交时间】「HistoricProcessInstanceQuery」
-
-        // id name 所属流程 流程类别 创建时间 状态 当前审批环节 【标题、流程、时间、状态、结果】
-
-        runtimeService.createProcessInstanceQuery().list();
-        HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
-                .startedBy(String.valueOf(userId)) // 发起人是自己
-                .orderByProcessInstanceStartTime().desc(); // 按照发起时间倒序
-        List<HistoricProcessInstance> list = historicProcessInstanceQuery.list();
-        System.out.println("test");
 
+        // 获得流程 Task Map
+        List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId);
+        Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds);
+        // 转换返回
+        return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap);
     }
 
     /**

+ 42 - 41
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/task/impl/BpmTaskServiceImpl.java

@@ -2,16 +2,13 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.task.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.IoUtil;
-import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.*;
+import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.task.*;
 import cn.iocoder.yudao.adminserver.modules.bpm.convert.task.TaskConvert;
 import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmTaskService;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.activiti.api.runtime.shared.query.Page;
-import org.activiti.api.runtime.shared.query.Pageable;
-import org.activiti.api.task.model.Task;
 import org.activiti.api.task.model.builders.ClaimTaskPayloadBuilder;
 import org.activiti.api.task.model.builders.TaskPayloadBuilder;
 import org.activiti.api.task.runtime.TaskRuntime;
@@ -22,11 +19,13 @@ import org.activiti.bpmn.model.SequenceFlow;
 import org.activiti.engine.HistoryService;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.RuntimeService;
+import org.activiti.engine.TaskService;
 import org.activiti.engine.history.HistoricActivityInstance;
 import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.repository.ProcessDefinition;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Comment;
+import org.activiti.engine.task.Task;
 import org.activiti.image.ProcessDiagramGenerator;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -35,11 +34,7 @@ import org.springframework.util.ObjectUtils;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
+import java.util.*;
 
 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.HIGHLIGHT_IMG_ERROR;
 import static cn.iocoder.yudao.adminserver.modules.bpm.enums.BpmErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS;
@@ -51,34 +46,39 @@ public class BpmTaskServiceImpl implements BpmTaskService {
 
     @Resource
     private  TaskRuntime taskRuntime;
-
     @Resource
-    private org.activiti.engine.TaskService activitiTaskService;
-
+    private TaskService taskService;
+    @Resource
+    private RuntimeService runtimeService;
     @Resource
     private HistoryService  historyService;
-
     @Resource
     private RepositoryService repositoryService;
 
-    @Resource
-    private RuntimeService runtimeService;
-
     @Resource
     private ProcessDiagramGenerator processDiagramGenerator;
 
+    @Override
+    public List<Task> getTasksByProcessInstanceIds(List<String> processInstanceIds) {
+        if (CollUtil.isEmpty(processInstanceIds)) {
+            return Collections.emptyList();
+        }
+        return taskService.createTaskQuery().processInstanceIdIn(processInstanceIds).list();
+    }
+
     @Override
     public PageResult<TodoTaskRespVO> getTodoTaskPage(TodoTaskPageReqVO pageReqVO) {
         // TODO @jason:封装一个方法,用于转换成 activiti 的分页对象
-        final Pageable pageable = Pageable.of((pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize(), pageReqVO.getPageSize());
-        Page<Task> pageTasks = taskRuntime.tasks(pageable);
-        int totalItems = pageTasks.getTotalItems();
-        List<Task> tasks = pageTasks.getContent();
-        final List<TodoTaskRespVO> respVOList = tasks.stream().map(task -> {
-            ProcessDefinition definition = repositoryService.getProcessDefinition(task.getProcessDefinitionId());
-            return  TaskConvert.INSTANCE.convert(task, definition);
-        }).collect(Collectors.toList());
-        return new PageResult<>(respVOList, (long)totalItems);
+//        final Pageable pageable = Pageable.of((pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize(), pageReqVO.getPageSize());
+//        Page<Task> pageTasks = taskRuntime.tasks(pageable);
+//        int totalItems = pageTasks.getTotalItems();
+//        List<Task> tasks = pageTasks.getContent();
+//        final List<TodoTaskRespVO> respVOList = tasks.stream().map(task -> {
+//            ProcessDefinition definition = repositoryService.getProcessDefinition(task.getProcessDefinitionId());
+//            return  TaskConvert.INSTANCE.convert(task, definition);
+//        }).collect(Collectors.toList());
+//        return new PageResult<>(respVOList, (long)totalItems);
+        return null;
     }
 
 
@@ -95,27 +95,27 @@ public class BpmTaskServiceImpl implements BpmTaskService {
     @Override
     @Transactional
     public void completeTask(TaskReqVO taskReq) {
-        final Task task = taskRuntime.task(taskReq.getTaskId());
-
-        activitiTaskService.addComment(taskReq.getTaskId(), task.getProcessInstanceId(), taskReq.getComment());
-
-        taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskReq.getTaskId())
-                .withVariables(taskReq.getVariables())
-                .build());
+//        final Task task = taskRuntime.task(taskReq.getTaskId());
+//
+//        taskService.addComment(taskReq.getTaskId(), task.getProcessInstanceId(), taskReq.getComment());
+//
+//        taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskReq.getTaskId())
+//                .withVariables(taskReq.getVariables())
+//                .build());
     }
 
 
 
     @Override
     public TaskHandleVO getTaskSteps(TaskQueryReqVO taskQuery) {
-        TaskHandleVO handleVO = new TaskHandleVO();
-        final Task task = taskRuntime.task(taskQuery.getTaskId());
-        List<TaskStepVO> steps = getTaskSteps(task.getProcessInstanceId());
-        handleVO.setHistoryTask(steps);
-        return handleVO;
+//        TaskHandleVO handleVO = new TaskHandleVO();
+//        final Task task = taskRuntime.task(taskQuery.getTaskId());
+//        List<TaskStepVO> steps = getTaskSteps(task.getProcessInstanceId());
+//        handleVO.setHistoryTask(steps);
+//        return handleVO;
+        return null;
     }
 
-
     private List<TaskStepVO> getTaskSteps(String processInstanceId) {
         // 获得已完成的活动
         List<HistoricActivityInstance> finished = historyService.createHistoricActivityInstanceQuery()
@@ -129,7 +129,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
             TaskStepVO stepVO = TaskConvert.INSTANCE.convert(instance);
             stepVO.setStatus(1); // TODO @jason:1 这个 magic number 要枚举起来。
             // TODO @jason:可以考虑把 comments 读取后,在统一调用 convert 拼接。另外 Comment 是废弃的类,有没其它可以使用的哈?
-            List<Comment> comments = activitiTaskService.getTaskComments(instance.getTaskId());
+            List<Comment> comments = taskService.getTaskComments(instance.getTaskId());
             if (!CollUtil.isEmpty(comments)) {
                 stepVO.setComment(Optional.ofNullable(comments.get(0)).map(Comment::getFullMessage).orElse(""));
             }
@@ -160,8 +160,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
 
     @Override
     public TodoTaskRespVO getTaskFormKey(TaskQueryReqVO taskQuery) {
-        final Task task = taskRuntime.task(taskQuery.getTaskId());
-        return TaskConvert.INSTANCE.convert(task);
+//        final Task task = taskRuntime.task(taskQuery.getTaskId());
+//        return TaskConvert.INSTANCE.convert(task);
+        return null;
     }
 
     @Override

+ 7 - 1
yudao-admin-ui/src/views/bpm/process/index.vue

@@ -54,7 +54,13 @@
           <span>{{ getDictDataLabel(DICT_TYPE.BPM_MODEL_CATEGORY, scope.row.category) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="当前审批任务" align="center" prop="tasks" /> <!-- TODO 芋艿:待完善 -->
+      <el-table-column label="当前审批任务" align="center" prop="tasks">
+        <template slot-scope="scope">
+          <el-button v-for="task in scope.row.tasks" type="text" @click="handleFormDetail(task.id)">
+            <span>{{ task.name }}</span>
+          </el-button>
+        </template>
+      </el-table-column>
       <el-table-column label="状态" align="center" prop="status">
         <template slot-scope="scope">
           <span>