Эх сурвалжийг харах

Merge remote-tracking branch 'origin/main' into main

侯茂昌 1 жил өмнө
parent
commit
362e750788

+ 48 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/bpm/XmlDataParserUtils.java

@@ -9,7 +9,9 @@ import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import java.io.StringWriter;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -155,4 +157,50 @@ public class XmlDataParserUtils {
         return nextTaskNodeKey;
     }
 
+    /**
+     * 按顺序获取流程节点
+     * @param xmlData xml内容
+     * @return
+     */
+    public static Map<String,Object> getAllNodeKey(String xmlData){
+        Map<String,Object> resultMap = new HashMap<>();
+        //将xml文件内容转成Document对象
+        Document document= XmlUtil.parseXml(xmlData);
+        //获得XML文档根节点
+        Element elementG=XmlUtil.getRootElement(document);
+        //获取bpmn:process节点
+        Element bpmnProcessEvent = XmlUtil.getElement(elementG,"bpmn:process");
+        //获取所有序列流(顺序)
+        NodeList elementsByTagName = elementG.getElementsByTagName("bpmn:sequenceFlow");
+        //获取开始节点并得到开始节点ID
+        Element bpmnStartEvent=XmlUtil.getElement(bpmnProcessEvent,"bpmn:startEvent");
+        String startNode = bpmnStartEvent.getAttribute("id");
+        Map<String,Integer> map = new HashMap<>();
+        map.put(startNode,0);
+        List<String> list = new ArrayList<>();
+        list.add(startNode);
+        resultMap.put("nodeList",list);
+        resultMap.put("nodeMap",recursiveParse(elementsByTagName, startNode, map, list));
+        return resultMap;
+    }
+
+    private static Map<String,Integer> recursiveParse(NodeList nodeList, String currentId ,Map<String,Integer> map, List<String> list) {
+        for (int i = 0; i < nodeList.getLength(); i++) {
+            Node node = nodeList.item(i);
+            if (node.getNodeType() == Node.ELEMENT_NODE) {
+                Element element = (Element) node;
+                String sourceRef = element.getAttribute("sourceRef");
+                String targetRef = element.getAttribute("targetRef");
+                if (sourceRef.equals(currentId)) {
+                    map.put(targetRef, map.size()+1);
+                    list.add(targetRef);
+                    recursiveParse(nodeList, targetRef,map,list);
+                    break;
+                }
+            }
+        }
+        return map;
+    }
+
+
 }

+ 12 - 10
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/BpmExecuteNodeServiceImpl.java

@@ -127,14 +127,14 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
         SysBpmNodeScriptVO sysBpmNodeScriptVO = vo.getSysBpmNodeScriptVO();
 
         //select bpm_execute_node_form
-        BpmExecuteNodeForm bpmExecuteNodeForm = new BpmExecuteNodeForm();
-        bpmExecuteNodeForm.setTaskProcessKey(vo.getTaskProcessKey());
-        bpmExecuteNodeForm.setTaskNodeKey(vo.getTaskNodeKey());
-        bpmExecuteNodeForm.setTaskScriptKey(vo.getSysBpmNodeScriptVO().getScriptKey());
-        BpmExecuteNodeForm bpmExecuteNodeForm1 = bpmExecuteNodeFormMapper.selectBpmExecuteNodeFormInfo(bpmExecuteNodeForm);
-        //insert bpm_execute_node_form
-        bpmExecuteNodeForm1.setTaskNodeKey(newUserTaskTagId);
-        bpmExecuteNodeFormMapper.insertBpmExecuteNodeForm(bpmExecuteNodeForm1);
+//        BpmExecuteNodeForm bpmExecuteNodeForm = new BpmExecuteNodeForm();
+//        bpmExecuteNodeForm.setTaskProcessKey(vo.getTaskProcessKey());
+//        bpmExecuteNodeForm.setTaskNodeKey(vo.getTaskNodeKey());
+//        bpmExecuteNodeForm.setTaskScriptKey(vo.getSysBpmNodeScriptVO().getScriptKey());
+//        BpmExecuteNodeForm bpmExecuteNodeForm1 = bpmExecuteNodeFormMapper.selectBpmExecuteNodeFormInfo(bpmExecuteNodeForm);
+//        //insert bpm_execute_node_form
+//        bpmExecuteNodeForm1.setTaskNodeKey(newUserTaskTagId);
+//        bpmExecuteNodeFormMapper.insertBpmExecuteNodeForm(bpmExecuteNodeForm1);
 
         //修改当前执行流程xml内容,当前节点下一节点信息
         String afterAnalysis = XmlDataParserUtils.addUserTaskTag(bpmExecuteProcess.getTaskProcessXmlContent(), newUserTaskTagId, sysBpmNodeScriptVO.getScriptName(), vo.getTaskNodeKey());
@@ -155,8 +155,10 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
         bpmExecuteNode.setTaskNodeState("0");
         bpmExecuteNode.setTaskNodeNumber("");
         bpmExecuteNode.setTaskNodeWeight("");
-        bpmExecuteNode.setTaskNodeFormKey(bpmExecuteNodeForm1.getTaskNodeFormKey());
-        bpmExecuteNode.setTaskNodeFormType(bpmExecuteNodeForm1.getTaskNodeFromType());
+//        bpmExecuteNode.setTaskNodeFormKey(bpmExecuteNodeForm1.getTaskNodeFormKey());
+//        bpmExecuteNode.setTaskNodeFormType(bpmExecuteNodeForm1.getTaskNodeFromType());
+        bpmExecuteNode.setTaskNodeExecuteType("");
+        bpmExecuteNode.setTaskNodeFormKey("");
         bpmExecuteNode.setTaskNodeRolePermission(taskNodeRolePermission);
         bpmExecuteNodeMapper.insertBpmExecuteNode(bpmExecuteNode);
 

+ 7 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/CommonMapper.java

@@ -82,4 +82,11 @@ public interface CommonMapper {
      */
     void executeSql(String sql);
 
+    /**
+     * 查询所有数据表
+     * @param databaseName 数据库
+     * @return
+     */
+    List<String> selectTableName(String databaseName);
+
 }

+ 5 - 0
zkqy-system/src/main/java/com/zkqy/system/service/ICommonService.java

@@ -60,4 +60,9 @@ public interface ICommonService {
      */
     void executeSql(String sql);
 
+    /**
+     * 查询业务库所有数据表
+     */
+    List<String> selectTableName(String databaseName);
+
 }

+ 20 - 26
zkqy-system/src/main/java/com/zkqy/system/service/impl/BpmProcessConfigurationServiceImpl.java

@@ -113,24 +113,21 @@ public class BpmProcessConfigurationServiceImpl implements IBpmProcessConfigurat
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int insertBpmProcessNodeConfig(NodeVo nodeVo) {
-        // 下发获取当前所有数据表
-        ResponseEntity<AjaxResult> responseEntity = sending.sendQueryTemplateBaseTable();
-        if(responseEntity.getStatusCodeValue() != 200){
-            return 0;
-        }
-        AjaxResult ajaxResult = responseEntity.getBody();
-        List<String> tableNameList = (List<String>) ajaxResult.get("data");
-        nodeVo.getTableNameList().stream().filter(tableName -> !tableNameList.contains(tableName)).collect(Collectors.toList());
+        //查询当前业务库所有表
+        List<String> tableNameList = commonService.selectTableName(SecurityUtils.getDatabaseName());
+        //当前流程需要创建的表
+        List<String> list = nodeVo.getTableNameList();
+        list = list.stream().filter(l -> !tableNameList.contains(l)).collect(Collectors.toList());
         String addField = ",task_key varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '任务编码'," +
                 "task_node_key varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '任务节点编码') ENGINE=InnoDB";
         // 新建流程节点所需数据表
-        for (String tableName : nodeVo.getTableNameList()){
-            String createTableSql = commonService.selectTableSql(tableName).get("create table");
-            createTableSql = createTableSql.replace("CREATE TABLE","CREATE TABLE IF NOT EXISTS {DBNAME}.");
-            if(!createTableSql.contains("task_key") && !createTableSql.contains("task_node_key")){
-                createTableSql = createTableSql.replace(") ENGINE=InnoDB",addField);
-            }
+        for (String tableName : list){
             try {
+                String createTableSql = commonService.selectTableSql(tableName).get("create table");
+                createTableSql = createTableSql.replace("CREATE TABLE","CREATE TABLE IF NOT EXISTS {DBNAME}.");
+                if(!createTableSql.contains("task_key") && !createTableSql.contains("task_node_key")){
+                    createTableSql = createTableSql.replace(") ENGINE=InnoDB",addField);
+                }
                 commonService.executeSql(createTableSql);
             }catch (Exception e){
                 return 0;
@@ -156,22 +153,19 @@ public class BpmProcessConfigurationServiceImpl implements IBpmProcessConfigurat
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int updateBpmProcessNodeConfig(NodeVo nodeVo) {
-        // 下发获取当前所有数据表
-        ResponseEntity<AjaxResult> responseEntity = sending.sendQueryTemplateBaseTable();
-        if(responseEntity.getStatusCodeValue() != 200){
-            return 0;
-        }
-        AjaxResult ajaxResult = responseEntity.getBody();
-        List<String> tableNameList = (List<String>) ajaxResult.get("data");
-        nodeVo.getTableNameList().stream().filter(tableName -> !tableNameList.contains(tableName)).collect(Collectors.toList());
+        //查询当前业务库所有表
+        List<String> tableNameList = commonService.selectTableName(SecurityUtils.getDatabaseName());
+        //当前流程需要创建的表
+        List<String> list = nodeVo.getTableNameList();
+        list = list.stream().filter(l -> !tableNameList.contains(l)).collect(Collectors.toList());
         String addField = ",task_key varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '任务编码'," +
                 "task_node_key varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '任务节点编码') ENGINE=InnoDB";
         // 新建流程节点所需数据表
-        for (String tableName : nodeVo.getTableNameList()){
-            String createTableSql = commonService.selectTableSql(tableName).get("create table");
-            createTableSql = createTableSql.replace("CREATE TABLE","CREATE TABLE IF NOT EXISTS {DBNAME}.");
-            createTableSql = createTableSql.replace(") ENGINE=InnoDB",addField);
+        for (String tableName : list){
             try {
+                String createTableSql = commonService.selectTableSql(tableName).get("create table");
+                createTableSql = createTableSql.replace("CREATE TABLE","CREATE TABLE IF NOT EXISTS {DBNAME}.");
+                createTableSql = createTableSql.replace(") ENGINE=InnoDB",addField);
                 commonService.executeSql(createTableSql);
             }catch (Exception e){
                 return 0;

+ 5 - 0
zkqy-system/src/main/java/com/zkqy/system/service/impl/CommonServiceImpl.java

@@ -255,6 +255,11 @@ public class CommonServiceImpl implements ICommonService {
         commonMapper.executeSql(sql);
     }
 
+    @Override
+    public List<String> selectTableName(String databaseName) {
+        return commonMapper.selectTableName(databaseName);
+    }
+
     public static String extractSubstring(String input, String identifier) {
         int startIndex = input.indexOf(identifier);
         if (startIndex == -1) {

+ 6 - 0
zkqy-system/src/main/resources/mapper/common/CommonMapper.xml

@@ -115,4 +115,10 @@
         ${sql}
     </select>
 
+    <select id="selectTableName" resultType="string">
+        select table_name tableName from information_schema.tables
+        where table_schema= #{databaseName}
+    </select>
+
+
 </mapper>