Browse Source

fix 流程图

ys321973351 1 year ago
parent
commit
9d6d832ad1

+ 18 - 6
itdmServer/module-ACTIVITI/src/main/java/org/jeecg/common/utils/ActivitiTracingChart.java

@@ -8,6 +8,7 @@ import org.activiti.engine.ProcessEngineConfiguration;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.history.HistoricActivityInstance;
 import org.activiti.engine.history.HistoricProcessInstance;
+import org.activiti.engine.history.HistoricTaskInstance;
 import org.activiti.image.ProcessDiagramGenerator;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -52,26 +53,37 @@ public class ActivitiTracingChart {
             }
             // 获取历史流程实例
             HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId)
-                .singleResult();
+                    .singleResult();
             // 获取流程中已经执行的节点
             List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery()
-                .processInstanceId(processInstanceId)
-                .orderByHistoricActivityInstanceStartTime().asc().list();
+                    .processInstanceId(processInstanceId)
+                    .orderByHistoricActivityInstanceStartTime().asc().list();
+
+
+            List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).list();
+
+
+            List<HistoricActivityInstance> instanceList = new ArrayList<>();
+
             // 高亮已经执行流程节点ID集合
             List<String> highLightedActivitiIds = new ArrayList<>();
             for (HistoricActivityInstance historicActivityInstance : historicActivityInstances) {
-                highLightedActivitiIds.add(historicActivityInstance.getActivityId());
+                if (historicTaskInstances.stream().anyMatch(i -> i.getId().equals(historicActivityInstance.getTaskId()))) {
+                    highLightedActivitiIds.add(historicActivityInstance.getActivityId());
+                    instanceList.add(historicActivityInstance);
+
+                }
             }
 
             ProcessDiagramGenerator processDiagramGenerator = processEngineConfiguration.getProcessDiagramGenerator();
 
             BpmnModel bpmnModel = repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId());
             // 高亮流程已发生流转的线id集合
-            List<String> highLightedFlowIds = getHighLightedFlows(bpmnModel, historicActivityInstances);
+            List<String> highLightedFlowIds = getHighLightedFlows(bpmnModel, instanceList);
 
             // 使用默认配置获得流程图表生成器,并生成追踪图片字符流
             InputStream imageStream = processDiagramGenerator
-                .generateDiagram(bpmnModel, "png", highLightedActivitiIds, highLightedFlowIds, "宋体", "微软雅黑", "黑体", null, 2.0);
+                    .generateDiagram(bpmnModel, "png", highLightedActivitiIds, highLightedFlowIds, "宋体", "微软雅黑", "黑体", null, 2.0);
 
             // 输出图片内容
             byte[] b = new byte[1024];