Forráskód Böngészése

修复解决回退上一个节点查询列表问题

hubin 9 hónapja
szülő
commit
9e1812e3d0

+ 4 - 3
src/main/java/com/aizuda/boot/modules/flw/controller/ProcessTaskController.java

@@ -17,6 +17,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 流程任务 前端控制器
@@ -75,9 +76,9 @@ public class ProcessTaskController extends ApiController {
 
     @Operation(summary = "以前的节点名称列表")
     @Permission("flw:processTask:approval")
-    @PostMapping("/previous-node-names/{taskId}")
-    public List<String> previousNodeNames(@PathVariable("taskId") Long taskId) {
-        return processTaskService.listPreviousNodeNames(taskId);
+    @PostMapping("/previous-nodes/{taskId}")
+    public List<Map<String, String>> previousNodes(@PathVariable("taskId") Long taskId) {
+        return processTaskService.listPreviousNodes(taskId);
     }
 
     @Operation(summary = "审批评论")

+ 3 - 2
src/main/java/com/aizuda/boot/modules/flw/service/IProcessTaskService.java

@@ -7,6 +7,7 @@ import com.aizuda.core.api.PageParam;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 流程任务 服务类
@@ -47,11 +48,11 @@ public interface IProcessTaskService {
     TaskApprovalVO approvalInfo(ProcessInfoDTO dto);
 
     /**
-     * 根据任务ID查询以前的节点名称列表
+     * 根据任务ID查询以前的节点Map列表
      *
      * @param taskId 任务ID
      */
-    List<String> listPreviousNodeNames(Long taskId);
+    List<Map<String, String>> listPreviousNodes(Long taskId);
 
     /**
      * 设置任务为已阅状态

+ 17 - 6
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -34,10 +34,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -215,10 +212,24 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
     }
 
     @Override
-    public List<String> listPreviousNodeNames(Long taskId) {
+    public List<Map<String, String>> listPreviousNodes(Long taskId) {
         FlwTask flwTask = this.getFlwTask(taskId);
         ProcessModel processModel = flowLongEngine.runtimeService().getProcessModelByInstanceId(flwTask.getInstanceId());
-        return ModelHelper.getAllPreviousNodeKeys(processModel.getNode(flwTask.getTaskName()));
+        List<String> nodeKeys = ModelHelper.getAllPreviousNodeKeys(processModel.getNode(flwTask.getTaskKey()));
+        List<Map<String, String>> mapList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(nodeKeys)) {
+            for (String nodeKey : nodeKeys) {
+                // 模型中找到可回退历史节点信息
+                NodeModel nodeModel = processModel.getNode(nodeKey);
+                if (null != nodeModel) {
+                    Map<String, String> map = new HashMap<>();
+                    map.put("nodeName", nodeModel.getNodeName());
+                    map.put("nodeKey", nodeModel.getNodeKey());
+                    mapList.add(map);
+                }
+            }
+        }
+        return mapList;
     }
 
     @Override