From dc1ab4cfe8bafb939084c647d27c228b4787b88a Mon Sep 17 00:00:00 2001
From: xxssyyyyssxx <xxssyyyyssxx@126.com>
Date: Tue, 9 Nov 2021 19:24:42 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=B0=8F=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/cn/palmte/work/pojo/ActModel.java    |  9 ++++++
 .../palmte/work/service/ActModelService.java  |  2 +-
 .../work/service/ActProcDefService.java       | 29 +++++--------------
 .../work/service/ActProcInsService.java       |  6 ++--
 src/main/resources/application.properties     |  2 +-
 5 files changed, 22 insertions(+), 26 deletions(-)

diff --git a/src/main/java/cn/palmte/work/pojo/ActModel.java b/src/main/java/cn/palmte/work/pojo/ActModel.java
index 3fdfe5e..5cfdebb 100644
--- a/src/main/java/cn/palmte/work/pojo/ActModel.java
+++ b/src/main/java/cn/palmte/work/pojo/ActModel.java
@@ -8,10 +8,19 @@ import java.util.Date;
 public class ActModel {
     private int id;
 
+    /**
+     * 模型(流程)名称
+     */
     private String modelName;
 
+    /**
+     * 版本号
+     */
     private int rev;
 
+    /**
+     * 流程定义key
+     */
     private String procDefKey;
 
     private Date createdTime;
diff --git a/src/main/java/cn/palmte/work/service/ActModelService.java b/src/main/java/cn/palmte/work/service/ActModelService.java
index b451bcd..611dec8 100644
--- a/src/main/java/cn/palmte/work/service/ActModelService.java
+++ b/src/main/java/cn/palmte/work/service/ActModelService.java
@@ -50,7 +50,7 @@ public class ActModelService {
         String select = "a.ID_ as id,a.REV_ as rev,a.NAME_ as modelName,a.KEY_ as procDefKey,a.CREATE_TIME_ as createdTime,a.LAST_UPDATE_TIME_ as lastUpdatedTime";
         QueryHelper queryHelper = new QueryHelper(select, " act_re_model a");
         String name = searchInfo.get("name");
-        queryHelper.addCondition(StringUtils.isNotEmpty(name), "a.NAME_=? or a.KEY_=?", name, name);
+        queryHelper.addCondition(StringUtils.isNotEmpty(name), "(a.NAME_=? or a.KEY_=?)", name, name);
         queryHelper.addOrderProperty("a.LAST_UPDATE_TIME_", false);
         return pagination.paginate(queryHelper.getSql(), ActModel.class, pageNumber, pageSize);
     }
diff --git a/src/main/java/cn/palmte/work/service/ActProcDefService.java b/src/main/java/cn/palmte/work/service/ActProcDefService.java
index 3150618..7d232ca 100644
--- a/src/main/java/cn/palmte/work/service/ActProcDefService.java
+++ b/src/main/java/cn/palmte/work/service/ActProcDefService.java
@@ -2,7 +2,7 @@ package cn.palmte.work.service;
 
 import cn.palmte.work.model.ActTaskDefRepository;
 import cn.palmte.work.pojo.ActProcDef;
-import org.activiti.bpmn.model.*;
+import org.activiti.bpmn.model.BpmnModel;
 import org.activiti.engine.ProcessEngine;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.repository.ProcessDefinition;
@@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
 import top.jfunc.common.db.QueryHelper;
 import top.jfunc.common.db.bean.Page;
 import top.jfunc.common.db.utils.Pagination;
+import top.jfunc.common.utils.IoUtil;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -47,7 +48,7 @@ public class ActProcDefService {
                 " p.DGRM_RESOURCE_NAME_ as dgrmResourceName,p.SUSPENSION_STATE_ as suspensionState, d.DEPLOY_TIME_ as deployTime ";
         QueryHelper queryHelper = new QueryHelper(select, " act_re_procdef p LEFT JOIN act_re_deployment d on p.DEPLOYMENT_ID_ = d.ID_");
         String name = searchInfo.get("name");
-        queryHelper.addCondition(StringUtils.isNotEmpty(name), "p.NAME_=? or p.KEY_=?", name, name);
+        queryHelper.addCondition(StringUtils.isNotEmpty(name), "(p.NAME_=? or p.KEY_=?)", name, name);
         queryHelper.addOrderProperty("p.KEY_,p.VERSION_", false);
         return pagination.paginate(queryHelper.getSql(), ActProcDef.class, pageNumber, pageSize);
     }
@@ -91,26 +92,10 @@ public class ActProcDefService {
      */
     public void createProcDefPng(HttpServletResponse response, String deploymentId) throws IOException {
         ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploymentId).singleResult();
-        BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId()); // 获取bpmnModel
-        InputStream inputStream = generateDiagramInputStream(bpmnModel, new ArrayList<>(), new ArrayList<>());
-        responsePng(response, inputStream);
-    }
-
-    public void responsePng(HttpServletResponse response, InputStream inputStream) throws IOException {
-        InputStream pic = null;
-        try {
-            pic = inputStream;
-            byte[] b = new byte[1024];
-            int len = -1;
-            while ((len = pic.read(b, 0, 1024)) != -1) {
-                response.getOutputStream().write(b, 0, len);
-            }
-        } catch (Exception e) {
-            logger.error("an exception happens in try catch statement", e);
-        } finally {
-            if (pic != null) {
-                pic.close();
-            }
+        // 获取bpmnModel
+        BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
+        try (InputStream inputStream = generateDiagramInputStream(bpmnModel, new ArrayList<>(), new ArrayList<>())){
+            IoUtil.copy(inputStream, response.getOutputStream());
         }
     }
 
diff --git a/src/main/java/cn/palmte/work/service/ActProcInsService.java b/src/main/java/cn/palmte/work/service/ActProcInsService.java
index 4dc0222..0b02e0f 100644
--- a/src/main/java/cn/palmte/work/service/ActProcInsService.java
+++ b/src/main/java/cn/palmte/work/service/ActProcInsService.java
@@ -27,6 +27,7 @@ import top.jfunc.common.db.QueryHelper;
 import top.jfunc.common.db.bean.Page;
 import top.jfunc.common.db.bean.Record;
 import top.jfunc.common.db.utils.Pagination;
+import top.jfunc.common.utils.IoUtil;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -183,8 +184,9 @@ public class ActProcInsService {
             }
             BpmnModel bpmnModel = repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId()); // 获取bpmnModel
             List<String> flowIds = this.getExecutedFlows(bpmnModel, newHisTaskInstanceList);                        // 获取流程已发生流转的线ID集合
-            InputStream inputStream = actProcDefService.generateDiagramInputStream(bpmnModel, executedActivityIdList, flowIds);
-            actProcDefService.responsePng(response, inputStream);
+            try (InputStream inputStream = actProcDefService.generateDiagramInputStream(bpmnModel, executedActivityIdList, flowIds)){
+                IoUtil.copy(inputStream, response.getOutputStream());
+            }
 
         } catch (Exception e) {
             logger.error("an exception happens in try catch statement", e);
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index b89f14a..7b938b9 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -2,7 +2,7 @@ spring.application.name=fourcal
 server.port=8282
 server.context-path=/fourcal
 app.version=0.0.1
-spring.profiles.active=local
+spring.profiles.active=dev
 
 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver