Browse Source

refactor:修改执行流程的调用逻辑,以及节点绑定表单的展示逻辑,调整工具类目录结构等

韩帛霖 1 year ago
parent
commit
9950a1932e
16 changed files with 449 additions and 448 deletions
  1. 4 7
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/controller/BpmRunController.java
  2. 73 0
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/entity/runbpm/BpmRunNodeFormFilterConditionsVo.java
  3. 104 0
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/entity/runbpm/BpmRunNodeFromVo.java
  4. 0 53
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/entity/runbpm/BpmRunNodePlusVo.java
  5. 99 146
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/runbpm/PreExecutionToolClass.java
  6. 24 0
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/runbpm/RunImplementationClass.java
  7. 10 0
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/IRunBPMService.java
  8. 7 1
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/BpmExecuteNodeFormServiceImpl.java
  9. 3 3
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/BpmExecuteProcessServiceImpl.java
  10. 0 122
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/Test1Bpm.java
  11. 26 2
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/hangye1/testNode/SandProductionImpl.java
  12. 10 1
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/hangye1/testNode/WarehousingImpl.java
  13. 0 44
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/testImpl.java
  14. 18 0
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/templateimpl/RunBPMImpl.java
  15. 16 12
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/utils/EchoNodeFormData.java
  16. 55 57
      ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/utils/VerifyExecutionProcess.java

+ 4 - 7
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/controller/BpmRunController.java

@@ -4,7 +4,7 @@ import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodePlusVo;
+import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodeVo;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.TriggerExceptionVO;
 import com.ruoyi.execution.produce.dispersed.runbpm.PreExecutionToolClass;
@@ -64,12 +64,9 @@ public class BpmRunController extends BaseController {
     /**
      * 共通执行节点表单模版接口
      */
-    @GetMapping("/ProcessNodeFormTemplate")
-    public AjaxResult ProcessNodeFormTemplate(BpmRunNodePlusVo bpmRunNodePlusVo) {
-        //bpmRunNodePlusVo.setTaskProcessKey("e27cd00ef97448a697adbcaac704292e");
-        //bpmRunNodePlusVo.setTaskNodeKey("Activity_0k0fm8s");
-        //bpmRunNodePlusVo.setTaskScriptKey("11f4951b-682f-4185-acb7-f4b8db9d5940");
-        return AjaxResult.success(ipreExecutionToolClass.getProcessNodeFormTemplate(bpmRunNodePlusVo));
+    @GetMapping("/processNodeFormInfoDate")
+    public AjaxResult processNodeFormInfoDate(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        return AjaxResult.success(ipreExecutionToolClass.processNodeFormInfoDate(bpmRunNodeFromVo));
     }
 
 

+ 73 - 0
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/entity/runbpm/BpmRunNodeFormFilterConditionsVo.java

@@ -0,0 +1,73 @@
+package com.ruoyi.execution.produce.dispersed.entity.runbpm;
+
+import java.util.Map;
+
+/**
+ * @author hanzihang
+ * @date 2023/12/13 3:24 PM
+ */
+public class BpmRunNodeFormFilterConditionsVo {
+
+    /**
+     * 表名称
+     */
+    private String tableName;
+
+    /**
+     * 查询表条件
+     */
+    private Map<String, Object> condition;
+
+    /**
+     * 是否当前节点回填数据
+     * <p>
+     * 例如:下拉框是当前节点表单的回显数据,并不是回填的操作数据
+     * <p>
+     * 默认拼接当前任务、节点编码
+     */
+    private boolean isNodeOnlyData;
+
+    public BpmRunNodeFormFilterConditionsVo() {
+        this.isNodeOnlyData = true;
+    }
+
+    public BpmRunNodeFormFilterConditionsVo(String tableName, Map<String, Object> condition, boolean isNodeOnlyData) {
+        this.tableName = tableName;
+        this.condition = condition;
+        this.isNodeOnlyData = isNodeOnlyData;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("BpmRunNodeFormDataVo{");
+        sb.append("tableName='").append(tableName).append('\'');
+        sb.append(", condition=").append(condition);
+        sb.append(", isNodeOnlyData=").append(isNodeOnlyData);
+        sb.append('}');
+        return sb.toString();
+    }
+
+    public String getTableName() {
+        return tableName;
+    }
+
+    public void setTableName(String tableName) {
+        this.tableName = tableName;
+    }
+
+    public Map<String, Object> getCondition() {
+        return condition;
+    }
+
+    public void setCondition(Map<String, Object> condition) {
+        this.condition = condition;
+    }
+
+    public boolean isNodeOnlyData() {
+        return isNodeOnlyData;
+    }
+
+    public void setNodeOnlyData(boolean nodeOnlyData) {
+        isNodeOnlyData = nodeOnlyData;
+    }
+}

+ 104 - 0
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/entity/runbpm/BpmRunNodeFromVo.java

@@ -0,0 +1,104 @@
+package com.ruoyi.execution.produce.dispersed.entity.runbpm;
+
+import com.ruoyi.system.entity.CommonEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author hanzihang
+ * @date 2023/12/12 5:34 PM
+ */
+public class BpmRunNodeFromVo {
+
+    /**
+     * 流程任务编码
+     */
+    private String taskProcessKey;
+
+    /**
+     * 流程节点编码
+     */
+    private String taskNodeKey;
+
+    /**
+     * 当前节点绑定脚本
+     */
+    private String taskAutomaticScriptTriggerType;
+
+    /**
+     * 当前发起流程的计划编码
+     */
+    private String taskPlanKey;
+
+    /**
+     * 其他参数
+     */
+    private List<BpmRunNodeFormFilterConditionsVo> FormDataVoList;
+
+    public BpmRunNodeFromVo() {
+        FormDataVoList = new ArrayList<>();
+    }
+
+    public BpmRunNodeFromVo(String taskProcessKey, String taskNodeKey, String taskAutomaticScriptTriggerType, String taskPlanKey, List<BpmRunNodeFormFilterConditionsVo> formDataVoList) {
+        this.taskProcessKey = taskProcessKey;
+        this.taskNodeKey = taskNodeKey;
+        this.taskAutomaticScriptTriggerType = taskAutomaticScriptTriggerType;
+        this.taskPlanKey = taskPlanKey;
+        FormDataVoList = formDataVoList;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder("BpmRunNodeFromVo{");
+        sb.append("taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", taskAutomaticScriptTriggerType='").append(taskAutomaticScriptTriggerType).append('\'');
+        sb.append(", taskPlanKey='").append(taskPlanKey).append('\'');
+        sb.append(", FormDataVoList=").append(FormDataVoList);
+        sb.append('}');
+        return sb.toString();
+    }
+
+    public String getTaskProcessKey() {
+        return taskProcessKey;
+    }
+
+    public void setTaskProcessKey(String taskProcessKey) {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskNodeKey() {
+        return taskNodeKey;
+    }
+
+    public void setTaskNodeKey(String taskNodeKey) {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskAutomaticScriptTriggerType() {
+        return taskAutomaticScriptTriggerType;
+    }
+
+    public void setTaskAutomaticScriptTriggerType(String taskAutomaticScriptTriggerType) {
+        this.taskAutomaticScriptTriggerType = taskAutomaticScriptTriggerType;
+    }
+
+    public String getTaskPlanKey() {
+        return taskPlanKey;
+    }
+
+    public void setTaskPlanKey(String taskPlanKey) {
+        this.taskPlanKey = taskPlanKey;
+    }
+
+    public List<BpmRunNodeFormFilterConditionsVo> getFormDataVoList() {
+        return FormDataVoList;
+    }
+
+    public void setFormDataVoList(List<BpmRunNodeFormFilterConditionsVo> formDataVoList) {
+        FormDataVoList = formDataVoList;
+    }
+
+
+}

+ 0 - 53
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/entity/runbpm/BpmRunNodePlusVo.java

@@ -1,53 +0,0 @@
-package com.ruoyi.execution.produce.dispersed.entity.runbpm;
-
-/**
- * @author hmc
- * @date 2023-12-11 13:18
- * @Description:
- */
-
-public class BpmRunNodePlusVo {
-
-    //  当前任务流程编码
-    private String taskProcessKey;
-
-    //  当前执行节点的唯一编码
-    private String taskNodeKey;
-
-    //  当前执行节点的脚本编码
-    private String taskScriptKey;
-
-    public String getTaskProcessKey() {
-        return taskProcessKey;
-    }
-
-    public void setTaskProcessKey(String taskProcessKey) {
-        this.taskProcessKey = taskProcessKey;
-    }
-
-    public String getTaskNodeKey() {
-        return taskNodeKey;
-    }
-
-    public void setTaskNodeKey(String taskNodeKey) {
-        this.taskNodeKey = taskNodeKey;
-    }
-
-    public String getTaskScriptKey() {
-        return taskScriptKey;
-    }
-
-    public void setTaskScriptKey(String taskScriptKey) {
-        this.taskScriptKey = taskScriptKey;
-    }
-
-    @Override
-    public String toString() {
-        final StringBuffer sb = new StringBuffer("BpmRunNodeVo{");
-        sb.append("taskProcessKey='").append(taskProcessKey).append('\'');
-        sb.append(",taskNodeKey='").append(taskNodeKey).append('\'');
-        sb.append(",taskScriptKey='").append(taskScriptKey).append('\'');
-        sb.append('}');
-        return sb.toString();
-    }
-}

+ 99 - 146
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/runbpm/PreExecutionToolClass.java

@@ -1,13 +1,7 @@
 package com.ruoyi.execution.produce.dispersed.runbpm;
 
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONArray;
-import com.alibaba.fastjson2.JSONObject;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.CamelCaseConverterUtil;
 import com.ruoyi.common.utils.bpm.XmlDataParserUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.execution.produce.dispersed.entity.BpmExecuteNode;
@@ -21,7 +15,7 @@ import com.ruoyi.execution.produce.dispersed.mapper.BpmExecuteNodeMiddleMapper;
 import com.ruoyi.execution.produce.dispersed.mapper.BpmExecuteProcessMapper;
 import com.ruoyi.execution.produce.dispersed.service.IBpmExecuteNodeFormService;
 import com.ruoyi.execution.produce.dispersed.service.IBpmExecuteProcessService;
-import com.ruoyi.execution.produce.dispersed.service.impl.utils.VerifyExecutionProcess;
+import com.ruoyi.execution.produce.utils.VerifyExecutionProcess;
 import com.ruoyi.system.entity.*;
 import com.ruoyi.system.mapper.BpmNodeHandleUserMapper;
 import com.ruoyi.system.mapper.BpmNodeScriptRelevanceMapper;
@@ -81,7 +75,7 @@ public class PreExecutionToolClass<R> {
 
 
     @Autowired
-    private  BpmExecuteNodeFormMapper executeNodeFormMapper;
+    private BpmExecuteNodeFormMapper executeNodeFormMapper;
 
     /**
      * 预执行流程自动执行开始节点
@@ -90,16 +84,15 @@ public class PreExecutionToolClass<R> {
      * @return
      */
     @Transactional
-    //@Async
     public AjaxResult ReadyToExecute(CommonEntity commonEntity) {
         // 获取发起流程所需数据
         IntoProduction intoProduction = this.obtainData(commonEntity);
         /**
          * 根据流程key校验当前流程数据的完整性,是否可以运行
          */
-        //if (!iVerifyExecutionProcess.VerifyProcessData(intoProduction.getTaskProcessKey())) {
-        //    return AjaxResult.error(HttpStatus.EXECUTEPROCESS, "流程数据验证失败!");
-        //}
+//        if (!iVerifyExecutionProcess.VerifyProcessData(intoProduction.getTaskProcessKey())) {
+//            return AjaxResult.error(HttpStatus.EXECUTEPROCESS, "流程数据验证失败!");
+//        }
         /**1️⃣1️⃣1️⃣ 得到当前投产需要执行的流程详细信息*/
         //--得到当前流程的详细信息
         BpmProcess bpmProcess = bpmProcessMapper.selectBpmProcessByProcessKey(intoProduction.getTaskProcessKey());
@@ -444,9 +437,16 @@ public class PreExecutionToolClass<R> {
         return intoProduction;
     }
 
+    /**
+     * * 执行表单查询详情接口,得到当前节点展示表单的数据
+     */
+    public CommonEntity processNodeFormInfoDate(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        return iRunImplementationClass.getNodeFormData(bpmRunNodeFromVo);
+    }
 
     /**
      * 查询节点对应的表单信息
+     *
      * @param nodeForm
      * @return
      */
@@ -467,141 +467,94 @@ public class PreExecutionToolClass<R> {
         return resultMap;
     }
 
-    // 弃用保留
-    public int updateNodeState(String taskProcessKey, String taskNodeKey, CommonEntity commonEntity) {
-        BpmExecuteNode bpmExecuteNode1 = new BpmExecuteNode();
-        bpmExecuteNode1.setTaskProcessKey(taskProcessKey);
-        bpmExecuteNode1.setTaskNodeKey(taskNodeKey);
-        bpmExecuteNode1.setTaskNodeState("1");      // 状态标识已经执行
-        // 修改当前节点的状态
-        runBpmExecuteNodeMapper.updateNodeState(bpmExecuteNode1);
+    public CommonEntity getProcessNodeFormTemplate(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        CommonEntity commonEntity = new CommonEntity();
 
-        // 得到当前节点的所有信息
-        BpmExecuteNode currentBpmExecuteNode = runBpmExecuteNodeMapper.queryBpmExecuteNodeBytaskNodeKey(taskProcessKey, taskNodeKey);
-        /**
-         * 执行当前节点配置的操作  例如:当前节点中的自动执行的脚本
-         * 得到当前节点的关联信息
-         */
-        BpmExecuteNodeMiddle bpmExecuteNodeMiddle = runBpmExecuteNodeMiddleMapper.queryBpmExecuteNodeMiddleByTaskNodeKey(taskProcessKey, taskNodeKey);
-        String script[] = bpmExecuteNodeMiddle.getTaskAutomaticScriptTriggerType().split(",");  // 得到当前节点需要自动执行的脚本
-        // 1️⃣1️⃣1️⃣节点前执行的脚本
-        if (currentBpmExecuteNode.getTaskNodeBefore().equals("true")) {
-            // 调用执行脚本接口
-            if (script.length != 0 && !script[0].isEmpty()) {
-                for (int i = 0; i < script.length; i++) {
-                    //  节点执行必要的参数
-                    IScriptEntity iScriptEntity = new IScriptEntity();
-                    iScriptEntity.setScriptFlowKey(taskProcessKey);
-                    iScriptEntity.setScriptNodeKey(taskNodeKey);
-                    iScriptEntity.setImplementationName(script[i]);
-                    // 调用执行节点
-                    iRunImplementationClass.RunScriptImplementationClassLogicCode(iScriptEntity, commonEntity);
-                }
-            }
-        }
-        // 2️⃣2️⃣2️⃣执行节点绑定的正常脚本
-        IRunBPMEntity iRunBPMEntity = new IRunBPMEntity();
-        iRunBPMEntity.setImplementationName(commonEntity.getBasicMap().get("implementationName").toString());
-        iRunBPMEntity.setExecutionFlowKey(taskProcessKey);
-        iRunBPMEntity.setExecutionNodeKey(taskNodeKey);
-        iRunBPMEntity.setExecutionMap((Map<String, Object>) JSON.parse(commonEntity.toString()));
-        iRunImplementationClass.RunBPMImplementationClassLogicCode(iRunBPMEntity);
-        // 3️⃣3️⃣3️⃣节点后执行的脚本
-        if (currentBpmExecuteNode.getTaskNodeAfter().equals("true")) {
-            // 调用执行脚本接口
-            if (script.length != 0 && !script[0].isEmpty()) {
-                for (int i = 0; i < script.length; i++) {
-                    //  节点执行必要的参数
-                    IScriptEntity iScriptEntity = new IScriptEntity();
-                    iScriptEntity.setScriptFlowKey(taskProcessKey);
-                    iScriptEntity.setScriptNodeKey(taskNodeKey);
-                    iScriptEntity.setImplementationName(script[i]);
-                    // 调用执行节点
-                    iRunImplementationClass.RunScriptImplementationClassLogicCode(iScriptEntity, commonEntity);
-                }
-            }
-        }
-        return 1;
+        return commonEntity;
     }
 
-    /**
-     * 共通执行节点表单模版接口
-     */
-    public  List<Map> getProcessNodeFormTemplate(BpmRunNodePlusVo bpmRunNodeV) {
-        //任务流程key
-        String taskProcessKey = bpmRunNodeV.getTaskProcessKey();
-        //任务节点key
-        String taskNodeKey = bpmRunNodeV.getTaskNodeKey();
-        //脚本名称
-        String taskScriptKey = bpmRunNodeV.getTaskScriptKey();
-        //根据流程key和节点key查询节点表单关系表【bpm_execute_node_form】
-        BpmExecuteNodeForm bpmExecuteNodeForm = iBpmExecuteNodeFormService.getBpmExecuteNodeForm(taskProcessKey, taskNodeKey,taskScriptKey);
-        //存放返回结果
-        List<Map> mapList=new ArrayList<>();
-        //节点对应的表单信息不能为空
-        if(bpmExecuteNodeForm!=null){
-            String taskNodeFromContent = bpmExecuteNodeForm.getTaskNodeFromContent();
-            //拿到当前节点对应的表单类型
-            String taskNodeFromType = bpmExecuteNodeForm.getTaskNodeFromType();
-            if(taskNodeFromType.equals("dragForm")){
-                HashMap hashMap=new HashMap();
-                //解析存进去的表单信息【task_node_from_content】
-                JSONObject taskNodeFromContentJson = JSONObject.parseObject(taskNodeFromContent);
-                //得到sqlKey
-                String sqlKey = taskNodeFromContentJson.get("sqlKey").toString();
-                //根据sqlKey查询表单数据
-                if(!sqlKey.isEmpty()){
-                    Map<String, String> tableSqlBySqlKey = executeNodeFormMapper.getTableSqlBySqlKey(sqlKey);
-                    hashMap.put("resultMap",tableSqlBySqlKey);
-                }
-                //得到【df_form_sql】
-                String dfFormSql = taskNodeFromContentJson.get("dfFormSql").toString();
-                ObjectMapper objectMapper = new ObjectMapper();
-                Map<String, Object>  sqlMap=null;
-                try {
-                    sqlMap = objectMapper.readValue(dfFormSql, Map.class);
-                    //循环得到每一个sql语句返回结果
-                    for (Map.Entry<String, Object> entry : sqlMap.entrySet()) {
-                        List<Map<String, Object>> resultMap = executeNodeFormMapper.executeSql(entry.getValue().toString());
-                        sqlMap.put(entry.getKey(), resultMap);
-                    }
-                    //把原来的sql语句替换成下拉框数据
-                    taskNodeFromContentJson.put("dfFormSql",JSONObject.toJSONString(sqlMap));
-                } catch (JsonProcessingException e) {
-                    e.printStackTrace();
-                }
-                //表单结构信息
-                hashMap.put("template",taskNodeFromContentJson);
-                //添加到返回集合中
-                mapList.add(hashMap);
-            }else if(taskNodeFromType.equals("composeForm")){
-                //参数为一个数组
-                JSONArray objects = JSON.parseArray(taskNodeFromContent);
-                //循环数组元素
-                objects.forEach(item->{
-                    String s = item.toString();
-                    JSONObject jsonObject = JSONObject.parseObject(s);
-                    String tableSql = jsonObject.get("tableSql").toString();
-                    String conditionArrayJson = jsonObject.get("condition").toString();
-                    JSONArray jsonArray = JSON.parseArray(conditionArrayJson);
-                    jsonArray.forEach(conditionItem->{
-                        //处理下这个条件 去掉 #{ 去掉.
-                        String conditionString = conditionItem.toString().replace("#{", "").replace(".", "_");
-                        //转驼峰
-                        String CamelConditionString = CamelCaseConverterUtil.toCamelCase(conditionString);
-                        //
-                    });
-                    Map<String, String> stringHashMap = executeNodeFormMapper.tableSql(tableSql);
-                    jsonObject.put("tableList", stringHashMap);
-                    mapList.add(jsonObject);
-                });
-            }else if(taskNodeFromContent.equals("designForm")){
-                HashMap hashMap=new HashMap();
-                hashMap.put("resultMap","");
-                hashMap.put("template","");
-                mapList.add(hashMap);
-            }
-        }
-        return mapList;
-    }
+
+//    /**
+//     * 共通执行节点表单模版接口
+//     */
+//    public List<Map> getProcessNodeFormTemplate(BpmRunNodePlusVo bpmRunNodeV) {
+//        //任务流程key
+//        String taskProcessKey = bpmRunNodeV.getTaskProcessKey();
+//        //任务节点key
+//        String taskNodeKey = bpmRunNodeV.getTaskNodeKey();
+//        //脚本名称
+//        String taskScriptKey = bpmRunNodeV.getTaskScriptKey();
+//        //根据流程key和节点key查询节点表单关系表【bpm_execute_node_form】
+//        BpmExecuteNodeForm bpmExecuteNodeForm = iBpmExecuteNodeFormService.getBpmExecuteNodeForm(taskProcessKey, taskNodeKey, taskScriptKey);
+//        //存放返回结果
+//        List<Map> mapList = new ArrayList<>();
+//        //节点对应的表单信息不能为空
+//        if (bpmExecuteNodeForm != null) {
+//            String taskNodeFromContent = bpmExecuteNodeForm.getTaskNodeFromContent();
+//            //拿到当前节点对应的表单类型
+//            String taskNodeFromType = bpmExecuteNodeForm.getTaskNodeFromType();
+//            if (taskNodeFromType.equals("dragForm")) {
+//                HashMap hashMap = new HashMap();
+//                //解析存进去的表单信息【task_node_from_content】
+//                JSONObject taskNodeFromContentJson = JSONObject.parseObject(taskNodeFromContent);
+//                //得到sqlKey
+//                String sqlKey = taskNodeFromContentJson.get("sqlKey").toString();
+//                //根据sqlKey查询表单数据
+//                if (!sqlKey.isEmpty()) {
+//                    Map<String, String> tableSqlBySqlKey = executeNodeFormMapper.getTableSqlBySqlKey(sqlKey);
+//                    hashMap.put("resultMap", tableSqlBySqlKey);
+//                }
+//                //得到【df_form_sql】
+//                String dfFormSql = taskNodeFromContentJson.get("dfFormSql").toString();
+//                ObjectMapper objectMapper = new ObjectMapper();
+//                Map<String, Object> sqlMap = null;
+//                try {
+//                    sqlMap = objectMapper.readValue(dfFormSql, Map.class);
+//                    //循环得到每一个sql语句返回结果
+//                    for (Map.Entry<String, Object> entry : sqlMap.entrySet()) {
+//                        List<Map<String, Object>> resultMap = executeNodeFormMapper.executeSql(entry.getValue().toString());
+//                        sqlMap.put(entry.getKey(), resultMap);
+//                    }
+//                    //把原来的sql语句替换成下拉框数据
+//                    taskNodeFromContentJson.put("dfFormSql", JSONObject.toJSONString(sqlMap));
+//                } catch (JsonProcessingException e) {
+//                    e.printStackTrace();
+//                }
+//                //表单结构信息
+//                hashMap.put("template", taskNodeFromContentJson);
+//                //添加到返回集合中
+//                mapList.add(hashMap);
+//            } else if (taskNodeFromType.equals("composeForm")) {
+//                //参数为一个数组
+//                JSONArray objects = JSON.parseArray(taskNodeFromContent);
+//
+//                //循环数组元素
+//                objects.forEach(item -> {
+//                    String s = item.toString();
+//                    JSONObject jsonObject = JSONObject.parseObject(s);
+//                    String tableSql = jsonObject.get("tableSql").toString();
+//                    String conditionArrayJson = jsonObject.get("condition").toString();
+//                    JSONArray jsonArray = JSON.parseArray(conditionArrayJson);
+//
+//                    jsonArray.forEach(conditionItem -> {
+//                        //处理下这个条件 去掉 #{ 去掉.
+//                        String conditionString = conditionItem.toString().replace("#{", "").replace(".", "_");
+//                        //转驼峰
+//                        String CamelConditionString = CamelCaseConverterUtil.toCamelCase(conditionString);
+//                        //
+//                    });
+//
+//                    Map<String, String> stringHashMap = executeNodeFormMapper.tableSql(tableSql);
+//                    jsonObject.put("tableList", stringHashMap);
+//                    mapList.add(jsonObject);
+//                });
+//            } else if (taskNodeFromContent.equals("designForm")) {
+//                HashMap hashMap = new HashMap();
+//                hashMap.put("resultMap", "");
+//                hashMap.put("template", "");
+//                mapList.add(hashMap);
+//            }
+//        }
+//        return mapList;
+//    }
 }

+ 24 - 0
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/runbpm/RunImplementationClass.java

@@ -1,10 +1,12 @@
 package com.ruoyi.execution.produce.dispersed.runbpm;
 
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.IScriptEntity;
 import com.ruoyi.execution.produce.dispersed.service.IRunBPMService;
 import com.ruoyi.execution.produce.dispersed.service.IScriptService;
+import com.ruoyi.system.entity.CommonEntity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
@@ -93,6 +95,28 @@ public class RunImplementationClass<J> {
         }
     }
 
+    /**
+     * 获取当前节点的表单回显数据
+     *
+     * @param bpmRunNodeFromVo
+     * @return
+     */
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        // 首先检查容器当中是否存在当前JavaBean
+        if (applicationContext.containsBean(bpmRunNodeFromVo.getTaskAutomaticScriptTriggerType())) {
+            IRunBPMService iRunBPMService = applicationContext.getBean(bpmRunNodeFromVo.getTaskAutomaticScriptTriggerType(), IRunBPMService.class);
+            // 二次验证节点bean是否存在,无需校验节点前验证是否通过
+            if (iRunBPMService.isVerificationMethod()) {
+                // 调用当前节点回显表单数据处理逻辑
+                return iRunBPMService.getNodeFormData(bpmRunNodeFromVo);
+            }
+            return new CommonEntity();
+        } else {
+            return new CommonEntity();
+        }
+    }
+
+
     /**
      * 根据脚本名称校验脚本是否存在
      *

+ 10 - 0
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/IRunBPMService.java

@@ -2,7 +2,9 @@ package com.ruoyi.execution.produce.dispersed.service;
 
 
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.ruoyi.system.entity.CommonEntity;
 
 /**
  * 执行流程节点接口
@@ -12,6 +14,14 @@ import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
  */
 public interface IRunBPMService {
 
+    /**
+     * 当前节点表单的回显数据
+     *
+     * @param iRunBPMEntity
+     * @return
+     */
+    CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo);
+
     /**
      * 前置验证节点
      *

+ 7 - 1
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/BpmExecuteNodeFormServiceImpl.java

@@ -88,6 +88,12 @@ public class BpmExecuteNodeFormServiceImpl implements IBpmExecuteNodeFormService
         return bpmExecuteNodeFormMapper.deleteBpmExecuteNodeFormById(id);
     }
 
+    /**
+     * 获取当前流程所有节点的表单编码以及表单类型
+     *
+     * @param processKey 流程编码
+     * @return
+     */
     @Override
     public Map<String, String> selectNodeFromInfos(String processKey) {
         Map<String, String> map = new HashMap<>();
@@ -98,6 +104,6 @@ public class BpmExecuteNodeFormServiceImpl implements IBpmExecuteNodeFormService
 
     @Override
     public BpmExecuteNodeForm getBpmExecuteNodeForm(String taskProcessKey, String taskNodeKey, String taskScriptKey) {
-        return bpmExecuteNodeFormMapper.selectBpmExecuteNodeFormByTpKAndTnkAndTsk(taskProcessKey,taskNodeKey,taskScriptKey);
+        return bpmExecuteNodeFormMapper.selectBpmExecuteNodeFormByTpKAndTnkAndTsk(taskProcessKey, taskNodeKey, taskScriptKey);
     }
 }

+ 3 - 3
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/BpmExecuteProcessServiceImpl.java

@@ -189,10 +189,10 @@ public class BpmExecuteProcessServiceImpl implements IBpmExecuteProcessService {
             String sqlKey = tableInfo.get("sqlKey");
             //根据sqlKey查询tableSQL信息
             Map<String, String> tableSqlInfo = runBpmExecuteProcessMapper.getTableSqlInfo(sqlKey);
-            String tableSql = tableSqlInfo.get("tableSql");
-            String tableCondition = tableSqlInfo.get("tableCondition");
+            String tableSql = tableSqlInfo.get("tableSql").toString();
+            String tableCondition = tableSqlInfo.get("tableCondition").toString();
             //拿到动态表格编号
-            String tId = tableInfo.get("tId");
+            String tId = String.valueOf(tableInfo.get("tId"));
             List<Map<String, String>> tableConditionMap = runBpmExecuteProcessMapper.getTableCondition(tId);
             List<String> tableConditionList=new ArrayList<>();
             tableConditionMap.forEach(e->{

+ 0 - 122
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/Test1Bpm.java

@@ -1,122 +0,0 @@
-package com.ruoyi.execution.produce.dispersed.service.impl.runbpm;
-
-import com.ruoyi.common.config.bpm.BpmProperties;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.http.Sending;
-import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
-import com.ruoyi.execution.produce.dispersed.service.IRunBPMService;
-import com.ruoyi.system.entity.CommonEntity;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Scope;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 测试排产任务节点
- */
-@Service("eaf4bf2b-3142-4cb0-affb-5d427796fa60")
-@Scope("prototype")
-public class Test1Bpm implements IRunBPMService {
-
-    @Autowired
-    private BpmProperties bpmProperties;
-
-    @Autowired
-    private Sending sending;
-
-    RestTemplate restTemplate = new RestTemplate();
-
-    @Override
-    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
-        Map<String, Object> map = iRunBPMEntity.getExecutionMap();
-        //判断表名是否存在
-        if (!map.containsKey("basicMap")) return AjaxResult.error("表名不存在");
-        //判断字段是否存在
-        if (!map.containsKey("commMap")) return AjaxResult.error("插入字段不存在");
-        //判断修改条件是否存在
-        if (!map.containsKey("conditionMap")) return AjaxResult.error("修改条件不存在");
-        //判断查询条件是否存在
-        if (!map.containsKey("queryConditions")) return AjaxResult.error("查询条件不存在");
-        return AjaxResult.success();
-    }
-
-    @Override
-    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity){
-        //接收参数
-        Map<String, Object> map = iRunBPMEntity.getExecutionMap();
-        //查询
-        CommonEntity queryMap = new CommonEntity();
-        queryMap.setBasicMap((Map<String, Object>) map.get("basicMap"));
-        queryMap.setConditionMap((Map<String, Object>) map.get("queryConditions"));
-        ResponseEntity<AjaxResult> response = null;
-//        try {
-//            response = restTemplate.exchange(
-//                    bpmProperties.formCommonGetInfoIp, HttpMethod.GET, new HttpEntity<>(queryMap), AjaxResult.class);
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//        if (response.getStatusCodeValue() != 200) {
-//            return false;
-//        }
-        try {
-            response = sending.sendCommonGetInfo(queryMap);
-        }catch (Exception e){
-            return AjaxResult.error("网络错误");
-        }
-        if (response.getStatusCodeValue() != 200) {
-            return AjaxResult.error();
-        }
-        AjaxResult body = response.getBody();
-        //得到详情数据
-        Map<String, Object> data = (Map<String, Object>) body.get("data");
-        //库里planWeight
-        Long planWeight = Long.valueOf(data.get("planWeight").toString());
-        Map<String, Object> basicMap = (Map<String, Object>) map.get("basicMap");
-        //累加的planWeight
-        Long planWeight1 = Long.valueOf(basicMap.get("planWeight").toString());
-        //计算planWeight
-        Long weight = planWeight + planWeight1;
-        String planState = basicMap.get("planState").toString();
-
-        //修改map
-        CommonEntity editMap = new CommonEntity();
-        queryMap.setBasicMap((Map<String, Object>) map.get("basicMap"));
-        Map<String, Object> commMap = new HashMap<>();
-        commMap.put("plan_weight", weight);
-        commMap.put("plan_state", planState);
-        queryMap.setCommMap(commMap);
-        queryMap.setConditionMap((Map<String, Object>) map.get("conditionMap"));
-
-//        AjaxResult ajaxResult = restTemplate.postForObject(bpmProperties.formCommonUpdateIp, editMap, AjaxResult.class);
-//        if (Long.valueOf(ajaxResult.get("code").toString()) != 200L) return false;
-        try {
-            response = sending.sendCommonUpdate(editMap);
-        }catch (Exception e){
-            return AjaxResult.error("网络错误");
-        }
-        if (response.getStatusCodeValue() != 200) {
-            return AjaxResult.error();
-        }else {
-            return AjaxResult.success();
-        }
-    }
-
-    @Override
-    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
-        return null;
-    }
-
-    @Override
-    public boolean isVerificationMethod() {
-        return false;
-    }
-
-    @Override
-    public boolean preDestroy() {
-        return false;
-    }
-}

+ 26 - 2
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/common/SandProductionImpl.java → ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/hangye1/testNode/SandProductionImpl.java

@@ -1,18 +1,22 @@
-package com.ruoyi.execution.produce.dispersed.service.impl.runbpm.common;
+package com.ruoyi.execution.produce.dispersed.service.impl.runbpm.hangye1.testNode;
 
-import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.http.Sending;
+import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
 import com.ruoyi.execution.produce.dispersed.mapper.BpmExecuteProcessMapper;
 import com.ruoyi.execution.produce.dispersed.service.IRunBPMService;
+import com.ruoyi.execution.produce.utils.EchoNodeFormData;
 import com.ruoyi.system.entity.CommonEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PreDestroy;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -31,6 +35,26 @@ public class SandProductionImpl implements IRunBPMService {
     @Autowired // 执行流程
     private BpmExecuteProcessMapper runBpmExecuteProcessMapper;
 
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+
+        /**
+         *  任务编号,任务节点编号
+         *  -》需要判断是否需要拼接条件获得节点编号
+         *
+         */
+        // 选择货品 list
+        // 重量输入
+        Map<String, Object> map = new HashMap<>();
+        map.put("isdelete", 0);
+        map.put("type", 2);
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("goods", map, false));
+        return echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+    }
+
     @Override
     public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
         return AjaxResult.success();

+ 10 - 1
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/common/WarehousingImpl.java → ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/hangye1/testNode/WarehousingImpl.java

@@ -1,8 +1,10 @@
-package com.ruoyi.execution.produce.dispersed.service.impl.runbpm.common;
+package com.ruoyi.execution.produce.dispersed.service.impl.runbpm.hangye1.testNode;
 
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
 import com.ruoyi.execution.produce.dispersed.service.IRunBPMService;
+import com.ruoyi.system.entity.CommonEntity;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
 
@@ -17,6 +19,13 @@ import javax.annotation.PreDestroy;
 @Service("8f9d6659-ab3c-4078-8ff9-d2e3a0cab778")
 @Scope("prototype")
 public class WarehousingImpl implements IRunBPMService {
+
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        return null;
+    }
+
     @Override
     public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
         return AjaxResult.success();

+ 0 - 44
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/runbpm/testImpl.java

@@ -1,44 +0,0 @@
-package com.ruoyi.execution.produce.dispersed.service.impl.runbpm;
-
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
-import com.ruoyi.execution.produce.dispersed.service.IRunBPMService;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.PreDestroy;
-
-/**
- * @author hanzihang
- * @date 2023/12/5 2:37 PM
- */
-@Service("2cbf7a46-cb1c-45c3-ada0-6926924bb478")
-@Scope("prototype")
-public class testImpl implements IRunBPMService {
-    @Override
-    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
-        return AjaxResult.success();
-    }
-
-    @Override
-    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
-        //
-        return null;
-    }
-
-    @Override
-    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
-        return null;
-    }
-
-    @Override
-    public boolean isVerificationMethod() {
-        return true;
-    }
-
-    @Override
-    @PreDestroy
-    public boolean preDestroy() {
-        return true;
-    }
-}

+ 18 - 0
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/templateimpl/RunBPMImpl.java

@@ -2,9 +2,12 @@ package com.ruoyi.execution.produce.dispersed.service.templateimpl;
 
 
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
 import com.ruoyi.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
 import com.ruoyi.execution.produce.dispersed.service.IRunBPMService;
 import com.ruoyi.execution.produce.dispersed.service.IBpmExecuteNodeService;
+import com.ruoyi.execution.produce.utils.EchoNodeFormData;
+import com.ruoyi.system.entity.CommonEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
@@ -33,6 +36,21 @@ public class RunBPMImpl implements IRunBPMService {
     @Autowired
     private IBpmExecuteNodeService bpmExecuteNodeService;
 
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    /**
+     * 当前节点表单的回显数据
+     *
+     * @param commonEntity
+     * @return
+     */
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        CommonEntity commonEntity = new CommonEntity();
+        return echoNodeFormData.getEchoNodeFormData(commonEntity);
+    }
+
     /**
      * 前置验证节点
      *

+ 16 - 12
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/runbpm/UniversalPopupData.java → ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/utils/EchoNodeFormData.java

@@ -1,11 +1,8 @@
-package com.ruoyi.execution.produce.dispersed.runbpm;
+package com.ruoyi.execution.produce.utils;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.execution.produce.dispersed.entity.BpmExecuteNode;
-import com.ruoyi.execution.produce.dispersed.entity.BpmExecuteNodeForm;
 import com.ruoyi.execution.produce.dispersed.mapper.BpmExecuteNodeFormMapper;
 import com.ruoyi.execution.produce.dispersed.mapper.BpmExecuteNodeMapper;
 import com.ruoyi.system.entity.CommonEntity;
@@ -15,25 +12,32 @@ import org.springframework.stereotype.Service;
 import java.util.*;
 
 /**
+ * 离散型流程回显表单数据
+ *
  * @author hmc
  * @date 2023-12-12 12:29
  * @Description:
  */
 @Service
-public class UniversalPopupData {
-
+public class EchoNodeFormData {
 
     @Autowired
     private BpmExecuteNodeFormMapper bpmExecuteNodeFormMapper;
 
     @Autowired
-    private  BpmExecuteNodeMapper executeNodeMapper;
+    private BpmExecuteNodeMapper executeNodeMapper;
+
+
+    // BpmRunNodeFromVo bpmRunNodeFromVo
 
     /**
      * 返回弹窗数据的通用工具类
+     * <p>
+     * 回显节点表单数据
+     *
      * @return
      */
-    public CommonEntity getUniversalPopupDate(CommonEntity commonEntity) {
+    public CommonEntity getEchoNodeFormData(CommonEntity commonEntity) {
         //拿到这个节点的 task_process_key【流程key】 task_node_key【节点key】 task_script_key【脚本key】
         String taskProcessKey = commonEntity.getQueryMap().get("taskProcessKey").toString();
         String taskNodeKey = commonEntity.getQueryMap().get("taskNodeKey").toString();
@@ -42,15 +46,15 @@ public class UniversalPopupData {
         String taskPlanKey = commonEntity.getQueryMap().get("taskPlanKey").toString();
         //查询节点上包含的数量记录(件数)---重量记录(重量)查询执行节点对应的表单数据信息
         BpmExecuteNode bpmExecuteNode = executeNodeMapper.queryBpmExecuteNodeBytaskNodeKey(taskProcessKey, taskNodeKey);
-        HashMap bpmExecuteNodeMap=new HashMap();
-        bpmExecuteNodeMap.put("taskNodeNumber",bpmExecuteNode.getTaskNodeNumber());
-        bpmExecuteNodeMap.put("taskNodeWeight",bpmExecuteNode.getTaskNodeWeight());
+        HashMap bpmExecuteNodeMap = new HashMap();
+        bpmExecuteNodeMap.put("taskNodeNumber", bpmExecuteNode.getTaskNodeNumber());
+        bpmExecuteNodeMap.put("taskNodeWeight", bpmExecuteNode.getTaskNodeWeight());
         //拿到前端传回来的条件
         Map<String, Object> conditions = JSONObject.parseObject(JSON.toJSONString(commonEntity.getConditionMap()));
         //通用的查询接口
         CommonEntity commonEntityRt = bpmExecuteNodeFormMapper.getInfoById(tableName, conditions);
         //件数信息-重量信息放进去
-        commonEntityRt.getResultMap().put("bpmExecuteNode",bpmExecuteNodeMap);
+        commonEntityRt.getResultMap().put("bpmExecuteNode", bpmExecuteNodeMap);
         return commonEntityRt;
     }
 }

+ 55 - 57
ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/dispersed/service/impl/utils/VerifyExecutionProcess.java → ruoyi-process-execution/src/main/java/com/ruoyi/execution/produce/utils/VerifyExecutionProcess.java

@@ -1,4 +1,4 @@
-package com.ruoyi.execution.produce.dispersed.service.impl.utils;
+package com.ruoyi.execution.produce.utils;
 
 import com.alibaba.fastjson2.JSON;
 import com.ruoyi.common.config.bpm.BpmProperties;
@@ -9,22 +9,19 @@ import com.ruoyi.execution.produce.dispersed.runbpm.RunImplementationClass;
 import com.ruoyi.system.entity.BpmNodeHandleUser;
 import com.ruoyi.system.entity.BpmNodeScriptRelevance;
 import com.ruoyi.system.entity.BpmProcessConfiguration;
-import com.ruoyi.system.entity.DragForm;
 import com.ruoyi.system.service.IBpmNodeHandleUserService;
 import com.ruoyi.system.service.IBpmNodeScriptRelevanceService;
 import com.ruoyi.system.service.IBpmProcessConfigurationService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
 
-import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
+ * 离散型流程发起前校验
+ *
  * @author hanzihang
  * @date 2023/11/13 4:44 PM
  */
@@ -74,23 +71,24 @@ public class VerifyExecutionProcess {
                 bpmNodeScriptRelevance.setNodeKey(b.getNodeKey());
                 bpmNodeScriptRelevance.setScriptTriggerType(1L);
                 BpmNodeScriptRelevance bpmNodeScriptRelevance1 = bpmNodeScriptRelevanceService.selectBpmNodeScriptRelevanceInfo(bpmNodeScriptRelevance);
-                if(bpmNodeScriptRelevance1 != null){
+                if (bpmNodeScriptRelevance1 != null) {
                     ResponseEntity<AjaxResult> responseEntity = sending.sendGetNodeScript(bpmNodeScriptRelevance1.getScriptKey());
-                    if(responseEntity.getStatusCodeValue() != 200L){
+                    if (responseEntity.getStatusCodeValue() != 200L) {
                         return false;
                     }
                     AjaxResult ajaxResult = responseEntity.getBody();
-                    if(Long.valueOf(ajaxResult.get("code").toString()) != 200L){
+                    if (Long.valueOf(ajaxResult.get("code").toString()) != 200L) {
                         return false;
                     }
-                    if (!ajaxResult.containsKey("data")){
+                    if (!ajaxResult.containsKey("data")) {
                         return false;
                     }
-                    Map<String,Object> dataMap = (Map<String,Object>)ajaxResult.get("data");
-                    if(!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())){
+                    Map<String, Object> dataMap = (Map<String, Object>) ajaxResult.get("data");
+                    if (!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())) {
                         return false;
-                    };
-                }else {
+                    }
+                    ;
+                } else {
                     return false;
                 }
                 continue;
@@ -102,24 +100,24 @@ public class VerifyExecutionProcess {
                 bpmNodeScriptRelevance.setNodeKey(b.getNodeKey());
                 bpmNodeScriptRelevance.setScriptTriggerType(1L);
                 BpmNodeScriptRelevance bpmNodeScriptRelevance1 = bpmNodeScriptRelevanceService.selectBpmNodeScriptRelevanceInfo(bpmNodeScriptRelevance);
-                if(bpmNodeScriptRelevance1 != null){
+                if (bpmNodeScriptRelevance1 != null) {
                     ResponseEntity<AjaxResult> responseEntity = sending.sendGetNodeScript(bpmNodeScriptRelevance1.getScriptKey());
-                    if(responseEntity.getStatusCodeValue() != 200L){
+                    if (responseEntity.getStatusCodeValue() != 200L) {
                         return false;
                     }
                     AjaxResult ajaxResult = responseEntity.getBody();
-                    if(Long.valueOf(ajaxResult.get("code").toString()) != 200L){
+                    if (Long.valueOf(ajaxResult.get("code").toString()) != 200L) {
                         return false;
                     }
-                    if (!ajaxResult.containsKey("data")){
+                    if (!ajaxResult.containsKey("data")) {
                         return false;
                     }
-                    Map<String,Object> dataMap = (Map<String,Object>)ajaxResult.get("data");
-                    if(!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())){
+                    Map<String, Object> dataMap = (Map<String, Object>) ajaxResult.get("data");
+                    if (!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())) {
                         return false;
                     }
 
-                }else {
+                } else {
                     return false;
                 }
                 continue;
@@ -129,27 +127,27 @@ public class VerifyExecutionProcess {
             if (b.getNodeBefore().equals("true") || b.getNodeAfter().equals("true")) {
                 // 查询自动执行脚本
                 BpmNodeScriptRelevance bpmNodeScriptRelevance = bpmNodeScriptRelevanceService.selectAutoScriptByNodeKey(b.getNodeKey());
-                 if (bpmNodeScriptRelevance != null) {
-                     // 获取执行脚本名称,判断脚本是否存在
-                     ResponseEntity<AjaxResult> responseEntity = sending.sendGetNodeScript(bpmNodeScriptRelevance.getScriptKey());
-                     if(responseEntity.getStatusCodeValue() != 200L){
-                         return false;
-                     }
-                     AjaxResult ajaxResult = responseEntity.getBody();
-                    if(Long.valueOf(ajaxResult.get("code").toString()) != 200L){
+                if (bpmNodeScriptRelevance != null) {
+                    // 获取执行脚本名称,判断脚本是否存在
+                    ResponseEntity<AjaxResult> responseEntity = sending.sendGetNodeScript(bpmNodeScriptRelevance.getScriptKey());
+                    if (responseEntity.getStatusCodeValue() != 200L) {
+                        return false;
+                    }
+                    AjaxResult ajaxResult = responseEntity.getBody();
+                    if (Long.valueOf(ajaxResult.get("code").toString()) != 200L) {
                         return false;
                     }
-                    if (!ajaxResult.containsKey("data")){
+                    if (!ajaxResult.containsKey("data")) {
                         return false;
                     }
-                     Map<String,Object> dataMap = (Map<String,Object>)ajaxResult.get("data");
-                    if(!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())){
+                    Map<String, Object> dataMap = (Map<String, Object>) ajaxResult.get("data");
+                    if (!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())) {
                         return false;
                     }
-                 }else {
-                     return false;
-                 }
-            }else {
+                } else {
+                    return false;
+                }
+            } else {
                 return false;
             }
 
@@ -159,32 +157,32 @@ public class VerifyExecutionProcess {
                 // 真实角色不为空查询真实角色下是否存在可处理用户
                 if (StringUtils.isNotEmpty(bpmNodeHandleUser.getRealRole())) {
                     ResponseEntity responseEntity = sending.sendQueryUserExistsByRoleKey(bpmNodeHandleUser.getRealRole());
-                    if (responseEntity.getStatusCodeValue() != 200){
+                    if (responseEntity.getStatusCodeValue() != 200) {
                         return false;
                     }
-                    Map<String,Object> map = JSON.parseObject(responseEntity.getBody().toString());
-                    if(Long.valueOf(map.get("code").toString()) != 200L){
+                    Map<String, Object> map = JSON.parseObject(responseEntity.getBody().toString());
+                    if (Long.valueOf(map.get("code").toString()) != 200L) {
                         return false;
                     }
-                    if (Long.valueOf(map.get("data").toString()) <= 0L){
+                    if (Long.valueOf(map.get("data").toString()) <= 0L) {
                         return false;
                     }
                 }
                 // 虚拟角色下用户是否都真实存在
-                if(StringUtils.isNotEmpty(bpmNodeHandleUser.getExecuteUserNo())){
+                if (StringUtils.isNotEmpty(bpmNodeHandleUser.getExecuteUserNo())) {
                     ResponseEntity<AjaxResult> responseEntity = sending.sendQueryUserExistsByUserIds(bpmNodeHandleUser.getExecuteUserNo());
-                    if (responseEntity.getStatusCodeValue() != 200){
+                    if (responseEntity.getStatusCodeValue() != 200) {
                         return false;
                     }
-                    AjaxResult ajaxResult= responseEntity.getBody();
-                    if(Long.valueOf(ajaxResult.get("code").toString()) != 200L){
+                    AjaxResult ajaxResult = responseEntity.getBody();
+                    if (Long.valueOf(ajaxResult.get("code").toString()) != 200L) {
                         return false;
                     }
-                    if (Long.valueOf(ajaxResult.get("data").toString()) <= 0L){
+                    if (Long.valueOf(ajaxResult.get("data").toString()) <= 0L) {
                         return false;
                     }
                 }
-            }else {
+            } else {
                 return false;
             }
             //判断当前节点是否是自定义表单类型,是判断该名称是否存在&& '-' 前是否有内容
@@ -193,16 +191,16 @@ public class VerifyExecutionProcess {
                 bpmNodeScriptRelevance.setScriptNodeFormType("designForm");
                 bpmNodeScriptRelevance.setNodeKey(b.getNodeKey());
                 List<BpmNodeScriptRelevance> bpmNodeScriptRelevanceList = bpmNodeScriptRelevanceService.selectBpmNodeScriptRelevanceList(bpmNodeScriptRelevance);
-                for (BpmNodeScriptRelevance bpmNodeScriptRelevance1 : bpmNodeScriptRelevanceList){
-                    if(bpmNodeScriptRelevance1.getScriptNodeName().isEmpty()){
+                for (BpmNodeScriptRelevance bpmNodeScriptRelevance1 : bpmNodeScriptRelevanceList) {
+                    if (bpmNodeScriptRelevance1.getScriptNodeName().isEmpty()) {
                         return false;
                     }
-                    int separatorIndex  = bpmNodeScriptRelevance1.getScriptNodeName().indexOf('-');
-                    if(separatorIndex <= -1){
+                    int separatorIndex = bpmNodeScriptRelevance1.getScriptNodeName().indexOf('-');
+                    if (separatorIndex <= -1) {
                         return false;
                     }
-                    String scriptNodeName = bpmNodeScriptRelevance1.getScriptNodeName().substring(0,bpmNodeScriptRelevance1.getScriptNodeName().indexOf('-'));
-                    if (scriptNodeName.isEmpty()){
+                    String scriptNodeName = bpmNodeScriptRelevance1.getScriptNodeName().substring(0, bpmNodeScriptRelevance1.getScriptNodeName().indexOf('-'));
+                    if (scriptNodeName.isEmpty()) {
                         return false;
                     }
                 }
@@ -210,25 +208,25 @@ public class VerifyExecutionProcess {
             //判断当前节点是否是拖拽表单类型,是查询drag_form表查看该表单是否存在
             if (b.getNodeFormType().equals("dragForm")) {
                 ResponseEntity<AjaxResult> responseEntity = sending.sendGetFormInfo(Long.valueOf(b.getNodeFormKey()));
-                if (responseEntity.getStatusCodeValue() != 200){
+                if (responseEntity.getStatusCodeValue() != 200) {
                     return false;
                 }
-                if(! responseEntity.getBody().containsKey("data")){
+                if (!responseEntity.getBody().containsKey("data")) {
                     return false;
                 }
             }
             //判断当前节点是否是组合表单类型,是查询drag_table_group表查看该表单是否存在
             if (b.getNodeFormType().equals("composeForm")) {
                 ResponseEntity<AjaxResult> responseEntity = sending.sendGetGroupInfo(b.getNodeFormKey());
-                if (responseEntity.getStatusCodeValue() != 200){
+                if (responseEntity.getStatusCodeValue() != 200) {
                     return false;
                 }
-                if(! responseEntity.getBody().containsKey("data")){
+                if (!responseEntity.getBody().containsKey("data")) {
                     return false;
                 }
             }
         }
-        if(startNode <= 0 || endNode <= 0){
+        if (startNode <= 0 || endNode <= 0) {
             return false;
         }
         return true;