From 8853292babb2ad94de4a3207966f1e83b767cd2d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Sun, 17 Sep 2023 16:38:34 +0800
Subject: [PATCH] 新增流程节点进程查询接口

---
 src/main/java/org/springblade/flow/engine/controller/FlowProcessController.java   |   12 ++++++++++++
 src/main/java/org/springblade/flow/engine/service/impl/FlowEngineServiceImpl.java |   23 +++++++++++++++++++++++
 src/main/java/org/springblade/flow/engine/service/FlowEngineService.java          |   10 ++++++++++
 3 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/flow/engine/controller/FlowProcessController.java b/src/main/java/org/springblade/flow/engine/controller/FlowProcessController.java
index 13aa8e2..93751e8 100644
--- a/src/main/java/org/springblade/flow/engine/controller/FlowProcessController.java
+++ b/src/main/java/org/springblade/flow/engine/controller/FlowProcessController.java
@@ -112,6 +112,18 @@
 		}
 	}
 
+
+	/**
+	 * 流程节点进程图
+	 *
+	 * @param processDefinitionId 流程id
+	 * @param processInstanceId 流程实例id
+	 */
+	@GetMapping(value = "model-view")
+	public R modelView(String processDefinitionId, String processInstanceId) {
+		return R.data(flowEngineService.modelView(processDefinitionId, processInstanceId));
+	}
+
 	/**
 	 * 获取流程节点进程图
 	 *
diff --git a/src/main/java/org/springblade/flow/engine/service/FlowEngineService.java b/src/main/java/org/springblade/flow/engine/service/FlowEngineService.java
index 54e1e81..34f5968 100644
--- a/src/main/java/org/springblade/flow/engine/service/FlowEngineService.java
+++ b/src/main/java/org/springblade/flow/engine/service/FlowEngineService.java
@@ -25,6 +25,7 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * FlowEngineService
@@ -117,4 +118,13 @@
 	 * @return
 	 */
 	boolean deleteProcessInstance(String processInstanceId, String deleteReason);
+
+	/**
+	 * 流程节点进程图
+	 *
+	 * @param processDefinitionId
+	 * @param processInstanceId
+	 * @return
+	 */
+	Map<String, Object> modelView(String processDefinitionId, String processInstanceId);
 }
diff --git a/src/main/java/org/springblade/flow/engine/service/impl/FlowEngineServiceImpl.java b/src/main/java/org/springblade/flow/engine/service/impl/FlowEngineServiceImpl.java
index a3eff94..e5c4e76 100644
--- a/src/main/java/org/springblade/flow/engine/service/impl/FlowEngineServiceImpl.java
+++ b/src/main/java/org/springblade/flow/engine/service/impl/FlowEngineServiceImpl.java
@@ -396,4 +396,27 @@
 		}
 	}
 
+	/**
+	 * 流程节点进程图
+	 *
+	 * @param processDefinitionId
+	 * @param processInstanceId
+	 * @return
+	 */
+	@Override
+	public Map<String, Object> modelView(String processDefinitionId, String processInstanceId) {
+		Map<String, Object> result = new HashMap<>();
+		// 节点标记
+		if (StringUtil.isNotBlank(processInstanceId)) {
+			result.put("flow", this.historyFlowList(processInstanceId, null, null));
+			HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery()
+				.processInstanceId(processInstanceId)
+				.singleResult();
+			processDefinitionId = processInstance.getProcessDefinitionId();
+		}
+		BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
+		// 流程图展示
+		result.put("xml", new String(new BpmnXMLConverter().convertToXML(bpmnModel)));
+		return result;
+	}
 }

--
Gitblit v1.9.3