From 93845180efe4380609a2deb4dc22dd0523dbcd2a Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期一, 19 六月 2023 20:58:30 +0800
Subject: [PATCH] 代码整合

---
 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java |   66 ++++++++++++++++++++++++++++++++-
 1 files changed, 64 insertions(+), 2 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 7eb8c9b..297d6ca 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,6 +51,7 @@
 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;
@@ -54,6 +59,7 @@
 import org.flowable.engine.task.Comment;
 import org.flowable.image.ProcessDiagramGenerator;
 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.*;
 
 /**
@@ -81,6 +93,8 @@
 	private static final String USR_TASK = "userTask";
 	private static final String IMAGE_NAME = "image";
 	private static final String XML_NAME = "xml";
+	private static final String TASKID = "taskId";
+	private static final String TASKNAME = "taskName";
 	private static final Integer INT_1024 = 1024;
 	private static final BpmnJsonConverter BPMN_JSON_CONVERTER = new BpmnJsonConverter();
 	private static final BpmnXMLConverter BPMN_XML_CONVERTER = new BpmnXMLConverter();
@@ -90,6 +104,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 +316,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 +367,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 +494,36 @@
 	}
 
 	/**
+	 * 鏍规嵁娴佺▼妯″瀷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;
+	}
+
+	@Override
+	public String getTaskIdString(){
+		return TASKID;
+	}
+	/**
 	 * 鏄惁宸插畬缁�
 	 *
 	 * @param processInstanceId 娴佺▼瀹炰緥id
@@ -476,7 +533,6 @@
 		return historyService.createHistoricProcessInstanceQuery().finished()
 			.processInstanceId(processInstanceId).count() > 0;
 	}
-
 
 	/**
 	 * xml杞琤pmn json
@@ -556,4 +612,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