ソースを参照

优化流程查询

java110 6 年 前
コミット
4c91fada0d

+ 2 - 2
Api/src/main/java/com/java110/api/listener/purchaseApply/AuditApplyOrderListener.java

@@ -84,7 +84,7 @@ public class AuditApplyOrderListener extends AbstractServiceApiListener {
             context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
             JSONArray businesses = new JSONArray();
             AppService service = event.getAppService();
-            businesses.add(updateComplaint(reqJson, context));
+            businesses.add(updatePurchaseApply(reqJson, context));
             responseEntity = iApplyOrderBMOImpl.callService(context, service.getServiceCode(), businesses);
         }
         context.setResponseEntity(responseEntity);
@@ -99,7 +99,7 @@ public class AuditApplyOrderListener extends AbstractServiceApiListener {
      * @param dataFlowContext 数据上下文
      * @return 订单服务能够接受的报文
      */
-    private JSONObject updateComplaint(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+    private JSONObject updatePurchaseApply(JSONObject paramInJson, DataFlowContext dataFlowContext) {
 
         ComplaintDto complaintDto = new ComplaintDto();
         complaintDto.setStoreId(paramInJson.getString("storeId"));

+ 87 - 0
Api/src/main/java/com/java110/api/listener/purchaseApply/ListWorkflowImageListener.java

@@ -0,0 +1,87 @@
+package com.java110.api.listener.purchaseApply;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.purchaseApply.IPurchaseApplyInnerServiceSMO;
+import com.java110.core.smo.purchaseApplyUser.IActivitiWorkflowImageInnerServiceSMO;
+import com.java110.core.smo.purchaseApplyUser.IPurchaseApplyUserInnerServiceSMO;
+import com.java110.dto.purchaseApply.PurchaseApplyDto;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.ServiceCodePurchaseApplyConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.Base64Convert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.api.purchaseApply.ApiPurchaseApplyDataVo;
+import com.java110.vo.api.purchaseApply.ApiPurchaseApplyVo;
+import com.java110.vo.api.purchaseApply.PurchaseApplyDetailVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.MultiValueMap;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 查询小区侦听类
+ */
+@Java110Listener("listWorkflowImageListener")
+public class ListWorkflowImageListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IActivitiWorkflowImageInnerServiceSMO activitiWorkflowImageInnerServiceSMOImpl;
+
+
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodePurchaseApplyConstant.LIST_WORKFLOW_IMAGE;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "taskId", "必填,请填写任务ID");
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        String taskId = reqJson.getString("taskId");
+
+        String image = activitiWorkflowImageInnerServiceSMOImpl.getWorkflowImage(taskId);
+        MultiValueMap headers = new HttpHeaders();
+        headers.add("Accept-Ranges", "bytes");
+        headers.add("content-type", "application/octet-stream");
+
+        try {
+            byte[] contextByte = Base64Convert.base64ToByte(image
+                    .replace("data:image/webp;base64,", "")
+                    .replace("data:image/png;base64,", "")
+                    .replace("data:image/jpeg;base64,", "")
+            );
+            ResponseEntity<Object> responseEntity = new ResponseEntity<Object>(contextByte, headers, HttpStatus.OK);
+            context.setResponseEntity(responseEntity);
+        }catch (Exception e){
+            ResponseEntity<Object> responseEntity = new ResponseEntity<Object>("查询失败", HttpStatus.BAD_REQUEST);
+            context.setResponseEntity(responseEntity);
+        }
+
+    }
+}

+ 101 - 0
CommonService/src/main/java/com/java110/common/smo/impl/ActivitiWorkflowImageInnerServiceSMOImpl.java

@@ -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;
+    }
+}

+ 15 - 0
CommonService/src/main/java/com/java110/common/smo/impl/PurchaseApplyUserInnerServiceSMOImpl.java

@@ -14,10 +14,13 @@ import com.java110.dto.purchaseApply.PurchaseApplyDto;
 import com.java110.dto.user.UserDto;
 import com.java110.entity.audit.AuditUser;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.Base64Convert;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
+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;
@@ -33,7 +36,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -51,6 +58,13 @@ public class PurchaseApplyUserInnerServiceSMOImpl extends BaseServiceSMO impleme
     @Autowired
     private TaskService taskService;
 
+    @Autowired
+    private HistoryService historyService;
+
+    @Autowired
+    private RepositoryService repositoryService;
+
+
     @Autowired
     private IUserInnerServiceSMO userInnerServiceSMOImpl;
 
@@ -319,6 +333,7 @@ public class PurchaseApplyUserInnerServiceSMOImpl extends BaseServiceSMO impleme
     }
 
 
+
     public ProcessEngine getProcessEngine() {
         return processEngine;
     }

+ 28 - 0
java110-core/src/main/java/com/java110/core/smo/purchaseApplyUser/IActivitiWorkflowImageInnerServiceSMO.java

@@ -0,0 +1,28 @@
+package com.java110.core.smo.purchaseApplyUser;
+
+import com.java110.core.feign.FeignConfiguration;
+import com.java110.dto.auditMessage.AuditMessageDto;
+import com.java110.dto.purchaseApply.PurchaseApplyDto;
+import com.java110.entity.audit.AuditUser;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.List;
+
+@FeignClient(name = "common-service", configuration = {FeignConfiguration.class})
+@RequestMapping("/activitiWorkflowImageApi")
+public interface IActivitiWorkflowImageInnerServiceSMO {
+
+    /**
+     * 启动流程
+     *
+     * @return
+     */
+    @RequestMapping(value = "/getWorkflowImage", method = RequestMethod.POST)
+    public String getWorkflowImage(@RequestBody String taskId);
+
+
+
+}

+ 6 - 0
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodePurchaseApplyConstant.java

@@ -27,6 +27,12 @@ public class ServiceCodePurchaseApplyConstant {
      */
     public static final String LIST_PURCHASE_APPLY = "purchaseApply.listPurchaseApplys";
 
+    /**
+     * 查询  流程图
+     */
+    public static final String LIST_WORKFLOW_IMAGE = "purchaseApply.listWorkflowImage";
+
+
     //审核
     public static final String AUDIT_PURCHASE_APPLY = "purchaseApply.auditApplyOrder";