From 875e26a11e28c1cefc1667bc25985dbb049f91f3 Mon Sep 17 00:00:00 2001
From: zhangxp <zhangxp@chicecm.com>
Date: 星期五, 16 六月 2023 18:34:01 +0800
Subject: [PATCH] 修复
---
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java | 63 ++++++++++++++++++++++++++++++-
1 files changed, 60 insertions(+), 3 deletions(-)
diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
index 3de61e5..a11071e 100644
--- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
@@ -16,6 +16,8 @@
*/
package com.vci.ubcs.flow.engine.service.impl;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -34,9 +36,11 @@
import com.vci.ubcs.system.user.entity.User;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.flowable.bpmn.converter.BpmnXMLConverter;
-import org.flowable.bpmn.model.BpmnModel;
+import org.flowable.bpmn.model.*;
import org.flowable.bpmn.model.Process;
import org.flowable.common.engine.impl.util.IoUtil;
import org.flowable.common.engine.impl.util.io.StringStreamSource;
@@ -47,13 +51,15 @@
import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl;
import org.flowable.engine.repository.Deployment;
+import org.flowable.engine.repository.DeploymentQuery;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.repository.ProcessDefinitionQuery;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.runtime.ProcessInstanceQuery;
import org.flowable.engine.task.Comment;
import org.flowable.image.ProcessDiagramGenerator;
-import com.vci.ubcs.core.log.exception.ServiceException;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.FileUtil;
@@ -61,11 +67,17 @@
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
+import org.w3c.dom.*;
+import org.xml.sax.InputSource;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.StringReader;
import java.util.*;
/**
@@ -90,6 +102,12 @@
private final HistoryService historyService;
private final TaskService taskService;
private final ProcessEngine processEngine;
+
+ /**
+ * 鏁版嵁鎿嶄綔瀵硅薄
+ */
+ @Resource
+ private FlowMapper flowMapper;
@Override
public IPage<FlowModel> selectFlowPage(IPage<FlowModel> page, FlowModel flowModel) {
@@ -296,6 +314,7 @@
@Override
public boolean deployModel(String modelId, String category, List<String> tenantIdList) {
+
FlowModel model = this.getById(modelId);
if (model == null) {
throw new ServiceException("鏈壘鍒版ā鍨� id: " + modelId);
@@ -346,6 +365,12 @@
@Override
public FlowModel submitModel(FlowModel model) {
+
+ //楠岃瘉閲嶅key
+ if(StringUtils.isEmpty(model.getId())&&getFlowModelByKey(model.getModelKey())!=null){
+ throw new ServiceException("you cannot definition repetition 娴佺▼key!");
+ }
+
FlowModel flowModel = new FlowModel();
flowModel.setId(model.getId());
flowModel.setVersion(Func.toInt(model.getVersion(), 0) + 1);
@@ -467,6 +492,33 @@
}
/**
+ * 鏍规嵁娴佺▼妯″瀷key鑾峰彇XML涓妭鐐归厤缃殑澶勭悊浜�
+ *
+ * @param key
+ * @return
+ */
+ @Override
+ public List<Map<String,String>> getNodeByFlowableKey(String key){
+ String processDefinitionId = repositoryService.createProcessDefinitionQuery().latestVersion().processDefinitionKey(key).singleResult().getId();
+ BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
+ Process process = bpmnModel.getProcesses().get(0);//鍙湁涓�涓�
+
+ List<Map<String,String>> ll = new ArrayList<>();
+ if (CollectionUtils.isNotEmpty(process.getFlowElements())) {
+ for (FlowElement flowElement : process.getFlowElements()) {
+ if (flowElement instanceof UserTask) {
+ Map<String,String> mi = new HashMap<>();
+ mi.put("taskId",flowElement.getId());
+ mi.put("taskName",flowElement.getName());
+ ll.add(mi);
+ }
+ }
+ }
+
+ return ll;
+ }
+
+ /**
* 鏄惁宸插畬缁�
*
* @param processInstanceId 娴佺▼瀹炰緥id
@@ -476,7 +528,6 @@
return historyService.createHistoricProcessInstanceQuery().finished()
.processInstanceId(processInstanceId).count() > 0;
}
-
/**
* xml杞琤pmn json
@@ -556,4 +607,10 @@
}
}
+ public FlowModel getFlowModelByKey(String key){
+ Map kv = new HashMap();
+ kv.put("model_key",key);
+ return baseMapper.selectOne(Condition.getQueryWrapper(kv, FlowModel.class));
+ }
+
}
--
Gitblit v1.9.3