浏览代码

Merge branch 'master' of http://62.234.61.92:3000/wjm/mec-cloud_IntelligentManufacturing_CLIENT

lph 1 年之前
父节点
当前提交
04f788617c

+ 36 - 3
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/runbpm/TriggerExceptionVO.java

@@ -5,15 +5,32 @@ package com.zkqy.execution.produce.dispersed.entity.runbpm;
  */
 public class TriggerExceptionVO {
 
-    /** 执行流程任务编号 */
+    /**
+     * 执行流程任务编号
+     */
     private String taskProcessKey;
 
-    /** 任务节点编号 */
+    /**
+     * 任务节点编号
+     */
     private String taskNodeKey;
 
-    /** 节点脚本 */
+    /**
+     * 当前抛出异常节点类型
+     */
+    private String taskNodeType;
+
+    /**
+     * 异常抛出异常参数,当前节点的下一个执行节点key
+     */
+    private String taskNextNodeKey;
+
+    /**
+     * 节点脚本
+     */
     private SysBpmNodeScriptVO sysBpmNodeScriptVO;
 
+
     public String getTaskProcessKey() {
         return taskProcessKey;
     }
@@ -37,4 +54,20 @@ public class TriggerExceptionVO {
     public void setSysBpmNodeScriptVO(SysBpmNodeScriptVO sysBpmNodeScriptVO) {
         this.sysBpmNodeScriptVO = sysBpmNodeScriptVO;
     }
+
+    public String getTaskNodeType() {
+        return taskNodeType;
+    }
+
+    public void setTaskNodeType(String taskNodeType) {
+        this.taskNodeType = taskNodeType;
+    }
+
+    public String getTaskNextNodeKey() {
+        return taskNextNodeKey;
+    }
+
+    public void setTaskNextNodeKey(String taskNextNodeKey) {
+        this.taskNextNodeKey = taskNextNodeKey;
+    }
 }

+ 26 - 15
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/mapper/BpmExecuteNodeFormMapper.java

@@ -9,15 +9,23 @@ import java.util.Map;
 
 /**
  * 执行节点单Mapper接口
- * 
+ *
  * @author zkqy
  * @date 2023-12-07
  */
-public interface BpmExecuteNodeFormMapper 
-{
+public interface BpmExecuteNodeFormMapper {
+    /**
+     * @param taskProcessKey 当前流程Key
+     * @param taskNodeKey
+     * @param taskScriptKeys 需要得到的信息的异常脚本节点Key
+     * @return
+     */
+
+    List<BpmExecuteNodeForm> selectByTaskScriptKeys(@Param("taskProcessKey") String taskProcessKey, @Param("taskScriptKeys") List<String> taskScriptKeys);
+
     /**
      * 查询执行节点单
-     * 
+     *
      * @param id 执行节点单主键
      * @return 执行节点单
      */
@@ -25,7 +33,7 @@ public interface BpmExecuteNodeFormMapper
 
     /**
      * 查询执行节点单列表
-     * 
+     *
      * @param bpmExecuteNodeForm 执行节点单
      * @return 执行节点单集合
      */
@@ -33,7 +41,7 @@ public interface BpmExecuteNodeFormMapper
 
     /**
      * 新增执行节点单
-     * 
+     *
      * @param bpmExecuteNodeForm 执行节点单
      * @return 结果
      */
@@ -41,7 +49,7 @@ public interface BpmExecuteNodeFormMapper
 
     /**
      * 修改执行节点单
-     * 
+     *
      * @param bpmExecuteNodeForm 执行节点单
      * @return 结果
      */
@@ -49,7 +57,7 @@ public interface BpmExecuteNodeFormMapper
 
     /**
      * 删除执行节点单
-     * 
+     *
      * @param id 执行节点单主键
      * @return 结果
      */
@@ -57,7 +65,7 @@ public interface BpmExecuteNodeFormMapper
 
     /**
      * 批量删除执行节点单
-     * 
+     *
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
@@ -80,35 +88,38 @@ public interface BpmExecuteNodeFormMapper
     BpmExecuteNodeForm selectBpmExecuteNodeFormInfo(BpmExecuteNodeForm bpmExecuteNodeForm);
 
     /**
-     *  根据 taskProcessKey和 taskNodeKey查询当前节点执行的表单模版信息
+     * 根据 taskProcessKey和 taskNodeKey查询当前节点执行的表单模版信息
      */
-    public BpmExecuteNodeForm selectBpmExecuteNodeFormByTpKAndTnkAndTsk(@Param("taskProcessKey") String taskProcessKey, @Param("taskNodeKey") String taskNodeKey,  @Param("taskScriptKey") String taskScriptKey);
+    public BpmExecuteNodeForm selectBpmExecuteNodeFormByTpKAndTnkAndTsk(@Param("taskProcessKey") String taskProcessKey, @Param("taskNodeKey") String taskNodeKey, @Param("taskScriptKey") String taskScriptKey);
 
     /**
      * 根据tableSql查询这个sql对应的数据
+     *
      * @param tableSql
      * @return
      */
-    public Map<String,String> tableSql(String tableSql);
+    public Map<String, String> tableSql(String tableSql);
 
     /**
      * 根据tableSql查询这个sql对应的数据(目前是查询表单下拉框数据在用)
+     *
      * @param tableSql
      * @return
      */
-    public List<Map<String,Object>> executeSql(String tableSql);
+    public List<Map<String, Object>> executeSql(String tableSql);
 
     /**
      * 根据sqlKey查询tableSql数据
+     *
      * @param sqlKey
      * @return
      */
-    public Map<String,String> getTableSqlBySqlKey(String sqlKey);
+    public Map<String, String> getTableSqlBySqlKey(String sqlKey);
 
     /**
      * 根据sqlKey查询对应表单
      */
-    public Map<String,String> getDfFormInfo();
+    public Map<String, String> getDfFormInfo();
 
 
 }

+ 22 - 5
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/BpmExecuteNodeMiddleServiceImpl.java

@@ -1,11 +1,12 @@
 package com.zkqy.execution.produce.dispersed.service.impl;
 
 
-
 import com.zkqy.common.utils.StringUtils;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeForm;
 import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeMiddle;
 import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import com.zkqy.execution.produce.dispersed.entity.runbpm.SysBpmNodeScriptVO;
+import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeFormMapper;
 import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeMiddleMapper;
 import com.zkqy.execution.produce.dispersed.service.IBpmExecuteNodeMiddleService;
 import com.zkqy.execution.produce.utils.Sending;
@@ -31,6 +32,9 @@ public class BpmExecuteNodeMiddleServiceImpl implements IBpmExecuteNodeMiddleSer
     private BpmExecuteNodeMiddleMapper bpmExecuteNodeMiddleMapper;
 
 
+    @Autowired
+    private BpmExecuteNodeFormMapper bpmExecuteNodeFormMapper;
+
     @Autowired
     private Sending sending;
 
@@ -107,10 +111,15 @@ public class BpmExecuteNodeMiddleServiceImpl implements IBpmExecuteNodeMiddleSer
     public List<CommonEntity> addExceptionScript(List<CommonEntity> commonEntityList) throws Exception {
         //循环得到所有异常脚本key
         Set<String> scriptKeys = new LinkedHashSet<>();
+        List<BpmExecuteNodeForm> bpmExecuteNodeFormList = new ArrayList<>();
         commonEntityList.forEach(m -> {
-            scriptKeys.addAll(Arrays.asList(m.getResultMap().get("benmTaskArtificialScriptKey").toString().split(",")));
+            List<String> keys = Arrays.asList(m.getResultMap().get("benmTaskArtificialScriptKey").toString().split(","));
+            scriptKeys.addAll(keys);
+            if (keys.size() > 0) {
+                bpmExecuteNodeFormList.addAll(bpmExecuteNodeFormMapper.selectByTaskScriptKeys(m.getResultMap().get("bepTaskKey").toString(), keys));
+            }
         });
-        if(scriptKeys.size() == 0){
+        if (scriptKeys.size() == 0) {
             return commonEntityList;
         }
         //根据异常脚本key得到所有异常脚本信息
@@ -122,6 +131,8 @@ public class BpmExecuteNodeMiddleServiceImpl implements IBpmExecuteNodeMiddleSer
         //}
         //Set集合转换成List集合
         List<String> scriptKeysCollect = scriptKeys.stream().collect(Collectors.toList());
+
+
         List<SysBpmNodeScript> sysBpmNodeScripts = sending.sendGetScriptInfo(scriptKeysCollect);
         //if (responseEntity.getStatusCode().is2xxSuccessful()) {
         if (StringUtils.isNotEmpty(sysBpmNodeScripts)) {
@@ -134,9 +145,15 @@ public class BpmExecuteNodeMiddleServiceImpl implements IBpmExecuteNodeMiddleSer
                 //sysBpmNodeScriptVOList.forEach(s -> {
                 sysBpmNodeScripts.forEach(item -> {
                     //SysBpmNodeScriptVO sysBpmNodeScriptVO= JSONObject.parseObject(JSON.toJSONString(s),SysBpmNodeScriptVO.class);
-                    SysBpmNodeScriptVO sysBpmNodeScriptVO=new SysBpmNodeScriptVO();
-                    BeanUtils.copyProperties(item,sysBpmNodeScriptVO);
+                    SysBpmNodeScriptVO sysBpmNodeScriptVO = new SysBpmNodeScriptVO();
+                    BeanUtils.copyProperties(item, sysBpmNodeScriptVO);
                     if (scriptKeyList.contains(sysBpmNodeScriptVO.getScriptKey())) {
+
+                        String name = bpmExecuteNodeFormList.stream().filter(bpm -> bpm.getTaskProcessKey().equals(m.getResultMap().get("bepTaskKey")) && bpm.getTaskScriptKey().equals(sysBpmNodeScriptVO.getScriptKey())).findFirst().get().getTaskNodeName();
+
+                        sysBpmNodeScriptVO.setScriptName(name);
+
+
                         exceptionScriptList.add(sysBpmNodeScriptVO);
                     }
                 });

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

@@ -5,16 +5,10 @@ import com.zkqy.common.constant.BpmNodeTypeConstants;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.bpm.XmlDataParserUtils;
 import com.zkqy.common.utils.uuid.IdUtils;
-import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNode;
-import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeForm;
-import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeMiddle;
-import com.zkqy.execution.produce.dispersed.entity.BpmExecuteProcess;
+import com.zkqy.execution.produce.dispersed.entity.*;
 import com.zkqy.execution.produce.dispersed.entity.runbpm.SysBpmNodeScriptVO;
 import com.zkqy.execution.produce.dispersed.entity.runbpm.TriggerExceptionVO;
-import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeFormMapper;
-import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeMapper;
-import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeMiddleMapper;
-import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteProcessMapper;
+import com.zkqy.execution.produce.dispersed.mapper.*;
 import com.zkqy.execution.produce.dispersed.service.IBpmExecuteNodeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -37,6 +31,9 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
     @Autowired
     private BpmExecuteNodeMapper bpmExecuteNodeMapper;
 
+    @Autowired
+    private BpmExecuteNodeLogMapper bpmExecuteNodeLogMapper;
+
     @Resource
     private BpmExecuteProcessMapper bpmExecuteProcessMapper;
 
@@ -125,30 +122,50 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
         String newUserTaskTagId = "Activity_" + IdUtils.fastUUID();
         //select bpm_execute_process
         BpmExecuteProcess bpmExecuteProcess = bpmExecuteProcessMapper.selectBpmExecuteProcessByTaskKey(vo.getTaskProcessKey());
-        //sys_bpm_node_script info
+
+        //得到当前节点信息
+        BpmExecuteNode bpmExecuteNode = bpmExecuteNodeMapper.queryBpmExecuteNodeBytaskNodeKey(vo.getTaskProcessKey(), vo.getTaskNodeKey());
+
+
+        //sys_bpm_node_script 得到异常脚本info
         SysBpmNodeScriptVO sysBpmNodeScriptVO = vo.getSysBpmNodeScriptVO();
 
-        //select bpm_execute_node_form
+        //select bpm_execute_node_form  查询节点表单(插入的异常节点所需的表单)
         BpmExecuteNodeForm bpmExecuteNodeForm = new BpmExecuteNodeForm();
         bpmExecuteNodeForm.setTaskProcessKey(vo.getTaskProcessKey());
-        bpmExecuteNodeForm.setTaskNodeKey(vo.getTaskNodeKey());
+        String afterAnalysis;
+        //修改当前执行流程xml内容,在当前节点前增加异常节点,调整xml线指向
+        if (vo.getTaskNodeType().equals("exceptionTask")) {  // 异常节点抛出异常节点,在当前异常节点后插入新的异常节点
+            afterAnalysis = XmlDataParserUtils.addUserTaskTag(bpmExecuteProcess.getTaskProcessXmlContent(), newUserTaskTagId, sysBpmNodeScriptVO.getScriptName(), vo.getTaskNextNodeKey());
+
+            bpmExecuteNodeForm.setTaskNodeKey(vo.getTaskNextNodeKey());  // 追溯到正常节点抛出异常的节点key
+            // ?是否需要记录节点日志——》如不做记录管道展示不会展示没有执行过的异常!
+            if (true) {
+                // 新增节点日志记录
+                bpmExecuteNodeLogMapper.insertBpmExecuteNodeLog(new BpmExecuteNodeLog(bpmExecuteNode));
+            }
+
+        } else {
+            afterAnalysis = XmlDataParserUtils.addUserTaskTag(bpmExecuteProcess.getTaskProcessXmlContent(), newUserTaskTagId, sysBpmNodeScriptVO.getScriptName(), vo.getTaskNodeKey());
+            bpmExecuteNodeForm.setTaskNodeKey(vo.getTaskNodeKey());
+        }
         bpmExecuteNodeForm.setTaskScriptKey(vo.getSysBpmNodeScriptVO().getScriptKey());
         BpmExecuteNodeForm bpmExecuteNodeForm1 = bpmExecuteNodeFormMapper.selectBpmExecuteNodeFormInfo(bpmExecuteNodeForm);
-        //insert bpm_execute_node_form
+        //insert bpm_execute_node_form  节点运行表单
         bpmExecuteNodeForm1.setTaskNodeKey(newUserTaskTagId);
         bpmExecuteNodeFormMapper.insertBpmExecuteNodeForm(bpmExecuteNodeForm1);
-
-        //修改当前执行流程xml内容,当前节点下一节点信息
-        String afterAnalysis = XmlDataParserUtils.addUserTaskTag(bpmExecuteProcess.getTaskProcessXmlContent(), newUserTaskTagId, sysBpmNodeScriptVO.getScriptName(), vo.getTaskNodeKey());
         bpmExecuteProcess.setTaskProcessXmlContent(afterAnalysis);
-        bpmExecuteProcess.setTaskNodeKey(newUserTaskTagId);
-        bpmExecuteProcess.setTaskNodeNextKey(bpmExecuteProcess.getTaskNodeKey());
+
+//        bpmExecuteProcess.setTaskNodeKey(newUserTaskTagId);
+//        bpmExecuteProcess.setTaskNodeNextKey(bpmExecuteProcess.getTaskNodeKey());
+        bpmExecuteProcess.setTaskNodeNextKey(newUserTaskTagId);
+
         bpmExecuteProcessMapper.updateBpmExecuteProcess(bpmExecuteProcess);
+
         //生成虚拟角色编码
         String taskNodeRolePermission = IdUtils.fastSimpleUUID();
 
-        //得到当前节点信息,添加异常节点信息
-        BpmExecuteNode bpmExecuteNode = bpmExecuteNodeMapper.queryBpmExecuteNodeBytaskNodeKey(vo.getTaskProcessKey(), vo.getTaskNodeKey());
+        //添加异常节点信息
         bpmExecuteNode.setId(null);
         bpmExecuteNode.setTaskNodeKey(newUserTaskTagId);
         bpmExecuteNode.setTaskNodeName(bpmExecuteNodeForm1.getTaskNodeName());
@@ -164,7 +181,6 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
         bpmExecuteNode.setTaskNodeRolePermission(taskNodeRolePermission);
         bpmExecuteNodeMapper.insertBpmExecuteNode(bpmExecuteNode);
 
-
         //得到当前节点用户关联表信息,添加异常节点用户关联表信息
         BpmExecuteNodeMiddle bpmExecuteNodeMiddle = bpmExecuteNodeMiddleMapper.queryBpmExecuteNodeMiddleByTaskNodeKey(vo.getTaskProcessKey(), vo.getTaskNodeKey());
         List<String> list = Arrays.asList(bpmExecuteNodeMiddle.getTaskArtificialScriptKey().split(","));
@@ -172,7 +188,7 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
         bpmExecuteNodeMiddle.setTaskNodeKey(newUserTaskTagId);
         bpmExecuteNodeMiddle.setTaskAutomaticScriptTriggerType(sysBpmNodeScriptVO.getScriptKey());
         bpmExecuteNodeMiddle.setTaskVirtuallyRole(taskNodeRolePermission);
-        bpmExecuteNodeMiddle.setTaskArtificialScriptKey(String.join(",",list.stream().filter(f -> !f.equals(vo.getSysBpmNodeScriptVO().getScriptKey())).collect(Collectors.toList())));
+        bpmExecuteNodeMiddle.setTaskArtificialScriptKey(String.join(",", list.stream().filter(f -> !f.equals(vo.getSysBpmNodeScriptVO().getScriptKey())).collect(Collectors.toList())));
         return bpmExecuteNodeMiddleMapper.insertBpmExecuteNodeMiddle(bpmExecuteNodeMiddle);
     }
 }

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

@@ -315,18 +315,6 @@ public class BpmExecuteProcessServiceImpl implements IBpmExecuteProcessService {
 
 
 }
-/*
-这样我补充一个刚才的需求:
-现在他是复制所有模块下的 jar 包,
-1.请你帮我设置一个开关功能:( true 就复制所有 jar 包,false 就只复制zkqy-admin这个模块下的 jar 包,所有项目都一样)。
-2.并且就像刚才说的,在我执行这个 工具类的时候,
-    他先去替换所有项目的配置文件中的信息(这个信息只是更改数据库的 ip 以及账号密码,还有 redis 的地址等)
-3.进行打包操作(所有的项目都是 springboot)。
-4.在所有项目打包完成后复制所有的 jar 到指定目录(就像刚才的这个工具类一样的逻辑,我感觉这个工具类的逻辑可以不变)。
-注意替换配置文件的信息的操作 例如:127.0.0.1替换成 192.168.110.59这样的操作,账号密码同理,root 替换 root 密码123456替换 qwe123等
-
-其实就是替换字符这样的一个操作
- */
 
 
 

+ 16 - 0
zkqy-process-execution/src/main/resources/mapper/bpm/dispersed/BpmExecuteNodeFormMapper.xml

@@ -27,6 +27,22 @@
         from {DBNAME}.bpm_execute_node_form
     </sql>
 
+    <select id="selectByTaskScriptKeys"
+            parameterType="com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeForm"
+            resultMap="BpmExecuteNodeFormResult">
+        <include refid="selectBpmExecuteNodeFormVo"/>
+        <where>
+            task_process_key = #{taskProcessKey}
+            <if test="taskScriptKeys != null  and taskScriptKeys.size() > 0">
+                and task_script_key in
+                <foreach item="taskScriptKey" collection="taskScriptKeys" open="(" separator="," close=")">
+                    #{taskScriptKey}
+                </foreach>
+            </if>
+        </where>
+
+    </select>
+
     <select id="selectBpmExecuteNodeFormList"
             parameterType="com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeForm"
             resultMap="BpmExecuteNodeFormResult">

+ 3 - 0
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysLogininforServiceImpl.java

@@ -41,6 +41,9 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
         Long tenantId;
         try {
             tenantId = SecurityUtils.getTenantId();
+            if (tenantId == null) {
+                tenantId = 0L;
+            }
         } catch (Exception exception) {
             tenantId = 0L;  // 0L 表示当前是admin(租户信息表id自增「自增id不会从0开始」)
         }