Bläddra i källkod

feat:共通新增追加默认字段值顺序、审批完成后更新审批主数据条状态、联调表单组解析接口,发起流程、新增、修改支持表单组操作

韩帛霖 1 år sedan
förälder
incheckning
145d77218d

+ 83 - 29
zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java

@@ -1,7 +1,9 @@
 package com.zkqy.business.controller;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.zkqy.business.entity.DragForm;
 import com.zkqy.business.entity.DragTableBtn;
 import com.zkqy.business.service.IDragFormService;
@@ -17,6 +19,7 @@ import com.zkqy.execution.produce.dispersed.entity.BpmApprovalStatus;
 import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import com.zkqy.execution.produce.dispersed.entity.DragFormGroup;
 import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormDateVo;
+import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeFormMapper;
 import com.zkqy.execution.produce.dispersed.runbpm.PreExecutionToolClass;
 import com.zkqy.execution.produce.dispersed.runbpm.RunImplementationClass;
 import com.zkqy.execution.produce.dispersed.service.IBpmExecuteProcessService;
@@ -27,10 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author hanzihang
@@ -71,6 +71,9 @@ public class CommonBtnController extends BaseController {
     @Autowired
     private EchoNodeFormData echoNodeFormData;
 
+    @Autowired  // 节点
+    private BpmExecuteNodeFormMapper executeNodeFormMapper;
+
     /**
      * 处理按钮通用接口(新增、修改、删除...)
      * 判断什么类型走什么接口: visible  false代表弹窗未开启时走回显表单模板及数据信息接口;true代表弹窗开启时走保存数据接口
@@ -117,7 +120,8 @@ public class CommonBtnController extends BaseController {
         if (commonEntity.getBasicMap().get("visible").toString().equals("true")) {
             if (dragTableBtn.getBtnFormType().equals("dragFormGroup")) {
                 // 表格组添加逻辑
-                return AjaxResult.btnMessage(echoNodeFormData.handleSubmitForm((BpmRunNodeFormDateVo) commonEntity.getBasicMap().get("BpmRunNodeFormDateVo")));
+                BpmRunNodeFormDateVo bpmRunNodeFormDateVo = JSON.parseObject(JSON.toJSONString(commonEntity.getBasicMap().get("BpmRunNodeFormDateVo")), BpmRunNodeFormDateVo.class);
+                return AjaxResult.btnMessage(echoNodeFormData.handleSubmitForm(bpmRunNodeFormDateVo));
             } else {
                 return AjaxResult.btnMessage(commonService.batchInsert(commonEntity));
             }
@@ -128,7 +132,6 @@ public class CommonBtnController extends BaseController {
                 String sqlKey = commonEntity.getBasicMap().get("sqlKey").toString();
                 return success(dragFormService.selectDragFormBySqlKey(sqlKey));
             }
-
         } else {
             return warn("暂不支持该操作!");
         }
@@ -144,26 +147,33 @@ public class CommonBtnController extends BaseController {
     public AjaxResult updateBtn(CommonEntity commonEntity, DragTableBtn dragTableBtn) throws JsonProcessingException {
         //是否开启弹窗
         if (commonEntity.getBasicMap().get("visible").toString().equals("true")) {
-            if (commonEntity.getBasicMap().containsKey("btnKey")) {  // 按钮提交时会触发别的操作
-                // 根据流程的key判断当前按钮是否执行触发流程
-                if (!dragTableBtn.getBtnProcessKey().isEmpty()) {
-                    // 调用发起流程接口
-                    //fromUtils.runBpmProductionScheduling(commonEntity);
-                    ipreExecutionToolClass.ReadyToExecute(commonEntity);
-//                    if (dragTableBtn.getBtnFormKey().isEmpty()) {  // 校验当前按钮是否是直接触发流程 或者脚本 (新增按钮类型)
-//                        fromUtils.runBpmProductionScheduling(commonEntity);
-//                    }
-                } else if (!dragTableBtn.getBtnScriptKey().isEmpty()) {
-                    // 调用执行脚本接口
-                    logger.info("执行脚本接口");
-                    fromUtils.triggerScript(commonEntity);
-                    //IScriptEntity iScriptEntity = new IScriptEntity();
-                    //iScriptEntity.setScriptFlowKey(commonEntity.toString()); // 脚本别名
-                    //irunImplementationClass.RunScriptImplementationClassLogicCode(iScriptEntity,commonEntity.toString());
-                }
+
+//            if (commonEntity.getBasicMap().containsKey("btnKey")) {  // 按钮提交时会触发别的操作
+//                // 根据流程的key判断当前按钮是否执行触发流程
+//                if (!dragTableBtn.getBtnProcessKey().isEmpty()) {
+//                    // 调用发起流程接口
+//                    //fromUtils.runBpmProductionScheduling(commonEntity);
+//                    ipreExecutionToolClass.ReadyToExecute(commonEntity);
+////                    if (dragTableBtn.getBtnFormKey().isEmpty()) {  // 校验当前按钮是否是直接触发流程 或者脚本 (新增按钮类型)
+////                        fromUtils.runBpmProductionScheduling(commonEntity);
+////                    }
+//                } else if (!dragTableBtn.getBtnScriptKey().isEmpty()) {
+//                    // 调用执行脚本接口
+//                    logger.info("执行脚本接口");
+//                    fromUtils.triggerScript(commonEntity);
+//                    //IScriptEntity iScriptEntity = new IScriptEntity();
+//                    //iScriptEntity.setScriptFlowKey(commonEntity.toString()); // 脚本别名
+//                    //irunImplementationClass.RunScriptImplementationClassLogicCode(iScriptEntity,commonEntity.toString());
+//                }
+//            }
+            if (dragTableBtn.getBtnFormType().equals("dragFormGroup")) {
+                // 表格组添加逻辑
+                BpmRunNodeFormDateVo bpmRunNodeFormDateVo = JSON.parseObject(JSON.toJSONString(commonEntity.getBasicMap().get("BpmRunNodeFormDateVo")), BpmRunNodeFormDateVo.class);
+                return AjaxResult.btnMessage(echoNodeFormData.handleSubmitForm(bpmRunNodeFormDateVo));
+            } else {
+                commonEntity.getCommMap().putAll(commonEntity.getBtnParametersMap());
+                return toAjax(commonService.edit(commonEntity));
             }
-            commonEntity.getCommMap().putAll(commonEntity.getBtnParametersMap());
-            return toAjax(commonService.edit(commonEntity));
         } else if (commonEntity.getBasicMap().get("visible").toString().equals("false")) {
             if (dragTableBtn.getBtnFormType().equals("dragForm")) {
                 Map<String, Object> map = new HashMap<>();
@@ -197,6 +207,7 @@ public class CommonBtnController extends BaseController {
         Map<String, Object> relationJsonMap = (Map<String, Object>) JSON.parse(dragFormGroup.getRelationJson());
         // 得到当前主表单key
         ((Map) relationJsonMap.get("mainForm")).get("formKey");
+
         // 主表单增加模版信息
         commonEntityList.forEach(ctem -> {
             if (ctem.getResultMap().get("formKey").equals(((Map) relationJsonMap.get("mainForm")).get("formKey"))) {
@@ -230,6 +241,41 @@ public class CommonBtnController extends BaseController {
             commonService.selectList(congCommon);
             ((Map) item).put("showValue", commonService.selectList(congCommon));
         });
+
+        //得到【df_form_sql】
+        String dfFormSql = ((Map) ((Map) relationJsonMap.get("mainForm")).get("showTemplate")).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语句替换成下拉框数据
+            ((Map) ((Map) relationJsonMap.get("mainForm")).get("showTemplate")).put("dfFormSql", JSONObject.toJSONString(sqlMap));
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        ((ArrayList) relationJsonMap.get("subFormList")).forEach(rtem -> {
+            String dfFormSql1 = ((Map) ((Map) rtem).get("showTemplate")).get("dfFormSql").toString();
+            ObjectMapper objectMapper1 = new ObjectMapper();
+            Map<String, Object> sqlMap1 = null;
+            try {
+                sqlMap1 = objectMapper.readValue(dfFormSql, Map.class);
+                //循环得到每一个sql语句返回结果
+                for (Map.Entry<String, Object> entry : sqlMap1.entrySet()) {
+                    List<Map<String, Object>> resultMap = executeNodeFormMapper.executeSql(entry.getValue().toString());
+                    sqlMap1.put(entry.getKey(), resultMap);
+                }
+                //把原来的sql语句替换成下拉框数据
+                ((Map) ((Map) rtem).get("showTemplate")).put("dfFormSql", JSONObject.toJSONString(sqlMap1));
+            } catch (JsonProcessingException e) {
+                e.printStackTrace();
+            }
+        });
         return relationJsonMap;
     }
 
@@ -291,8 +337,15 @@ public class CommonBtnController extends BaseController {
                     // 执行当前按钮绑定的流程-》暂无直接执行流程
                 }
             }
-            toAjax(commonService.edit(commonEntity));
-            return AjaxResult.success("启动流程成功!");
+            // 如果当前发起流程表单使用的是表单组
+            if (dragTableBtn.getBtnFormType().equals("dragFormGroup")) {
+                BpmRunNodeFormDateVo bpmRunNodeFormDateVo = JSON.parseObject(JSON.toJSONString(commonEntity.getBasicMap().get("BpmRunNodeFormDateVo")), BpmRunNodeFormDateVo.class);
+                echoNodeFormData.handleSubmitForm(bpmRunNodeFormDateVo);
+                return AjaxResult.success("启动流程成功!");
+            } else {
+                toAjax(commonService.edit(commonEntity));
+                return AjaxResult.success("启动流程成功!");
+            }
         } else if (commonEntity.getBasicMap().get("visible").toString().equals("false")) {
             Map<String, Object> map = new HashMap<>();
             DragForm dragForm;
@@ -311,7 +364,7 @@ public class CommonBtnController extends BaseController {
                 // 展示当前按钮绑定的表单
                 return success(map);
             } else if (dragTableBtn.getBtnFormType().equals("dragFormGroup")) {  // 多个表单
-
+                return success(getFormGroupInfo(commonEntity, dragTableBtn));
             } else if (dragTableBtn.getBtnFormType().equals("other")) {// 其他表单
 
             } else {
@@ -346,4 +399,5 @@ public class CommonBtnController extends BaseController {
         return AjaxResult.success(dragTableGroupService.getProcessPopupTableList(commonEntity));
     }
 
-}
+
+}

+ 0 - 1
zkqy-business/src/main/java/com/zkqy/business/controller/CommonController.java

@@ -66,7 +66,6 @@ public class CommonController extends BaseController {
     }
 
 
-
     /**
      * 批量删除
      */

+ 6 - 1
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/runbpm/PreExecutionToolClass.java

@@ -850,9 +850,11 @@ public class PreExecutionToolClass<R> {
         // ⚠️⚠️⚠️ 新增节点执行记录
         BpmExecuteNodeLog bpmExecuteNodeLog = new BpmExecuteNodeLog(currentBpmExecuteNode);
         iBpmExecuteNodeLogService.insertBpmExecuteNodeLog(bpmExecuteNodeLog);
-
+        
         // 4️⃣4️⃣4️⃣  判断是否结束审批流程  || 不通过流程直接结束 || 驳回流程直接结束
         if (approvalStatus.equals("noPass") || approvalStatus.equals("reject") || taskNextNodeType.equals("endEvent")) {
+            // 得到当前数据条的表信息,修改当前数据条的审批状态值
+            BpmApprovalStatus bpmApprovalStatus = iBpmApprovalStatusService.selectBpmApprovalStatusByTaskKey(taskProcessKey);
             // 当前节点是改流程的最后一个节点,默认执行结束节点
 
             // 审批流程结束,修改当前审批关联数据条的关联数据条的状态(bpm_approval_status)
@@ -861,6 +863,9 @@ public class PreExecutionToolClass<R> {
 
             // 更新审批的数据条状态
             iBpmApprovalStatusService.updateBpmApprovalStatusByTaskKey(new BpmApprovalStatus(status, bpmRunNodeVo.getTaskProcessKey()));
+            // 更新审批主数据条审批状态
+
+            iBpmApprovalStatusService.updateApprovalStatusByTableName(bpmApprovalStatus.getTableName(), status, bpmApprovalStatus.getTableId());
 
             // 结束当前流程
             return AjaxResult.success(runBpmExecuteProcessMapper.endProcess(bpmRunNodeVo.getTaskProcessKey()));

+ 17 - 11
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/CommonServiceImpl.java

@@ -2,7 +2,6 @@ package com.zkqy.execution.produce.dispersed.service.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
-import com.alibaba.fastjson2.JSONException;
 import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -24,7 +23,6 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -53,18 +51,26 @@ public class CommonServiceImpl implements ICommonService {
     @Override
     public int batchInsert(CommonEntity commonEntity) {
         String tableName = (String) commonEntity.getBasicMap().get("tableName");
+
+
         List<Map<String, String>> list = commonEntity.getAddListMap();
+        List<LinkedHashMap<String, String>> listAsd = new ArrayList<>();
         list.forEach(item -> {  // 批量导入数据给导入数据增加默认值
-            item.put("create_time", DateUtils.getTime());
-            item.put("create_by", SecurityUtils.getUsername());
-            item.put("create_by_id", SecurityUtils.getUserId().toString());
-            if (item.get("delFlag") == null && item.get("del_flag") == null) {
-                item.put("del_flag", "0");
+            Map<String, String> asd = new LinkedHashMap<>();
+            asd.putAll(item);
+
+            asd.put("create_time", DateUtils.getTime());
+            asd.put("create_by", SecurityUtils.getUsername());
+            asd.put("create_by_id", SecurityUtils.getUserId().toString());
+            if (asd.get("delFlag") == null && asd.get("del_flag") == null) {
+                asd.put("del_flag", "0");
             }
+            listAsd.add((LinkedHashMap<String, String>) asd);
 //            list.stream().filter(del -> del.get("del_flag") != null && del.get("del_flag").equals("0")).findFirst().get().remove("del_flag");
         });
+
         List<Map<String, Object>> mapList = new ArrayList<>();
-        for (Object obj : list) {
+        for (Object obj : listAsd) {
             Map<String, Object> map1 = (Map<String, Object>) obj;
             mapList.add(map1);
         }
@@ -85,9 +91,9 @@ public class CommonServiceImpl implements ICommonService {
         Map<String, Object> fields = JSONObject.parseObject(JSON.toJSONString(commonEntity.getCommMap()));
         Map<String, Object> endfields = new HashMap<>();
         fields.keySet().forEach(item -> {
-            if(fields.get(item).equals("A")){
+            if (fields.get(item).equals("A")) {
                 endfields.put(toUnderScoreCase(item), SecurityUtils.getUsername());
-            }else {
+            } else {
                 endfields.put(toUnderScoreCase(item), fields.get(item));
             }
             //endfields.put(toUnderScoreCase(item), fields.get(item));
@@ -110,7 +116,7 @@ public class CommonServiceImpl implements ICommonService {
         conditions.keySet().forEach(item -> {
             Object value = conditions.get(item);
             // 判断value是否为String类型且非JSON数组格式
-            if (!String.valueOf(value) .startsWith("[")) {
+            if (!String.valueOf(value).startsWith("[")) {
                 // 将单个值转换成JSON数组
                 JSONArray jsonArray = new JSONArray(Arrays.asList(String.valueOf(value)));
                 endConditions.put(toUnderScoreCase(item), jsonArray);