Prechádzať zdrojové kódy

优化流程图展示逻辑

hubin 5 mesiacov pred
rodič
commit
9495038836

+ 9 - 10
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -110,11 +110,11 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
         // 获取当前流程模型
         FlwExtInstance extInstance = extInstanceMapper.selectById(instanceId);
         vo.setModelContent(extInstance.getModelContent());
+        ProcessModel processModel = extInstance.model();
 
         // 表单配置权限
         if (null != dto.getTaskId()) {
             FlwTask flwTask = this.getFlwTask(dto.getTaskId());
-            ProcessModel processModel = extInstance.model();
             NodeModel nodeModel = processModel.getNode(flwTask.getTaskKey());
             Map<String, Object> extendConfig = nodeModel.getExtendConfig();
             if (null != extendConfig) {
@@ -159,19 +159,18 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
             }
         }
 
-
-        // 审批记录列表
-        List<FlwProcessApproval> processApprovals = flwProcessApprovalService.listByInstanceId(instanceId);
-
         // 渲染节点列表
         Map<String, Integer> renderNodes = new HashMap<>();
-        for (FlwProcessApproval fpa : processApprovals) {
-            if (!Objects.equals(0, fpa.getType())) {
-                // 已执行节点
-                renderNodes.put(fpa.getTaskKey(), 0);
-            }
+        Execution execution = new Execution(FlowHelper.getFlowCreator(), null);
+        List<String> usedNodeKeys = ModelHelper.getAllUsedNodeKeys(flowLongEngine.getContext(), execution, processModel.getNodeConfig(), hisInstance.getCurrentNodeKey());
+        for (String nodeKey : usedNodeKeys) {
+            // 已执行节点
+            renderNodes.put(nodeKey, 0);
         }
 
+        // 审批记录列表
+        List<FlwProcessApproval> processApprovals = flwProcessApprovalService.listByInstanceId(instanceId);
+
         // 追加当前正在审核任务记录
         if (null == hisInstance.getEndTime()) {
             List<FlwTask> flwTaskList = flowLongEngine.queryService().getTasksByInstanceId(instanceId);