Commit 9bbeb93b2e8f6a3baf4fd883199e9f3db8d6b99f

Authored by yunlong.li
1 parent 3c3f46ee

fix:[工作流] 返回对应实例的流程图

yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/workflow/TaskController.java
@@ -59,7 +59,7 @@ public class TaskController { @@ -59,7 +59,7 @@ public class TaskController {
59 } 59 }
60 60
61 /** 61 /**
62 - * 返回高亮的流转进程 62 + * 返回高亮的流转图SVG
63 * @param processInstanceId 63 * @param processInstanceId
64 */ 64 */
65 @GetMapping("/process/highlight-img/{id}") 65 @GetMapping("/process/highlight-img/{id}")
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/TaskService.java
@@ -27,7 +27,8 @@ public interface TaskService { @@ -27,7 +27,8 @@ public interface TaskService {
27 27
28 /** 28 /**
29 * 返回高亮的流转进程 29 * 返回高亮的流转进程
30 - * @param processInstanceId 30 + * @param processInstanceId 实例Id
  31 + * @param response 响应
31 */ 32 */
32 void getHighlightImg(String processInstanceId, HttpServletResponse response); 33 void getHighlightImg(String processInstanceId, HttpServletResponse response);
33 } 34 }
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/workflow/impl/TaskServiceImpl.java
@@ -23,6 +23,7 @@ import org.activiti.engine.RepositoryService; @@ -23,6 +23,7 @@ import org.activiti.engine.RepositoryService;
23 import org.activiti.engine.RuntimeService; 23 import org.activiti.engine.RuntimeService;
24 import org.activiti.engine.history.HistoricActivityInstance; 24 import org.activiti.engine.history.HistoricActivityInstance;
25 import org.activiti.engine.history.HistoricProcessInstance; 25 import org.activiti.engine.history.HistoricProcessInstance;
  26 +import org.activiti.engine.history.HistoricTaskInstance;
26 import org.activiti.engine.repository.ProcessDefinition; 27 import org.activiti.engine.repository.ProcessDefinition;
27 import org.activiti.engine.runtime.ProcessInstance; 28 import org.activiti.engine.runtime.ProcessInstance;
28 import org.activiti.engine.task.Comment; 29 import org.activiti.engine.task.Comment;
@@ -34,7 +35,9 @@ import org.springframework.util.CollectionUtils; @@ -34,7 +35,9 @@ import org.springframework.util.CollectionUtils;
34 35
35 36
36 import javax.annotation.Resource; 37 import javax.annotation.Resource;
  38 +import javax.imageio.ImageIO;
37 import javax.servlet.http.HttpServletResponse; 39 import javax.servlet.http.HttpServletResponse;
  40 +import java.awt.image.BufferedImage;
38 import java.io.IOException; 41 import java.io.IOException;
39 import java.io.InputStream; 42 import java.io.InputStream;
40 import java.net.URLEncoder; 43 import java.net.URLEncoder;
@@ -225,28 +228,28 @@ public class TaskServiceImpl implements TaskService { @@ -225,28 +228,28 @@ public class TaskServiceImpl implements TaskService {
225 228
226 229
227 @Override 230 @Override
228 - public void getHighlightImg(String processDefinitionId, HttpServletResponse response) { 231 + public void getHighlightImg(String processInstanceId, HttpServletResponse response) {
229 // 查询历史 232 // 查询历史
230 - HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processDefinitionId).singleResult(); 233 + HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
231 // 如果有结束时间 234 // 如果有结束时间
232 if (hpi == null) { 235 if (hpi == null) {
233 return; 236 return;
234 } 237 }
235 // 没有结束时间。说明流程在执行过程中 238 // 没有结束时间。说明流程在执行过程中
236 - ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processDefinitionId).singleResult(); 239 + ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
237 BpmnModel bpmnModel = repositoryService.getBpmnModel(pi.getProcessDefinitionId()); 240 BpmnModel bpmnModel = repositoryService.getBpmnModel(pi.getProcessDefinitionId());
238 List<String> highLightedActivities = new ArrayList<>(); 241 List<String> highLightedActivities = new ArrayList<>();
239 242
240 - List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery().processInstanceId(processDefinitionId) 243 + List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId)
241 .orderByHistoricActivityInstanceId().asc().list(); 244 .orderByHistoricActivityInstanceId().asc().list();
242 // 获取所有活动节点 245 // 获取所有活动节点
243 List<HistoricActivityInstance> finishedInstances = historyService.createHistoricActivityInstanceQuery() 246 List<HistoricActivityInstance> finishedInstances = historyService.createHistoricActivityInstanceQuery()
244 - .processInstanceId(processDefinitionId).finished().list(); 247 + .processInstanceId(processInstanceId).finished().list();
245 for (HistoricActivityInstance hai : finishedInstances) { 248 for (HistoricActivityInstance hai : finishedInstances) {
246 highLightedActivities.add(hai.getActivityId()); 249 highLightedActivities.add(hai.getActivityId());
247 } 250 }
248 // 已完成的节点+当前节点 251 // 已完成的节点+当前节点
249 - highLightedActivities.addAll(runtimeService.getActiveActivityIds(processDefinitionId)); 252 + highLightedActivities.addAll(runtimeService.getActiveActivityIds(processInstanceId));
250 253
251 // 经过的流 254 // 经过的流
252 List<String> highLightedFlowIds = getHighLightedFlows(bpmnModel, historicActivityInstances); 255 List<String> highLightedFlowIds = getHighLightedFlows(bpmnModel, historicActivityInstances);
@@ -264,6 +267,7 @@ public class TaskServiceImpl implements TaskService { @@ -264,6 +267,7 @@ public class TaskServiceImpl implements TaskService {
264 } 267 }
265 268
266 private void responseImage(HttpServletResponse response, InputStream inputStream, String picName) throws IOException { 269 private void responseImage(HttpServletResponse response, InputStream inputStream, String picName) throws IOException {
  270 + BufferedImage src = ImageIO.read(inputStream);
267 response.setContentType("application/octet-stream;charset=UTF-8"); 271 response.setContentType("application/octet-stream;charset=UTF-8");
268 response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(picName, "UTF-8")); 272 response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(picName, "UTF-8"));
269 byte[] b = new byte[1024]; 273 byte[] b = new byte[1024];