|
|
@@ -0,0 +1,101 @@
|
|
|
+package com.java110.common.smo.impl;
|
|
|
+
|
|
|
+import com.java110.core.base.smo.BaseServiceSMO;
|
|
|
+import com.java110.core.smo.purchaseApplyUser.IActivitiWorkflowImageInnerServiceSMO;
|
|
|
+import com.java110.core.smo.user.IUserInnerServiceSMO;
|
|
|
+import com.java110.dto.purchaseApply.PurchaseApplyDto;
|
|
|
+import com.java110.dto.user.UserDto;
|
|
|
+import com.java110.utils.util.Base64Convert;
|
|
|
+import org.activiti.bpmn.model.BpmnModel;
|
|
|
+import org.activiti.engine.HistoryService;
|
|
|
+import org.activiti.engine.ProcessEngine;
|
|
|
+import org.activiti.engine.RepositoryService;
|
|
|
+import org.activiti.engine.RuntimeService;
|
|
|
+import org.activiti.engine.TaskService;
|
|
|
+import org.activiti.engine.history.HistoricProcessInstance;
|
|
|
+import org.activiti.engine.runtime.ProcessInstance;
|
|
|
+import org.activiti.engine.task.Task;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName ActivitiWorkflowImageInnerServiceSMOImpl
|
|
|
+ * @Description TODO
|
|
|
+ * @Author wuxw
|
|
|
+ * @Date 2020/5/10 1:42
|
|
|
+ * @Version 1.0
|
|
|
+ * add by wuxw 2020/5/10
|
|
|
+ **/
|
|
|
+@RestController
|
|
|
+public class ActivitiWorkflowImageInnerServiceSMOImpl extends BaseServiceSMO implements IActivitiWorkflowImageInnerServiceSMO {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private HistoryService historyService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RepositoryService repositoryService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProcessEngine processEngine;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RuntimeService runtimeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TaskService taskService;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IUserInnerServiceSMO userInnerServiceSMOImpl;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public String getWorkflowImage(@RequestBody String taskId){
|
|
|
+ Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
|
+ String processInstanceId = task.getProcessInstanceId();
|
|
|
+ ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
|
|
|
+ .processInstanceId(processInstanceId).singleResult();
|
|
|
+ String processDefinitionId = "";
|
|
|
+ if (processInstance == null) {
|
|
|
+ //查询已经结束的流程实例
|
|
|
+ HistoricProcessInstance processInstanceHistory =
|
|
|
+ historyService.createHistoricProcessInstanceQuery()
|
|
|
+ .processInstanceId(processInstanceId).singleResult();
|
|
|
+ if (processInstanceHistory == null)
|
|
|
+ return null;
|
|
|
+ else
|
|
|
+ processDefinitionId = processInstanceHistory.getProcessDefinitionId();
|
|
|
+ } else {
|
|
|
+ processDefinitionId = processInstance.getProcessDefinitionId();
|
|
|
+ }
|
|
|
+
|
|
|
+ //使用宋体
|
|
|
+ String fontName = "宋体";
|
|
|
+ //获取BPMN模型对象
|
|
|
+ BpmnModel model = repositoryService.getBpmnModel(processDefinitionId);
|
|
|
+ //获取流程实例当前的节点,需要高亮显示
|
|
|
+ List<String> currentActs = Collections.EMPTY_LIST;
|
|
|
+ if (processInstance != null)
|
|
|
+ currentActs = runtimeService.getActiveActivityIds(processInstance.getId());
|
|
|
+
|
|
|
+ InputStream is = processEngine.getProcessEngineConfiguration()
|
|
|
+ .getProcessDiagramGenerator()
|
|
|
+ .generateDiagram(model, "png", currentActs, new ArrayList<String>(),
|
|
|
+ fontName, fontName, fontName, null, 1.0);
|
|
|
+ String image = "";
|
|
|
+ try {
|
|
|
+ image = Base64Convert.ioToBase64(is);
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ return image;
|
|
|
+ }
|
|
|
+}
|