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 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