浏览代码

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

ZYZ 1 年之前
父节点
当前提交
ae5182f4c7
共有 100 个文件被更改,包括 4292 次插入500 次删除
  1. 1 1
      pom.xml
  2. 3 0
      zkqy-admin/pom.xml
  3. 7 0
      zkqy-admin/src/main/java/com/zkqy/ZkqyApplication.java
  4. 2 2
      zkqy-admin/src/main/java/com/zkqy/web/controller/common/CaptchaController.java
  5. 36 21
      zkqy-admin/src/main/java/com/zkqy/web/controller/common/CommonFileController.java
  6. 12 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/TestMain.java
  7. 47 47
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/DataSourceController.java
  8. 3 2
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysDictDataController.java
  9. 2 2
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysIndexController.java
  10. 10 10
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysLoginController.java
  11. 2 2
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysProfileController.java
  12. 16 3
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java
  13. 2 2
      zkqy-admin/src/main/java/com/zkqy/web/core/config/SwaggerConfig.java
  14. 0 147
      zkqy-admin/src/main/resources/application-dev.yml
  15. 0 0
      zkqy-admin/src/main/resources/application-druid.yml
  16. 128 5
      zkqy-admin/src/main/resources/application.yml
  17. 0 0
      zkqy-admin/src/main/resources/bak1/application-druid.yml
  18. 27 0
      zkqy-admin/src/main/resources/bak1/application.yml
  19. 25 9
      zkqy-admin/src/main/resources/mybatis/mybatis-config.xml
  20. 6 4
      zkqy-business/pom.xml
  21. 22 11
      zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java
  22. 37 15
      zkqy-business/src/main/java/com/zkqy/business/controller/CommonController.java
  23. 1 1
      zkqy-business/src/main/java/com/zkqy/business/controller/DragFormController.java
  24. 1 1
      zkqy-business/src/main/java/com/zkqy/business/controller/DragTableBtnController.java
  25. 2 2
      zkqy-business/src/main/java/com/zkqy/business/controller/DragTableConditionController.java
  26. 1 1
      zkqy-business/src/main/java/com/zkqy/business/controller/DragTableController.java
  27. 2 8
      zkqy-business/src/main/java/com/zkqy/business/controller/DragTableGroupController.java
  28. 2 9
      zkqy-business/src/main/java/com/zkqy/business/controller/DragTableStatisticController.java
  29. 1 1
      zkqy-business/src/main/java/com/zkqy/business/controller/DragTableStyleController.java
  30. 3 3
      zkqy-business/src/main/java/com/zkqy/business/controller/TableSqlController.java
  31. 32 0
      zkqy-business/src/main/java/com/zkqy/business/entity/BlobTypeHandler.java
  32. 0 25
      zkqy-business/src/main/java/com/zkqy/business/entity/DragTableBtn.java
  33. 1 8
      zkqy-business/src/main/java/com/zkqy/business/entity/DragTableStyle.java
  34. 1 0
      zkqy-business/src/main/java/com/zkqy/business/entity/vo/DragTableGroupVo.java
  35. 1 0
      zkqy-business/src/main/java/com/zkqy/business/entity/vo/DragTableVo.java
  36. 1 1
      zkqy-business/src/main/java/com/zkqy/business/mapper/DragTableConditionMapper.java
  37. 36 5
      zkqy-business/src/main/java/com/zkqy/business/service/IDragFormService.java
  38. 1 1
      zkqy-business/src/main/java/com/zkqy/business/service/IDragTableConditionService.java
  39. 1 1
      zkqy-business/src/main/java/com/zkqy/business/service/IDragTableGroupService.java
  40. 1 1
      zkqy-business/src/main/java/com/zkqy/business/service/IDragTableService.java
  41. 1 1
      zkqy-business/src/main/java/com/zkqy/business/service/IDragTableStatisticService.java
  42. 162 16
      zkqy-business/src/main/java/com/zkqy/business/service/impl/DragFormServiceImpl.java
  43. 1 0
      zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableBtnServiceImpl.java
  44. 1 2
      zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableConditionServiceImpl.java
  45. 5 1
      zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableGroupServiceImpl.java
  46. 3 0
      zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableServiceImpl.java
  47. 4 4
      zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableStatisticServiceImpl.java
  48. 1 1
      zkqy-business/src/main/resources/mapper/dragmapper/DragTableConditionMapper.xml
  49. 6 6
      zkqy-business/src/main/resources/mapper/dragmapper/DragTableGroupMapper.xml
  50. 1 0
      zkqy-common/src/main/java/com/zkqy/common/annotation/Anonymous.java
  51. 50 46
      zkqy-common/src/main/java/com/zkqy/common/config/ZkqyConfig.java
  52. 57 0
      zkqy-common/src/main/java/com/zkqy/common/config/bpm/BpmProperties.java
  53. 2 2
      zkqy-common/src/main/java/com/zkqy/common/config/form/FormProperties.java
  54. 21 0
      zkqy-common/src/main/java/com/zkqy/common/constant/BpmNodeTypeConstants.java
  55. 21 5
      zkqy-common/src/main/java/com/zkqy/common/constant/HttpStatus.java
  56. 2 1
      zkqy-common/src/main/java/com/zkqy/common/core/controller/BaseController.java
  57. 3 4
      zkqy-common/src/main/java/com/zkqy/common/core/domain/AjaxResult.java
  58. 19 26
      zkqy-common/src/main/java/com/zkqy/common/core/domain/BaseEntity.java
  59. 159 0
      zkqy-common/src/main/java/com/zkqy/common/core/domain/BaseEntityPlus.java
  60. 1 0
      zkqy-common/src/main/java/com/zkqy/common/core/domain/TreeEntity.java
  61. 3 1
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysDept.java
  62. 2 1
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysDictData.java
  63. 2 1
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysDictType.java
  64. 2 1
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysMenu.java
  65. 2 1
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysRole.java
  66. 2 1
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysUser.java
  67. 19 0
      zkqy-common/src/main/java/com/zkqy/common/utils/MapWrapperFactory.java
  68. 51 0
      zkqy-common/src/main/java/com/zkqy/common/utils/MyMapWrapper.java
  69. 34 0
      zkqy-common/src/main/java/com/zkqy/common/utils/bpm/BpmUtils.java
  70. 302 0
      zkqy-common/src/main/java/com/zkqy/common/utils/bpm/XmlDataParserUtils.java
  71. 3 3
      zkqy-common/src/main/java/com/zkqy/common/utils/file/FileUploadUtils.java
  72. 2 2
      zkqy-common/src/main/java/com/zkqy/common/utils/file/FileUtils.java
  73. 2 2
      zkqy-common/src/main/java/com/zkqy/common/utils/file/ImageUtils.java
  74. 0 1
      zkqy-common/src/main/java/com/zkqy/common/utils/form/FromUtils.java
  75. 2 2
      zkqy-common/src/main/java/com/zkqy/common/utils/ip/AddressUtils.java
  76. 2 2
      zkqy-common/src/main/java/com/zkqy/common/utils/poi/ExcelUtil.java
  77. 5 0
      zkqy-framework/pom.xml
  78. 2 1
      zkqy-framework/src/main/java/com/zkqy/framework/aspectj/DataScopeAspect.java
  79. 0 1
      zkqy-framework/src/main/java/com/zkqy/framework/aspectj/SqlInterceptorAopAspect.java
  80. 2 2
      zkqy-framework/src/main/java/com/zkqy/framework/config/ResourcesConfig.java
  81. 0 4
      zkqy-framework/src/main/java/com/zkqy/framework/web/service/SysLoginService.java
  82. 29 0
      zkqy-process-execution/pom.xml
  83. 94 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmExecuteNodeController.java
  84. 93 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmExecuteNodeFormController.java
  85. 92 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmExecuteNodeMiddleController.java
  86. 121 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmExecuteProcessController.java
  87. 99 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmRunController.java
  88. 39 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmScriptController.java
  89. 370 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteNode.java
  90. 138 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteNodeForm.java
  91. 436 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteNodeLog.java
  92. 150 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteNodeMiddle.java
  93. 200 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteProcess.java
  94. 98 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmNodeHandleUser.java
  95. 138 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmNodeScript.java
  96. 140 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmNodeScriptRelevance.java
  97. 245 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmProcess.java
  98. 264 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmProcessConfiguration.java
  99. 108 5
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/CommonEntity.java
  100. 3 3
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/TableSql.java

+ 1 - 1
pom.xml

@@ -157,7 +157,6 @@
                 <artifactId>zkqy-common</artifactId>
                 <version>${ruoyi.version}</version>
             </dependency>
-
             <!-- mybatis-plus -->
             <dependency>
                 <groupId>com.baomidou</groupId>
@@ -193,6 +192,7 @@
         <module>zkqy-system</module>
         <module>zkqy-common</module>
         <module>zkqy-business</module>
+        <module>zkqy-process-execution</module>
     </modules>
     <packaging>pom</packaging>
     <dependencies>

+ 3 - 0
zkqy-admin/pom.xml

@@ -48,17 +48,20 @@
             <groupId>com.zkqy</groupId>
             <artifactId>zkqy-framework</artifactId>
         </dependency>
+        <!--业务模块-->
         <dependency>
             <groupId>com.zkqy</groupId>
             <artifactId>zkqy-business</artifactId>
             <version>3.8.5</version>
         </dependency>
+        <!--谷歌的JSON转换工具GSON-->
         <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
             <version>2.10.1</version>
             <scope>compile</scope>
         </dependency>
+
     </dependencies>
 
     <build>

+ 7 - 0
zkqy-admin/src/main/java/com/zkqy/ZkqyApplication.java

@@ -3,6 +3,10 @@ package com.zkqy;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+
+import java.util.Arrays;
 
 /**
  * 启动程序
@@ -25,5 +29,8 @@ public class ZkqyApplication
                 " |  | \\ `'   /|   `-'  /           \n" +
                 " |  |  \\    /  \\      /           \n" +
                 " ''-'   `'-'    `-..-'              ");
+        ////输出容器中所有bean
+        //ApplicationContext context = SpringApplication.run(ZkqyApplication.class, args);
+        //Arrays.stream(context.getBeanDefinitionNames()).forEach(System.out::println);
     }
 }

+ 2 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/common/CaptchaController.java

@@ -11,7 +11,7 @@ import org.springframework.util.FastByteArrayOutputStream;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import com.google.code.kaptcha.Producer;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.constant.CacheConstants;
 import com.zkqy.common.constant.Constants;
 import com.zkqy.common.core.domain.AjaxResult;
@@ -61,7 +61,7 @@ public class CaptchaController
         BufferedImage image = null;
 
         // 生成验证码
-        String captchaType = RuoYiConfig.getCaptchaType();
+        String captchaType = ZkqyConfig.getCaptchaType();
         if ("math".equals(captchaType))
         {
             String capText = captchaProducerMath.createText();

+ 36 - 21
zkqy-admin/src/main/java/com/zkqy/web/controller/common/CommonFileController.java

@@ -4,20 +4,21 @@ import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.TypeReference;
-import com.zkqy.business.entity.CommonEntity;
-import com.zkqy.business.entity.TableSql;
-import com.zkqy.business.service.ICommonService;
-import com.zkqy.business.service.ITableSqlService;
+import com.zkqy.business.entity.DragTable;
+import com.zkqy.business.service.IDragTableService;
 import com.zkqy.common.annotation.Anonymous;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.constant.Constants;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.utils.StringUtils;
 import com.zkqy.common.utils.file.FileUploadUtils;
 import com.zkqy.common.utils.file.FileUtils;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.TableSql;
+import com.zkqy.execution.produce.dispersed.service.ICommonService;
+import com.zkqy.execution.produce.dispersed.service.ITableSqlService;
 import com.zkqy.framework.config.ServerConfig;
-import com.zkqy.system.service.IDataSourceService;
-import com.zkqy.web.controller.dragForm.CommonController;
+import com.zkqy.business.controller.CommonController;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,8 +49,8 @@ public class CommonFileController {
     @Autowired
     private ServerConfig serverConfig;
 
-    @Resource
-    private IDataSourceService dataSourceService;
+    //@Resource
+    //private IDataSourceService dataSourceService;
 
     @Resource
     private ICommonService commonService;
@@ -57,6 +58,9 @@ public class CommonFileController {
     @Resource
     private ITableSqlService iTableSqlService;
 
+    @Resource
+    private IDragTableService dragTableService;
+
     private static final String FILE_DELIMETER = ",";
 
     /**
@@ -92,7 +96,7 @@ public class CommonFileController {
                 throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
             }
             String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
-            String filePath = RuoYiConfig.getDownloadPath() + fileName;
+            String filePath = ZkqyConfig.getDownloadPath() + fileName;
 
             response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
             FileUtils.setAttachmentResponseHeader(response, realFileName);
@@ -112,7 +116,7 @@ public class CommonFileController {
     public AjaxResult uploadFile(MultipartFile file) throws Exception {
         try {
             // 上传文件路径
-            String filePath = RuoYiConfig.getUploadPath();
+            String filePath = ZkqyConfig.getUploadPath();
             // 上传并返回新文件名称
             String fileName = FileUploadUtils.upload(filePath, file);
             String url = serverConfig.getUrl() + fileName;
@@ -134,7 +138,7 @@ public class CommonFileController {
     public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception {
         try {
             // 上传文件路径
-            String filePath = RuoYiConfig.getUploadPath();
+            String filePath = ZkqyConfig.getUploadPath();
             List<String> urls = new ArrayList<String>();
             List<String> fileNames = new ArrayList<String>();
             List<String> newFileNames = new ArrayList<String>();
@@ -170,7 +174,7 @@ public class CommonFileController {
                 throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
             }
             // 本地资源路径
-            String localPath = RuoYiConfig.getProfile();
+            String localPath = ZkqyConfig.getProfile();
             // 数据库资源地址
             String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
             // 下载名称
@@ -194,19 +198,25 @@ public class CommonFileController {
         try {
             // 创建一个工作簿对象 解析上传的excel表数据
             List<Map<String, String>> listMap = convertList(EasyExcel.read(file.getInputStream()).sheet().headRowNumber(0).doReadSync());
-
+            // 校验表格数据是否为空
             if (listMap.size() <= 1) {
                 return AjaxResult.warn("请检查表格中的数据!");
             }
             // 得到当前导出入数据的格式k/v
-            TableSql tableSql = iTableSqlService.selectTableSqlByTSqlKey(sqlKey);
+            DragTable dragTable = dragTableService.selectSqlKeyByTableKey(sqlKey);
+            if (dragTable.getSqlKey().isEmpty()) {
+                return AjaxResult.error("网络出现问题,请等待网络恢复!");
+            }
+            // 根据tableKey查询sqlKey(虽然是getSqlKey但是拿到的是tableKey)
+            TableSql tableSql = iTableSqlService.selectTableSqlByTSqlKey(dragTable.getSqlKey());
             // 存储 字段描述:字段列名
             Map<String, Object> fieldMap = (Map<String, Object>) JSON.parse(tableSql.getTableExportField());
             Map<String, Object> endFieldMap = new HashMap<>();
             // 处理导入title对应问题,双重校验
             fieldMap.forEach((mKey, mVal) -> {
                 if (!mKey.contains("@")) {
-                    endFieldMap.put(mVal.toString(), mKey);
+                    // 表示列名 删除掉表名称
+                    endFieldMap.put(mVal.toString(), mKey.replace(tableName + "_", ""));
                 } else {
                     // 定义新的title map集合
                     Map<String, String> map = listMap.get(0);
@@ -219,13 +229,17 @@ public class CommonFileController {
                 }
             });
             listMap.get(0).forEach((mKey, mVal) -> {
-                if (mVal != null)
-                    if (endFieldMap.get(mVal) != null)
+                if (mVal != null) {
+                    if (endFieldMap.get(mVal) != null) {
                         listMap.get(0).put(mKey, endFieldMap.get(mVal).toString());
+                    }
+                }
             });
             // 挣个excel文件数据
             listMap.forEach(item -> {
-                if (listMap.indexOf(item) == 0) return;
+                if (listMap.indexOf(item) == 0) {
+                    return;
+                }
                 Map<String, String> handleMap = new HashMap<>(item);
                 handleMap.forEach((mKey, mVal) -> {
                     // 新增       // 删除当前map中的k/v
@@ -236,8 +250,9 @@ public class CommonFileController {
             });
             listMap.remove(0);
             CommonEntity commonEntity = new CommonEntity();
-            commonEntity.setBasicMap(JSONObject.parseObject("{ \"tableName\":\"" + tableName + "\"}", new TypeReference<Map<String, Object>>() {
-            }));
+            commonEntity.setBasicMap(
+                    JSONObject.parseObject("{ \"tableName\":\"" + tableName + "\"}", new TypeReference<Map<String, Object>>() {})
+            );
             int state = 0;  // 返回状态值
             int batchSize = 1000; // 设置批量新增每次执行添加sql上线为1000条
             for (int i = 0; i < listMap.size(); i += batchSize) {

+ 12 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/TestMain.java

@@ -0,0 +1,12 @@
+package com.zkqy.web.controller.dragForm;
+
+
+import java.util.HashMap;
+
+public class TestMain {
+    public static void main(String[] args) {
+        HashMap<String, Integer> e=new HashMap<>();
+        e.remove("a");
+    }
+
+}

+ 47 - 47
zkqy-admin/src/main/java/com/zkqy/web/controller/system/DataSourceController.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.domain.entity.DataSource;
+import com.zkqy.common.utils.SecurityUtils;
 import com.zkqy.system.service.IDataSourceService;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
@@ -16,53 +17,53 @@ import java.util.Map;
 @RequestMapping("/dataSource")
 public class DataSourceController extends BaseController {
 
-    @Resource
-    private IDataSourceService dataSourceService;
-
-    RestTemplate restTemplate = new RestTemplate();
-
-    /**
-     * 数据引擎切换数据源接口地址
-     */
-    @Value("${parameter.ip.DATA_ENGINE_IP}")
-    public String DATA_ENGINE_IP;
-
-    /**
-     * 动态表单切换数据源接口地址
-     */
-    @Value("${parameter.ip.DRAG_FORM_IP}")
-    public String DRAG_FORM_IP;
-
-    @Value("${parameter.ip.PROCESS_ENGINE_IP}")
-    public String PROCESS_ENGINE_IP;
-
-
-    /**
-     * 数据源信息列表
-     */
-//    @GetMapping("/list")
-//    public AjaxResult dataSourceList(){
-//        return AjaxResult.success(dataSourceService.list());
+    //@Resource
+    //private IDataSourceService dataSourceService;
+//
+//    RestTemplate restTemplate = new RestTemplate();
+//
+//    /**
+//     * 数据引擎切换数据源接口地址
+//     */
+//    @Value("${parameter.ip.DATA_ENGINE_IP}")
+//    public String DATA_ENGINE_IP;
+//
+//    /**
+//     * 动态表单切换数据源接口地址
+//     */
+//    @Value("${parameter.ip.DRAG_FORM_IP}")
+//    public String DRAG_FORM_IP;
+//
+//    @Value("${parameter.ip.PROCESS_ENGINE_IP}")
+//    public String PROCESS_ENGINE_IP;
+//
+//
+//    /**
+//     * 数据源信息列表
+//     */
+////    @GetMapping("/list")
+////    public AjaxResult dataSourceList(){
+////        return AjaxResult.success(dataSourceService.list());
+////    }
+//
+//    /**
+//     * 新增数据源
+//     */
+//    @PostMapping("/save")
+//    public AjaxResult addDataSource(@RequestBody Map<String, Object> map) {
+//
+//        DataSource dataSource = JSON.parseObject(JSON.toJSONString(map.get("dataSource")), DataSource.class);
+//        Integer tenantId = (Integer) map.get("tenantId");
+//        if (dataSourceService.selectDatabaseExist(dataSource) > 0) {
+//            return AjaxResult.error("数据库已存在");
+//        }
+//        //return toAjax(dataSourceService.insertDataSource(dataSource,tenantId.longValue()));
+//        return dataSourceService.insertDataSource(dataSource, tenantId.longValue());
 //    }
-
-    /**
-     * 新增数据源
-     */
-    @PostMapping("/save")
-    public AjaxResult addDataSource(@RequestBody Map<String, Object> map) {
-
-        DataSource dataSource = JSON.parseObject(JSON.toJSONString(map.get("dataSource")), DataSource.class);
-        Integer tenantId = (Integer) map.get("tenantId");
-        if (dataSourceService.selectDatabaseExist(dataSource) > 0) {
-            return AjaxResult.error("数据库已存在");
-        }
-        //return toAjax(dataSourceService.insertDataSource(dataSource,tenantId.longValue()));
-        return dataSourceService.insertDataSource(dataSource, tenantId.longValue());
-    }
-
-    /**
-     * 调用(数据引擎、流程引擎、表单引擎)切换数据源接口
-     */
+//
+//    /**
+//     * 调用(数据引擎、流程引擎、表单引擎)切换数据源接口
+//     */
     @PostMapping("/changeDatasource")
     public AjaxResult changeDatasource() {
         // admin 没有数据源
@@ -76,5 +77,4 @@ public class DataSourceController extends BaseController {
 //        restTemplate.postForEntity(PROCESS_ENGINE_IP, dataSource, DataSource.class);
         return AjaxResult.success();
     }
-
 }

+ 3 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysDictDataController.java

@@ -78,10 +78,11 @@ public class SysDictDataController extends BaseController
     @GetMapping(value = "/type/{dictType}")
     public AjaxResult dictType(@PathVariable String dictType)
     {
-        List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
+        List<SysDictData> data = dictTypeService.selectDictDataByTypeAll(dictType);
+        System.out.println("ddddd");
         if (StringUtils.isNull(data))
         {
-            data = new ArrayList<SysDictData>();
+            data = new ArrayList<>();
         }
         return success(data);
     }

+ 2 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysIndexController.java

@@ -3,7 +3,7 @@ package com.zkqy.web.controller.system;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.utils.StringUtils;
 
 /**
@@ -16,7 +16,7 @@ public class SysIndexController
 {
     /** 系统基础配置 */
     @Autowired
-    private RuoYiConfig ruoyiConfig;
+    private ZkqyConfig ruoyiConfig;
 
     /**
      * 访问首页,提示语

+ 10 - 10
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysLoginController.java

@@ -49,26 +49,26 @@ public class SysLoginController {
     @Resource
     private SysTenantServiceImpl sysTenantService;
 
-    @Resource
-    private IDataSourceService dataSourceService;
+    //@Resource
+    //private IDataSourceService dataSourceService;
 
     /**
      * 数据引擎切换数据源接口地址
      */
-    @Value("${parameter.ip.DATA_ENGINE_IP}")
-    public String DATA_ENGINE_IP;
+    //@Value("${parameter.ip.DATA_ENGINE_IP}")
+    //public String DATA_ENGINE_IP;
 
     /**
      * 动态表单切换数据源接口地址
      */
-    @Value("${parameter.ip.DRAG_FORM_IP}")
-    public String DRAG_FORM_IP;
+    //@Value("${parameter.ip.DRAG_FORM_IP}")
+    //public String DRAG_FORM_IP;
 
     /**
      * 流程引擎切换数据源地址接口
      */
-    @Value("${parameter.ip.PROCESS_ENGINE_IP}")
-    public String PROCESS_ENGINE_IP;
+    //@Value("${parameter.ip.PROCESS_ENGINE_IP}")
+    //public String PROCESS_ENGINE_IP;
 
     RestTemplate restTemplate = new RestTemplate();
 
@@ -124,8 +124,8 @@ public class SysLoginController {
             SysTenant sysTenant = sysTenantService.selectSysTenantByTenantId(user.getTenantId());
             ajax.put("tenant", sysTenant);
             //数据源信息
-            DataSource dataSource = dataSourceService.selectById(sysTenant.getDatasourceId());
-            ajax.put("dataSource", dataSource);
+            //DataSource dataSource = dataSourceService.selectById(sysTenant.getDatasourceId());
+            ajax.put("dataSource", null);
         }
         return ajax;
     }

+ 2 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysProfileController.java

@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import com.zkqy.common.annotation.Log;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.domain.entity.SysUser;
@@ -125,7 +125,7 @@ public class SysProfileController extends BaseController
         if (!file.isEmpty())
         {
             LoginUser loginUser = getLoginUser();
-            String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
+            String avatar = FileUploadUtils.upload(ZkqyConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
             if (userService.updateUserAvatar(loginUser.getUsername(), avatar))
             {
                 AjaxResult ajax = AjaxResult.success();

+ 16 - 3
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java

@@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.alibaba.fastjson2.JSON;
 import com.zkqy.common.annotation.Anonymous;
+import com.zkqy.system.domain.SysPost;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -110,8 +111,20 @@ public class SysUserController extends BaseController
         userService.checkUserDataScope(userId);
         AjaxResult ajax = AjaxResult.success();
         List<SysRole> roles = roleService.selectRoleAll();
-        ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin() && r.getTenantId() == getTenantId()).collect(Collectors.toList()));
-        ajax.put("posts", postService.selectPostAll().stream().filter(p -> p.getTenantId() == getTenantId()).collect(Collectors.toList()));
+        roles.forEach(r -> {
+            if(r.getTenantId() == null){
+                r.setTenantId(0L);
+            }
+        });
+        List<SysPost> sysPosts = postService.selectPostAll();
+        sysPosts.forEach(s -> {
+            if (s.getTenantId() == null){
+                s.setTenantId(0L);
+            }
+        });
+
+        ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin() && r.getTenantId().equals(getTenantId())).collect(Collectors.toList()));
+        ajax.put("posts", sysPosts.stream().filter(p -> p.getTenantId().equals(getTenantId())).collect(Collectors.toList()));
         if (StringUtils.isNotNull(userId))
         {
             SysUser sysUser = userService.selectUserById(userId);
@@ -232,7 +245,7 @@ public class SysUserController extends BaseController
         SysUser user = userService.selectUserById(userId);
         List<SysRole> roles = roleService.selectRolesByUserId(userId);
         ajax.put("user", user);
-        ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin() && r.getTenantId() == getTenantId()).collect(Collectors.toList()));
+        ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin() && r.getTenantId().equals(getTenantId())).collect(Collectors.toList()));
         return ajax;
     }
 

+ 2 - 2
zkqy-admin/src/main/java/com/zkqy/web/core/config/SwaggerConfig.java

@@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.models.auth.In;
 import springfox.documentation.builders.ApiInfoBuilder;
@@ -32,7 +32,7 @@ public class SwaggerConfig
 {
     /** 系统基础配置 */
     @Autowired
-    private RuoYiConfig ruoyiConfig;
+    private ZkqyConfig ruoyiConfig;
 
     /** 是否开启swagger */
     @Value("${swagger.enabled}")

+ 0 - 147
zkqy-admin/src/main/resources/application-dev.yml

@@ -1,147 +0,0 @@
-# 项目相关配置
-zkqy:
-  # 名称
-  name: zkqy
-  # 版本
-  version: 3.8.5
-  # 版权年份
-  copyrightYear: 2023
-  # 实例演示开关
-  demoEnabled: true
-  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: C:/log
-  # 获取ip地址开关
-  addressEnabled: false
-  # 验证码类型 math 数组计算 char 字符验证
-  captchaType: math
-
-# 开发环境配置
-server:
-  # 服务器的HTTP端口,默认为8080
-  port: 8066
-  servlet:
-    # 应用的访问路径
-    context-path: /
-  tomcat:
-    # tomcat的URI编码
-    uri-encoding: UTF-8
-    # 连接数满后的排队数,默认为100
-    accept-count: 1000
-    threads:
-      # tomcat最大线程数,默认为200
-      max: 800
-      # Tomcat启动初始化的线程数,默认值10
-      min-spare: 100
-
-# 日志配置
-logging:
-  level:
-    com.zkqy: debug
-    org.springframework: warn
-
-# 用户配置
-user:
-  password:
-    # 密码最大错误次数
-    maxRetryCount: 5
-    # 密码锁定时间(默认10分钟)
-    lockTime: 10
-
-# Spring配置
-spring:
-  # 资源信息
-  messages:
-    # 国际化资源文件路径
-    basename: i18n/messages
-  # 文件上传
-  servlet:
-    multipart:
-      # 单个文件大小
-      max-file-size: 10MB
-      # 设置总上传的文件大小
-      max-request-size: 20MB
-  # 服务模块
-  devtools:
-    restart:
-      # 热部署开关
-      enabled: true
-  # redis 配置
-  redis:
-    # 地址
-    host: 192.168.110.15
-    # 端口,默认为6379
-    port: 6379
-    # 数据库索引
-    database: 11
-    # 密码
-    password:
-    # 连接超时时间
-    timeout: 10s
-    lettuce:
-      pool:
-        # 连接池中的最小空闲连接
-        min-idle: 0
-        # 连接池中的最大空闲连接
-        max-idle: 8
-        # 连接池的最大数据库连接数
-        max-active: 8
-        # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
-
-# token配置
-token:
-  # 令牌自定义标识
-  header: Authorization
-  # 令牌密钥
-  secret: abcdefghijklmnopqrstuvwxyz
-  # 令牌有效期(默认30分钟)
-  expireTime: 3000000
-
-# MyBatis配置
-mybatis:
-  # 搜索指定包别名
-  typeAliasesPackage: com.zkqy.**.domain
-  # 配置mapper的扫描,找到所有的mapper.xml映射文件
-  mapperLocations: classpath*:mapper/**/*Mapper.xml
-  # 加载全局的配置文件
-  configLocation: classpath:mybatis/mybatis-config.xml
-
-# PageHelper分页插件
-pagehelper:
-  helperDialect: mysql
-  supportMethodsArguments: true
-  params: count=countSql
-
-# Swagger配置
-swagger:
-  # 是否开启swagger
-  enabled: true
-  # 请求前缀
-  pathMapping: /dev-api
-
-# 防止XSS攻击
-xss:
-  # 过滤开关
-  enabled: true
-  # 排除链接(多个用逗号分隔)
-  excludes: /system/notice
-  # 匹配链接
-  urlPatterns: /system/*,/monitor/*,/tool/*
-
-# 参数配置项
-parameter:
-  ip:
-    # 数据引擎切换数据源接口地址
-    DATA_ENGINE_IP: http://localhost:8099/dataSource/changeDataSource
-    # 动态表单切换数据源接口地址
-    DRAG_FORM_IP: http://localhost:8088/dataSource/changeDataSource
-    # 流程引擎切换数据源接口地址
-    PROCESS_ENGINE_IP: http://localhost:8055/dataSource/changeDataSource
-    #数据引擎初始化数据库表接口地址
-    DATA_ENGINE_INITDATABASE_IP: http://localhost:8099/tableInfo/initDatabase
-
-bpm:
-  runbpmurl: http://localhost:8055/system/runbpm/process/productionScheduling
-
-script:
-  runscripturl: http://localhost:8055/system/script/execute

+ 0 - 0
zkqy-admin/src/main/resources/application-dev-druid.yml → zkqy-admin/src/main/resources/application-druid.yml


+ 128 - 5
zkqy-admin/src/main/resources/application.yml

@@ -1,8 +1,131 @@
-# 指定使用的环境
+# 项目相关配置
+zkqy:
+  # 名称
+  name: zkqy
+  # 版本
+  version: 3.8.5
+  # 版权年份
+  copyrightYear: 2023
+  # 实例演示开关
+  demoEnabled: true
+  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
+  profile: C:/log
+  # 获取ip地址开关
+  addressEnabled: false
+  # 验证码类型 math 数组计算 char 字符验证
+  captchaType: math
+
+# 开发环境配置
+server:
+  # 服务器的HTTP端口,默认为8080
+  port: 8066
+  servlet:
+    # 应用的访问路径
+    context-path: /
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+    # 连接数满后的排队数,默认为100
+    accept-count: 1000
+    threads:
+      # tomcat最大线程数,默认为200
+      max: 800
+      # Tomcat启动初始化的线程数,默认值10
+      min-spare: 100
+
+# 日志配置
+logging:
+  level:
+    com.zkqy: debug
+    org.springframework: warn
+
+# 用户配置
+user:
+  password:
+    # 密码最大错误次数
+    maxRetryCount: 5
+    # 密码锁定时间(默认10分钟)
+    lockTime: 10
+
+# Spring配置
 spring:
+  # 资源信息
+  messages:
+    # 国际化资源文件路径
+    basename: i18n/messages
   profiles:
-    active: dev # 指定的事开发环境
-    group:
-      "dev": dev-druid
-      "prod": prod-druid
+    active: druid
+  # 文件上传
+  servlet:
+    multipart:
+      # 单个文件大小
+      max-file-size: 10MB
+      # 设置总上传的文件大小
+      max-request-size: 20MB
+  # 服务模块
+  devtools:
+    restart:
+      # 热部署开关
+      enabled: true
+  # redis 配置
+  redis:
+    # 地址
+    host: 192.168.110.15
+    # 端口,默认为6379
+    port: 6379
+    # 数据库索引
+    database: 11
+    # 密码
+    password:
+    # 连接超时时间
+    timeout: 10s
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 0
+        # 连接池中的最大空闲连接
+        max-idle: 8
+        # 连接池的最大数据库连接数
+        max-active: 8
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1ms
+
+# token配置
+token:
+  # 令牌自定义标识
+  header: Authorization
+  # 令牌密钥
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 令牌有效期(默认30分钟)
+  expireTime: 3000000
+
+# MyBatis配置
+mybatis:
+  # 搜索指定包别名
+  typeAliasesPackage: com.zkqy.**.domain
+  # 配置mapper的扫描,找到所有的mapper.xml映射文件
+  mapperLocations: classpath*:mapper/**/*Mapper.xml
+  # 加载全局的配置文件
+  configLocation: classpath:mybatis/mybatis-config.xml
+
+# PageHelper分页插件
+pagehelper:
+  helperDialect: mysql
+  supportMethodsArguments: true
+  params: count=countSql
+
+# Swagger配置
+swagger:
+  # 是否开启swagger
+  enabled: true
+  # 请求前缀
+  pathMapping: /dev-api
 
+# 防止XSS攻击
+xss:
+  # 过滤开关
+  enabled: true
+  # 排除链接(多个用逗号分隔)
+  excludes: /system/notice
+  # 匹配链接
+  urlPatterns: /system/*,/monitor/*,/tool/*

+ 0 - 0
zkqy-admin/src/main/resources/application-prod-druid.yml → zkqy-admin/src/main/resources/bak1/application-druid.yml


+ 27 - 0
zkqy-admin/src/main/resources/application-prod.yml → zkqy-admin/src/main/resources/bak1/application.yml

@@ -142,6 +142,33 @@ parameter:
     #数据引擎初始化数据库表接口地址
     DATA_ENGINE_INITDATABASE_IP: http://localhost:8099/tableInfo/initDatabase
 
+    # 用户下对应的所有角色key
+    MAIN_ROLESKEY_IP: http://localhost:8080/system/user/roleKeyByUserId
+    # CRM项目根据scriptKey获取节点脚本详情地址
+    GET_NODESCRIPT_IP: http://localhost:8080/system/script/selectSysBpmNodeScriptByScriptKey/{scriptKey}
+    # crm项目查看角色下是否存在真实用户
+    QUERY_USER_EXISTS_BY_ROLEKEY_IP: http://localhost:8080/system/role/selectUserByRoleKey/{roleKeys}
+    # crm项目查看一组用户是否存在真实用户
+    QUERY_USER_EXISTS_BY_USERIDS_IP: http://localhost:8080/system/user/selectUserByUserIds/{userIds}
+    # form项目共通修改接口
+    FORM_COMMON_UPDATE_IP: http://localhost:8088/dragform/common/batchEdit
+    #from项目共通获取详情接口
+    FORM_COMMON_GETINFO_IP: http://localhost:8088/dragform/common/getInfo
+    # form项目共通新增接口
+    FORM_COMMON_BATCHINSERT_IP: http://localhost:8088/dragform/common/batchInsert
+    # CRM项目根据scriptKeys获取节点脚本详情地址
+    GET_NODESCRIPTS_IP: http://localhost:8080/system/script/selectSysBpmNodeScriptByScriptKeys
+    # 租户字典:根据字典类型得到当前字典下的所有的数据
+    GET_TENANT_DICT_IP: http://localhost:8088/system/dict/data/list
+    # form项目共通新增接口
+    FORM_COMMON_INSERT_IP: http://localhost:8088/dragform/common/batchInsert
+    # form项目根据表单Fid查询详情接口
+    FORM_GET_FORM_INFO_IP: http://localhost:8088/dragform/form/{fId}
+    # from项目根据groupKey查询表格组信息
+    FORM_GET_GROUP_INFO_IP: http://localhost:8088/system/group/getInfoBySqlKey/{groupKey}
+    # CRM项目获取所有模板库数据表
+    CRM_QUERY_TEMPLATEBASE_TABLE: http://localhost:8080/system/templateBase/queryTemplateBaseTable
+
 bpm:
   runbpmurl: http://localhost:8055/system/runbpm/process/productionScheduling
 

+ 25 - 9
zkqy-admin/src/main/resources/mybatis/mybatis-config.xml

@@ -1,22 +1,38 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE configuration
-PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-config.dtd">
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-config.dtd">
 <configuration>
+
     <!-- 全局参数 -->
     <settings>
         <!-- 使全局的映射器启用或禁用缓存 -->
-        <setting name="cacheEnabled"             value="true"   />
+        <setting name="cacheEnabled" value="true"/>
         <!-- 允许JDBC 支持自动生成主键 -->
-        <setting name="useGeneratedKeys"         value="true"   />
+        <setting name="useGeneratedKeys" value="true"/>
         <!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->
-        <setting name="defaultExecutorType"      value="SIMPLE" />
-		<!-- 指定 MyBatis 所用日志的具体实现 -->
-        <setting name="logImpl"                  value="SLF4J"  />
+        <setting name="defaultExecutorType" value="SIMPLE"/>
+        <!-- 指定 MyBatis 所用日志的具体实现 -->
+        <setting name="logImpl" value="SLF4J"/>
         <!-- 使用驼峰命名法转换字段 -->
-		<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
-	</settings>
+        <setting name="mapUnderscoreToCamelCase" value="true"/>
+        <!-- value为空时显示key -->
+        <setting name="callSettersOnNulls" value="true"/>
+        <!--驼峰转换-->
+        <setting name="mapUnderscoreToCamelCase" value="true"/>
+    </settings>
+
+    <!-- 类型处理器-->
+    <typeHandlers>
+        <typeHandler handler="com.zkqy.system.domain.BlobTypeHandler"/>
+    </typeHandlers>
+
+    <!-- 重写驼峰转换工具类  -->
+    <objectWrapperFactory type="com.zkqy.common.utils.MapWrapperFactory"/>
+
+    <!-- sql拦截器 -->
     <plugins>
         <plugin interceptor="com.zkqy.framework.aspectj.SqlInterceptor"/>
     </plugins>
+
 </configuration>

+ 6 - 4
zkqy-business/pom.xml

@@ -13,14 +13,11 @@
     <name>zkqy-business</name>
 
     <dependencies>
-        <dependency>
-            <groupId>com.zkqy</groupId>
-            <artifactId>zkqy-common</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.zkqy</groupId>
             <artifactId>zkqy-framework</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>easyexcel</artifactId>
@@ -33,6 +30,11 @@
             <version>2.10.1</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-process-execution</artifactId>
+            <version>3.8.5</version>
+        </dependency>
     </dependencies>
 
     <properties>

+ 22 - 11
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/CommonBtnController.java → zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java

@@ -1,19 +1,20 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragForm;
 import com.zkqy.business.entity.DragTableBtn;
-import com.zkqy.business.mapper.DragTableMapper;
-import com.zkqy.business.service.ICommonService;
 import com.zkqy.business.service.IDragFormService;
 import com.zkqy.business.service.IDragTableBtnService;
 import com.zkqy.business.service.IDragTableGroupService;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.utils.form.FromUtils;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.runbpm.PreExecutionToolClass;
+import com.zkqy.execution.produce.dispersed.runbpm.RunImplementationClass;
+import com.zkqy.execution.produce.dispersed.service.ICommonService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
 import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.Map;
@@ -25,6 +26,7 @@ import java.util.Map;
 @RestController
 @RequestMapping("/dragform/commonbtn")
 public class CommonBtnController extends BaseController {
+
     @Resource   // 共通crud
     private ICommonService commonService;
 
@@ -37,12 +39,16 @@ public class CommonBtnController extends BaseController {
     @Resource
     private FromUtils fromUtils;
 
-    @Resource
-    private DragTableMapper dragTableMapper;
 
     @Resource
     private IDragTableGroupService dragTableGroupService;
 
+    @Autowired
+    private PreExecutionToolClass ipreExecutionToolClass;
+
+    @Resource
+    private RunImplementationClass irunImplementationClass;
+
     /**
      * 处理按钮通用接口(新增、修改、删除...)
      * 判断什么类型走什么接口: visible  false代表弹窗未开启时走回显表单模板及数据信息接口;true代表弹窗开启时走保存数据接口
@@ -106,13 +112,18 @@ public class CommonBtnController extends BaseController {
                 // 根据流程的key判断当前按钮是否执行触发流程
                 if (!dragTableBtn.getBtnProcessKey().isEmpty()) {
                     // 调用发起流程接口
-                    fromUtils.runBpmProductionScheduling(commonEntity);
+                    //fromUtils.runBpmProductionScheduling(commonEntity);
+                    ipreExecutionToolClass.ReadyToExecute(commonEntity);
 //                    if (dragTableBtn.getBtnFormKey().isEmpty()) {  // 校验当前按钮是否是直接触发流程 或者脚本 (新增按钮类型)
 //                        fromUtils.runBpmProductionScheduling(commonEntity);
 //                    }
                 } else if (!dragTableBtn.getBtnScriptKey().isEmpty()) {
                     // 调用执行脚本接口
-                    fromUtils.triggerScript(commonEntity);
+                    logger.info("执行脚本接口");
+                     fromUtils.triggerScript(commonEntity);
+                    //IScriptEntity iScriptEntity = new IScriptEntity();
+                    //iScriptEntity.setScriptFlowKey(commonEntity.toString()); // 脚本别名
+                    //irunImplementationClass.RunScriptImplementationClassLogicCode(iScriptEntity,commonEntity.toString());
                 }
             }
             return toAjax(commonService.edit(commonEntity));
@@ -186,7 +197,8 @@ public class CommonBtnController extends BaseController {
                     //  表示对当前操作是及时选择的流程模板
                     if (dragTableBtn.getBtnProcessKey().equals("unknown")) {
                         // 调用发起流程接口
-                        fromUtils.runBpmProductionScheduling(commonEntity);
+                        //fromUtils.runBpmProductionScheduling(commonEntity);
+                        ipreExecutionToolClass.ReadyToExecute(commonEntity);
                     } else {
                         // 执行当前按钮绑定的流程-》暂无直接执行流程
                     }
@@ -226,5 +238,4 @@ public class CommonBtnController extends BaseController {
         return AjaxResult.success(dragTableGroupService.getProcessPopupTableList(commonEntity));
     }
 
-
 }

+ 37 - 15
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/CommonController.java → zkqy-business/src/main/java/com/zkqy/business/controller/CommonController.java

@@ -1,18 +1,20 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragForm;
-import com.zkqy.business.entity.TableSql;
 import com.zkqy.business.service.*;
 import com.zkqy.common.constant.ButtonTypeConstants;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.page.TableDataInfo;
 import com.zkqy.common.exception.tenantdatassource.TenantDataSource;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.TableSql;
+import com.zkqy.execution.produce.dispersed.service.ICommonService;
+import com.zkqy.execution.produce.dispersed.service.ITableSqlService;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @RestController
@@ -59,6 +61,8 @@ public class CommonController extends BaseController {
         return toAjax(commonService.edit(commonEntity));
     }
 
+
+
     /**
      * 批量删除
      */
@@ -67,6 +71,15 @@ public class CommonController extends BaseController {
         return toAjax(commonService.batchDelete(commonEntity));
     }
 
+    /**
+     * 共通获取详情
+     */
+    @GetMapping("/getInfo")
+    public AjaxResult getInfo(CommonEntity commonEntity) {
+        return success(commonService.getInfoById(commonEntity));
+    }
+
+
     /**
      * 联合查询通用sql
      * @param commonEntity
@@ -87,16 +100,6 @@ public class CommonController extends BaseController {
       return   AjaxResult.success(dragTableService.dragTableInfo(commonEntity.getQueryMap().get("tableKey").toString()));
     }
 
-    /**
-     * 查询表格组信息
-     * @param commonEntity
-     * @return
-     */
-    @GetMapping("/dragGroupTableInfo")
-    public AjaxResult dragGroupTableInfo(CommonEntity commonEntity) {
-        return   AjaxResult.success(dragTableGroupService.selectDragTableGroup(commonEntity.getQueryMap().get("groupKey").toString()));
-    }
-
     /**
      * 动态表单预览接口
      */
@@ -106,11 +109,19 @@ public class CommonController extends BaseController {
         return getDataTable(commonService.dragTablePreview(commonEntity));
     }
 
+    /**
+     * 通用批量查询下拉框数据接口
+     */
+    @PostMapping("/queryDropDownBoxData")
+    public AjaxResult queryDropDownBoxData(@RequestBody List<CommonEntity> commonEntityList) {
+        return AjaxResult.success(commonService.queryDropDownBoxData(commonEntityList));
+    }
+
     /**
      * 处理按钮通用接口(新增、修改、删除)
      */
     @PostMapping("/commonBtnHandle")
-    public AjaxResult commonBtnHandle(@RequestBody CommonEntity commonEntity) throws JsonProcessingException {
+    public AjaxResult commonBtnHandle(@RequestBody CommonEntity commonEntity){
         //按钮类型
         Long btnType = Long.valueOf(commonEntity.getBasicMap().get("btnType").toString());
         //是否开启弹窗
@@ -142,4 +153,15 @@ public class CommonController extends BaseController {
         }
         return warn("暂不支持该操作!");
     }
+
+
+    /**
+     * 查询表格组信息
+     * @param commonEntity
+     * @return
+     */
+    @GetMapping("/dragGroupTableInfo")
+    public AjaxResult dragGroupTableInfo(CommonEntity commonEntity) {
+        return   AjaxResult.success(dragTableGroupService.selectDragTableGroup(commonEntity.getQueryMap().get("groupKey").toString()));
+    }
 }

+ 1 - 1
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/DragFormController.java → zkqy-business/src/main/java/com/zkqy/business/controller/DragFormController.java

@@ -1,4 +1,4 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.zkqy.business.entity.DragForm;

+ 1 - 1
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/DragTableBtnController.java → zkqy-business/src/main/java/com/zkqy/business/controller/DragTableBtnController.java

@@ -1,4 +1,4 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
 import com.zkqy.business.entity.DragTableBtn;
 import com.zkqy.business.service.IDragTableBtnService;

+ 2 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/DragTableConditionController.java → zkqy-business/src/main/java/com/zkqy/business/controller/DragTableConditionController.java

@@ -1,12 +1,12 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.service.IDragTableConditionService;
 import com.zkqy.common.annotation.Log;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.page.TableDataInfo;
 import com.zkqy.common.enums.BusinessType;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;

+ 1 - 1
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/DragTableController.java → zkqy-business/src/main/java/com/zkqy/business/controller/DragTableController.java

@@ -1,4 +1,4 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
 import com.zkqy.business.entity.DragTable;
 import com.zkqy.business.service.IDragTableBtnRelevanceService;

+ 2 - 8
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/DragTableGroupController.java → zkqy-business/src/main/java/com/zkqy/business/controller/DragTableGroupController.java

@@ -1,14 +1,12 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragTableGroup;
 import com.zkqy.business.entity.vo.DragTableGroupVo;
 import com.zkqy.business.service.IDragTableGroupService;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.page.TableDataInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -22,7 +20,6 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/system/group")
-@Api(value = "/system/group", description = "拖拽格组-接口")
 public class DragTableGroupController extends BaseController {
 
     @Autowired
@@ -43,7 +40,6 @@ public class DragTableGroupController extends BaseController {
      * @PreAuthorize("@ss.hasPermi('system:group:list')")
      */
     @GetMapping("/list")
-    @ApiOperation(value = "查询拖拽格组列表")
     public TableDataInfo list(DragTableGroup dragTableGroup)
     {
         startPage();
@@ -57,7 +53,6 @@ public class DragTableGroupController extends BaseController {
      * @return
      */
     @GetMapping("/listDetail")
-    @ApiOperation(value = "查询拖拽格组列表")
     public AjaxResult listDetail(DragTableGroup dragTableGroup)
     {
         DragTableGroupVo list = dragTableGroupService.selectDragTableGroupListDetail(dragTableGroup);
@@ -69,7 +64,6 @@ public class DragTableGroupController extends BaseController {
      */
     @PreAuthorize("@ss.hasPermi('system:group:query')")
     @GetMapping(value = "/{id}")
-    @ApiOperation(value = "获取拖拽格组详细信息")
     public AjaxResult getInfo(@PathVariable("id") Long id)
     {
         return success(dragTableGroupService.selectDragTableGroupById(id));

+ 2 - 9
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/DragTableStatisticController.java → zkqy-business/src/main/java/com/zkqy/business/controller/DragTableStatisticController.java

@@ -1,6 +1,5 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragTableStatistic;
 import com.zkqy.business.service.IDragTableStatisticService;
 import com.zkqy.common.annotation.Log;
@@ -9,8 +8,7 @@ import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.page.TableDataInfo;
 import com.zkqy.common.enums.BusinessType;
 import com.zkqy.common.utils.poi.ExcelUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -25,7 +23,6 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/system/statistic")
-@Api(value = "/system/statistic", description = "动态表格统计-接口")
 public class DragTableStatisticController extends BaseController
 {
     @Autowired
@@ -36,7 +33,6 @@ public class DragTableStatisticController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:statistic:list')")
     @GetMapping("/list")
-    @ApiOperation(value = "查询动态表格统计列表")
     public TableDataInfo list(DragTableStatistic dragTableStatistic)
     {
         startPage();
@@ -50,7 +46,6 @@ public class DragTableStatisticController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:statistic:export')")
     @Log(title = "动态表格统计", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    @ApiOperation(value = "导出动态表格统计列表")
     public void export(HttpServletResponse response, DragTableStatistic dragTableStatistic)
     {
         List<DragTableStatistic> list = dragTableStatisticService.selectDragTableStatisticList(dragTableStatistic);
@@ -63,7 +58,6 @@ public class DragTableStatisticController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:statistic:query')")
     @GetMapping(value = "/{id}")
-    @ApiOperation(value = "获取动态表格统计详细信息")
     public AjaxResult getInfo(@PathVariable("id") Long id)
     {
         return success(dragTableStatisticService.selectDragTableStatisticById(id));
@@ -76,7 +70,6 @@ public class DragTableStatisticController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:statistic:query')")
     @GetMapping("/getInfoBySqlKey")
-    @ApiOperation(value = "获取动态表格统计详细信息")
     public AjaxResult getInfoBySqlKey(@RequestParam("sqlKey") String sqlKey)
     {
         return success(dragTableStatisticService.getInfoBySqlKey(sqlKey));

+ 1 - 1
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/DragTableStyleController.java → zkqy-business/src/main/java/com/zkqy/business/controller/DragTableStyleController.java

@@ -1,4 +1,4 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
 import com.zkqy.business.entity.DragTableStyle;
 import com.zkqy.business.entity.vo.DragTableVo;

+ 3 - 3
zkqy-admin/src/main/java/com/zkqy/web/controller/dragForm/TableSqlController.java → zkqy-business/src/main/java/com/zkqy/business/controller/TableSqlController.java

@@ -1,10 +1,10 @@
-package com.zkqy.web.controller.dragForm;
+package com.zkqy.business.controller;
 
-import com.zkqy.business.entity.TableSql;
-import com.zkqy.business.service.ITableSqlService;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.execution.produce.dispersed.entity.TableSql;
+import com.zkqy.execution.produce.dispersed.service.ITableSqlService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;

+ 32 - 0
zkqy-business/src/main/java/com/zkqy/business/entity/BlobTypeHandler.java

@@ -0,0 +1,32 @@
+package com.zkqy.business.entity;
+
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+
+import java.sql.*;
+
+public class BlobTypeHandler extends BaseTypeHandler<Blob> {  
+  
+    @Override  
+    public void setNonNullParameter(PreparedStatement ps, int i, Blob parameter, JdbcType jdbcType) throws SQLException {  
+        ps.setBlob(i, parameter);  
+    }  
+  
+    @Override  
+    public Blob getNullableResult(ResultSet rs, String columnName) throws SQLException {  
+        Blob blob = rs.getBlob(columnName);
+        return blob;  
+    }  
+  
+    @Override  
+    public Blob getNullableResult(ResultSet rs, int columnIndex) throws SQLException {  
+        Blob blob = rs.getBlob(columnIndex);  
+        return blob;  
+    }  
+  
+    @Override  
+    public Blob getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {  
+        Blob blob = cs.getBlob(columnIndex);  
+        return blob;  
+    }  
+}

+ 0 - 25
zkqy-business/src/main/java/com/zkqy/business/entity/DragTableBtn.java

@@ -71,11 +71,6 @@ public class DragTableBtn extends BaseEntity
     /** 删除标志(0:否;1:是) */
     private String delFlag;
 
-    /** 创建者ID */
-    private Long createById;
-
-    /** 更新者ID */
-    private Long updateById;
 
     /** 子菜单 */
     private List<DragTableBtn> children = new ArrayList<DragTableBtn>();
@@ -208,25 +203,7 @@ public class DragTableBtn extends BaseEntity
         this.delFlag = delFlag;
     }
 
-    @Override
-    public Long getCreateById() {
-        return createById;
-    }
-
-    @Override
-    public void setCreateById(Long createById) {
-        this.createById = createById;
-    }
 
-    @Override
-    public Long getUpdateById() {
-        return updateById;
-    }
-
-    @Override
-    public void setUpdateById(Long updateById) {
-        this.updateById = updateById;
-    }
 
     public List<DragTableBtn> getChildren() {
         return children;
@@ -271,10 +248,8 @@ public class DragTableBtn extends BaseEntity
             .append("btnSort", getBtnSort())
             .append("delFlag", getDelFlag())
             .append("createBy", getCreateBy())
-            .append("createById", getCreateById())
             .append("createTime", getCreateTime())
             .append("updateBy", getUpdateBy())
-            .append("updateById", getUpdateById())
             .append("updateTime", getUpdateTime())
             .append("remark", getRemark())
             .append("children",getChildren())

+ 1 - 8
zkqy-business/src/main/java/com/zkqy/business/entity/DragTableStyle.java

@@ -157,19 +157,12 @@ public class DragTableStyle extends BaseEntity
         this.createById = createById;
     }
 
-    public Long getCreateById() 
-    {
-        return createById;
-    }
+
     public void setUpdateById(Long updateById) 
     {
         this.updateById = updateById;
     }
 
-    public Long getUpdateById() 
-    {
-        return updateById;
-    }
 
     @Override
     public String toString() {

+ 1 - 0
zkqy-business/src/main/java/com/zkqy/business/entity/vo/DragTableGroupVo.java

@@ -1,4 +1,5 @@
 package com.zkqy.business.entity.vo;
+
 import com.zkqy.common.core.domain.BaseEntity;
 
 import java.util.List;

+ 1 - 0
zkqy-business/src/main/java/com/zkqy/business/entity/vo/DragTableVo.java

@@ -1,6 +1,7 @@
 package com.zkqy.business.entity.vo;
 
 import com.zkqy.business.entity.*;
+import com.zkqy.execution.produce.dispersed.entity.TableSql;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
zkqy-business/src/main/java/com/zkqy/business/mapper/DragTableConditionMapper.java

@@ -1,7 +1,7 @@
 package com.zkqy.business.mapper;
 
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragTableCondition;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import org.apache.ibatis.annotations.Param;
 import java.util.List;
 import java.util.Map;

+ 36 - 5
zkqy-business/src/main/java/com/zkqy/business/service/IDragFormService.java

@@ -2,12 +2,10 @@ package com.zkqy.business.service;
 
 
 
-import com.fasterxml.jackson.core.JsonProcessingException;
+import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.business.entity.DragForm;
-
 import java.util.List;
 
-
 /**
  * 动态表单
  * Service接口
@@ -16,7 +14,6 @@ import java.util.List;
  * @date 2023-07-12
  */
 public interface IDragFormService {
-
     /**
      * 查询动态表单
      *
@@ -36,9 +33,43 @@ public interface IDragFormService {
      */
     public List<DragForm> selectDragFormList(DragForm dragForm);
 
+    /**
+     * 新增动态表单
+     *
+     * @param dragForm 动态表单
+     * @return 结果
+     */
+    AjaxResult insertDragForm(DragForm dragForm);
+
+    /**
+     * 修改动态表单
+     *
+     * @param dragForm 动态表单
+     * @return 结果
+     */
+    public int updateDragForm(DragForm dragForm);
+
+    /**
+     * 批量删除动态表单
+     *
+     * @param fIds 需要删除的动态表单
+     *             主键集合
+     * @return 结果
+     */
+    public int deleteDragFormByFIds(Long[] fIds);
+
+    /**
+     * 删除动态表单
+     * 信息
+     *
+     * @param fId 动态表单
+     *            主键
+     * @return 结果
+     */
+    public int deleteDragFormByFId(Long fId);
 
     /**
      * 根据sqlKey查询动态表单
      */
-    DragForm selectDragFormBySqlKey(String sqlKey) throws JsonProcessingException;
+    DragForm selectDragFormBySqlKey(String sqlKey);
 }

+ 1 - 1
zkqy-business/src/main/java/com/zkqy/business/service/IDragTableConditionService.java

@@ -1,7 +1,7 @@
 package com.zkqy.business.service;
 
 
-import com.zkqy.business.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 
 import java.util.List;
 

+ 1 - 1
zkqy-business/src/main/java/com/zkqy/business/service/IDragTableGroupService.java

@@ -1,9 +1,9 @@
 package com.zkqy.business.service;
 
 
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragTableGroup;
 import com.zkqy.business.entity.vo.DragTableGroupVo;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 
 import java.util.List;
 

+ 1 - 1
zkqy-business/src/main/java/com/zkqy/business/service/IDragTableService.java

@@ -1,9 +1,9 @@
 package com.zkqy.business.service;
 
 
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragTable;
 import com.zkqy.business.entity.vo.DragTableVo;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 
 import java.util.List;
 

+ 1 - 1
zkqy-business/src/main/java/com/zkqy/business/service/IDragTableStatisticService.java

@@ -1,7 +1,7 @@
 package com.zkqy.business.service;
 
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragTableStatistic;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 
 import java.util.List;
 import java.util.Map;

+ 162 - 16
zkqy-business/src/main/java/com/zkqy/business/service/impl/DragFormServiceImpl.java

@@ -3,21 +3,33 @@ package com.zkqy.business.service.impl;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
+import com.zkqy.common.config.ZkqyConfig;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.StringUtils;
 import com.zkqy.business.entity.DragForm;
-import com.zkqy.business.mapper.CommonMapper;
+import com.zkqy.business.entity.DragTableForm;
 import com.zkqy.business.mapper.DragFormMapper;
+import com.zkqy.business.mapper.DragTableFormMapper;
 import com.zkqy.business.service.IDragFormService;
+import com.zkqy.execution.produce.dispersed.mapper.CommonMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 /**
  * 动态表单
  * Service业务层处理
  *
- * @author ruoyi
+ * @author hzh
  * @date 2023-07-12
  */
 @Service
@@ -26,12 +38,17 @@ public class DragFormServiceImpl implements IDragFormService {
     @Autowired
     private DragFormMapper dragFormMapper;
 
+    @Resource
+    private DragTableFormMapper dragTableFormMapper;
+
     @Resource
     private CommonMapper commonMapper;
 
     /**
      * 查询动态表单
+     *
      * @param fId 动态表单
+     *            主键
      * @return 动态表单
      */
     @Override
@@ -42,6 +59,7 @@ public class DragFormServiceImpl implements IDragFormService {
     /**
      * 查询动态表单
      * 列表
+     *
      * @param dragForm 动态表单
      * @return 动态表单
      */
@@ -51,30 +69,158 @@ public class DragFormServiceImpl implements IDragFormService {
     }
 
     /**
-     * 根据sqlKey查询动态表单
-     * @param sqlKey
-     * @return
-     * @throws JsonProcessingException
+     * 新增动态表单
+     *
+     * @param dragForm 动态表单
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public AjaxResult insertDragForm(DragForm dragForm) {
+        String fileName = ZkqyConfig.getProfile() + UUID.randomUUID().toString() + ".html";
+        // 创建表单源文件
+        createForm(fileName, dragForm.getDfHtmlTemplate());
+        // 使用租户名 加uuid 定义表单文件名称
+        dragForm.setDfFliePath(fileName);
+        dragForm.setCreateTime(DateUtils.getNowDate());
+
+        //校验dtId是否唯一
+        if (dragTableFormMapper.selectDtIdCount(dragForm.getDtId()) > 0) {
+            return AjaxResult.warn("该表格已绑定表单!");
+        }
+        //新增表单
+        dragFormMapper.insertDragForm(dragForm);
+
+
+        //新增关联表
+        DragTableForm dragTableForm = new DragTableForm();
+        dragTableForm.setDfId(dragForm.getfId());
+        dragTableForm.setDtId(dragForm.getDtId());
+        dragTableFormMapper.insertDragTableForm(dragTableForm);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 修改动态表单
+     *
+     * @param dragForm 动态表单
+     * @return 结果
+     */
+    @Override
+    public int updateDragForm(DragForm dragForm) {
+        // 修改的时候删除表单源文件后重新创建
+        delFileForm(dragForm.getfId());
+        dragForm.setUpdateTime(DateUtils.getNowDate());
+        return dragFormMapper.updateDragForm(dragForm);
+    }
+
+    /**
+     * 批量删除动态表单
+     *
+     * @param fIds 需要删除的动态表单
+     *             主键
+     * @return 结果
      */
     @Override
-    public DragForm selectDragFormBySqlKey(String sqlKey) throws JsonProcessingException {
+    @Transactional
+    public int deleteDragFormByFIds(Long[] fIds) {
+        // 删除表单源文件
+        for (Long fId : fIds) {
+            delFileForm(fId);
+            //删除表单表格关联表
+            if(StringUtils.isNotNull(dragTableFormMapper.selectDragTableForm(fId))){
+                dragTableFormMapper.deleteDragTableFormByDfId(fId);
+            }
+        }
+        return dragFormMapper.deleteDragFormByFIds(fIds);
+    }
+
+    /**
+     * 删除动态表单
+     * 信息
+     *
+     * @param fId 动态表单
+     *            主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDragFormByFId(Long fId) {
+        // 删除表单源文件
+        delFileForm(fId);
+        return dragFormMapper.deleteDragFormByFId(fId);
+    }
+
+    @Override
+    public DragForm selectDragFormBySqlKey(String sqlKey) {
         DragForm dragForm = dragFormMapper.selectDragFormBySqlKey(sqlKey);
+        return queryFormSelect(dragForm);
+    }
+
+    /**
+     * 查询当前表单的详细信息-》中前表单中所包含的下拉框
+     */
+    public DragForm queryFormSelect(DragForm dragForm) {
         ObjectMapper objectMapper = new ObjectMapper();
         Gson gson = new Gson();
+        if (dragForm == null) {
+            return dragForm;
+        }
+        //单个下拉框
         //获取要执行sql
-        if(dragForm!=null){
-            Map<String,Object> sqlMap = objectMapper.readValue(dragForm.getDfFormSql(), Map.class);
+        Map<String, Object> sqlMap = null;
+        try {
+            sqlMap = objectMapper.readValue(dragForm.getDfFormSql(), Map.class);
             //循环得到每一个sql语句返回结果
-            for(Map.Entry<String, Object> entry : sqlMap.entrySet()){
-                //拼接重组的sql
-                String[] froms = entry.getValue().toString().split(" FROM");
-                String execSql=froms[0]+"FROM {DBNAME}."+froms[1];
-                List<Map<String, Object>> mapList = commonMapper.executeSql(execSql);
-                sqlMap.put(entry.getKey(),mapList);
+            for (Map.Entry<String, Object> entry : sqlMap.entrySet()) {
+                String query = entry.getValue().toString();
+                List<Map<String, Object>> mapList = commonMapper.executeSqlSelectData(query);
+                sqlMap.put(entry.getKey(), mapList);
             }
             dragForm.setDfFormSql(gson.toJson(sqlMap));
+            return dragForm;
+        } catch (JsonProcessingException e) {
+            throw new RuntimeException(e);
         }
-        return dragForm;
     }
 
+
+
+    /**
+     * 删除表单源文件
+     *
+     * @param fId
+     */
+    public void delFileForm(Long fId) {
+        DragForm dragForm = dragFormMapper.selectDragFormByFId(fId);
+        File file = new File(dragForm.getDfFliePath());
+        if (file == null) return;
+        if (file.delete()) {
+            System.out.println("删除文件成功!");
+        } else {
+            System.out.println("删除文件失败!");
+        }
+    }
+
+    /**
+     * 创建表单源文件
+     *
+     * @param pathName 生成文件路径以及文件名称
+     * @param text     写入文件中的内容
+     */
+    public void createForm(String pathName, String text) {
+        // 新增的同时生成文件 生成路径从配置文件读取
+        File file = new File(pathName);
+        try {
+            if (file.createNewFile()) { // 判断当前文件是否存在,
+                System.out.println("创建文件成功!");
+            } else {
+                System.out.println("文件已经存在不需要重复创建");
+            }
+            FileWriter writer = new FileWriter(file);
+            writer.write(text);
+            writer.close();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }

+ 1 - 0
zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableBtnServiceImpl.java

@@ -137,4 +137,5 @@ public class DragTableBtnServiceImpl implements IDragTableBtnService
     public DragTableBtn selectDragTableBtnByBtnKey(String btnKey) {
         return dragTableBtnMapper.selectDragTableBtnByBtnKey(btnKey);
     }
+
 }

+ 1 - 2
zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableConditionServiceImpl.java

@@ -2,9 +2,9 @@ package com.zkqy.business.service.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.mapper.DragTableConditionMapper;
 import com.zkqy.business.service.IDragTableConditionService;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -35,7 +35,6 @@ public class DragTableConditionServiceImpl implements IDragTableConditionService
         List<Object> list = (List<Object>) commonEntity.getCommMap();
         List<Map<String, Object>> mapList = new ArrayList<>();
         for (Object obj : list) {
-            System.out.println(obj);
             Map<String, Object> map1 = (Map<String, Object>) obj;
             mapList.add(map1);
         }

+ 5 - 1
zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableGroupServiceImpl.java

@@ -9,7 +9,11 @@ import com.zkqy.business.entity.vo.DragTableVo;
 import com.zkqy.business.mapper.*;
 import com.zkqy.business.service.IDragTableBtnRelevanceService;
 import com.zkqy.business.service.IDragTableGroupService;
-import com.zkqy.business.service.ITableSqlService;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.TableSql;
+import com.zkqy.execution.produce.dispersed.mapper.CommonMapper;
+import com.zkqy.execution.produce.dispersed.mapper.TableSqlMapper;
+import com.zkqy.execution.produce.dispersed.service.ITableSqlService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 3 - 0
zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableServiceImpl.java

@@ -4,6 +4,9 @@ import com.zkqy.business.entity.*;
 import com.zkqy.business.entity.vo.DragTableVo;
 import com.zkqy.business.mapper.*;
 import com.zkqy.business.service.IDragTableService;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.mapper.CommonMapper;
+import com.zkqy.execution.produce.dispersed.mapper.TableSqlMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;

+ 4 - 4
zkqy-business/src/main/java/com/zkqy/business/service/impl/DragTableStatisticServiceImpl.java

@@ -2,13 +2,13 @@ package com.zkqy.business.service.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.zkqy.business.entity.CommonEntity;
 import com.zkqy.business.entity.DragTableStatistic;
-import com.zkqy.business.entity.TableSql;
-import com.zkqy.business.mapper.CommonMapper;
 import com.zkqy.business.mapper.DragTableStatisticMapper;
-import com.zkqy.business.mapper.TableSqlMapper;
 import com.zkqy.business.service.IDragTableStatisticService;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.TableSql;
+import com.zkqy.execution.produce.dispersed.mapper.CommonMapper;
+import com.zkqy.execution.produce.dispersed.mapper.TableSqlMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;

+ 1 - 1
zkqy-business/src/main/resources/mapper/dragmapper/DragTableConditionMapper.xml

@@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
     </resultMap>
 
-    <resultMap id="retMap" type="com.zkqy.business.entity.CommonEntity" autoMapping="true">
+    <resultMap id="retMap" type="com.zkqy.execution.produce.dispersed.entity.CommonEntity" autoMapping="true">
         <collection property="resultMap" ofType="map" autoMapping="true"
                     javaType="map"></collection>
     </resultMap>

+ 6 - 6
zkqy-business/src/main/resources/mapper/dragmapper/DragTableGroupMapper.xml

@@ -19,7 +19,7 @@
     </resultMap>
 
     <sql id="selectDragTableGroupVo">
-        select id, group_name, group_description,group_key, group_table_info,create_by_id, create_by, create_time, update_by_id, update_by, update_time from drag_table_group
+        select id, group_name, group_description,group_key, group_table_info,create_by_id, create_by, create_time, update_by_id, update_by, update_time from {DBNAME}.drag_table_group
     </sql>
 
     <select id="selectDragTableGroupList" parameterType="com.zkqy.business.entity.DragTableGroup" resultMap="DragTableGroupResult">
@@ -37,7 +37,7 @@
 
 
     <select id="selectDragTableGroupByGroupKey" parameterType="String" resultType="string">
-        select group_table_info from drag_table_group
+        select group_table_info from {DBNAME}.drag_table_group
         where group_key = #{groupKey}
     </select>
 
@@ -61,7 +61,7 @@
 
 
     <insert id="insertDragTableGroup" parameterType="com.zkqy.business.entity.DragTableGroup">
-        insert into drag_table_group
+        insert into {DBNAME}.drag_table_group
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="id != null">id,</if>
             <if test="groupName != null">group_name,</if>
@@ -93,7 +93,7 @@
     </insert>
 
     <update id="updateDragTableGroup" parameterType="com.zkqy.business.entity.DragTableGroup">
-        update drag_table_group
+        update {DBNAME}.drag_table_group
         <trim prefix="SET" suffixOverrides=",">
             <if test="groupName != null">group_name = #{groupName},</if>
             <if test="groupDescription != null">group_description = #{groupDescription},</if>
@@ -109,11 +109,11 @@
     </update>
 
     <delete id="deleteDragTableGroupById" parameterType="Long">
-        delete from drag_table_group where id = #{id}
+        delete from {DBNAME}.drag_table_group where id = #{id}
     </delete>
 
     <delete id="deleteDragTableGroupByIds" parameterType="String">
-        delete from drag_table_group where id in
+        delete from {DBNAME}.drag_table_group where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>

+ 1 - 0
zkqy-common/src/main/java/com/zkqy/common/annotation/Anonymous.java

@@ -16,4 +16,5 @@ import java.lang.annotation.Target;
 @Documented
 public @interface Anonymous
 {
+
 }

+ 50 - 46
zkqy-common/src/main/java/com/zkqy/common/config/RuoYiConfig.java → zkqy-common/src/main/java/com/zkqy/common/config/ZkqyConfig.java

@@ -5,92 +5,93 @@ import org.springframework.stereotype.Component;
 
 /**
  * 读取项目相关配置
- * 
- * @author ruoyi
+ *
+ * @author zkqy
  */
 @Component
 @ConfigurationProperties(prefix = "zkqy")
-public class RuoYiConfig
-{
-    /** 项目名称 */
+public class ZkqyConfig {
+    /**
+     * 项目名称
+     */
     private String name;
 
-    /** 版本 */
+    /**
+     * 版本
+     */
     private String version;
 
-    /** 版权年份 */
+    /**
+     * 版权年份
+     */
     private String copyrightYear;
 
-    /** 实例演示开关 */
+    /**
+     * 实例演示开关
+     */
     private boolean demoEnabled;
 
-    /** 上传路径 */
+    /**
+     * 上传路径
+     */
     private static String profile;
 
-    /** 获取地址开关 */
+    /**
+     * 获取地址开关
+     */
     private static boolean addressEnabled;
 
-    /** 验证码类型 */
+    /**
+     * 验证码类型
+     */
     private static String captchaType;
 
-    public String getName()
-    {
+    public String getName() {
         return name;
     }
 
-    public void setName(String name)
-    {
+    public void setName(String name) {
         this.name = name;
     }
 
-    public String getVersion()
-    {
+    public String getVersion() {
         return version;
     }
 
-    public void setVersion(String version)
-    {
+    public void setVersion(String version) {
         this.version = version;
     }
 
-    public String getCopyrightYear()
-    {
+    public String getCopyrightYear() {
         return copyrightYear;
     }
 
-    public void setCopyrightYear(String copyrightYear)
-    {
+    public void setCopyrightYear(String copyrightYear) {
         this.copyrightYear = copyrightYear;
     }
 
-    public boolean isDemoEnabled()
-    {
+    public boolean isDemoEnabled() {
         return demoEnabled;
     }
 
-    public void setDemoEnabled(boolean demoEnabled)
-    {
+    public void setDemoEnabled(boolean demoEnabled) {
         this.demoEnabled = demoEnabled;
     }
 
-    public static String getProfile()
-    {
+    public static String getProfile() {
         return profile;
     }
 
-    public void setProfile(String profile)
-    {
-        RuoYiConfig.profile = profile;
+    public void setProfile(String profile) {
+        ZkqyConfig.profile = profile;
     }
 
-    public static boolean isAddressEnabled()
-    {
+    public static boolean isAddressEnabled() {
         return addressEnabled;
     }
 
-    public void setAddressEnabled(boolean addressEnabled)
-    {
-        RuoYiConfig.addressEnabled = addressEnabled;
+    public void setAddressEnabled(boolean addressEnabled) {
+        ZkqyConfig.addressEnabled = addressEnabled;
     }
 
     public static String getCaptchaType() {
@@ -98,38 +99,41 @@ public class RuoYiConfig
     }
 
     public void setCaptchaType(String captchaType) {
-        RuoYiConfig.captchaType = captchaType;
+        ZkqyConfig.captchaType = captchaType;
     }
 
     /**
      * 获取导入上传路径
      */
-    public static String getImportPath()
-    {
+    public static String getImportPath() {
         return getProfile() + "/import";
     }
 
     /**
      * 获取头像上传路径
      */
-    public static String getAvatarPath()
-    {
+    public static String getAvatarPath() {
         return getProfile() + "/avatar";
     }
 
     /**
      * 获取下载路径
      */
-    public static String getDownloadPath()
-    {
+    public static String getDownloadPath() {
         return getProfile() + "/download/";
     }
 
     /**
      * 获取上传路径
      */
-    public static String getUploadPath()
-    {
+    public static String getUploadPath() {
         return getProfile() + "/upload";
     }
+
+    /**
+     * 获取上传流程xml路径
+     */
+    public static String getUploadXMLPath() {
+        return getProfile() + "/upload/bpmnXML";
+    }
 }

+ 57 - 0
zkqy-common/src/main/java/com/zkqy/common/config/bpm/BpmProperties.java

@@ -0,0 +1,57 @@
+package com.zkqy.common.config.bpm;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author hmc
+ * @date 2023-11-02 18:07
+ * @Description:
+ */
+//@Configuration
+public class BpmProperties {
+
+
+    //根据用户id查询当前用户所具备的角色key的ip地址 MAIN_ROLESKEY_IP
+    //@Value("${parameter.ip.MAIN_ROLESKEY_IP}")
+    //public String mainRolesKeyIp;
+
+    // 根据scriptKey获取节点脚本详情地址
+    //@Value("${parameter.ip.GET_NODESCRIPT_IP}")
+    //public String getNodeScriptIp;
+    // crm项目查看角色下是否存在真实用户
+    //@Value("${parameter.ip.QUERY_USER_EXISTS_BY_ROLEKEY_IP}")
+    //public String queryUserExistsByRoleKeyIp;
+    // crm项目查看一组用户是否存在真实用户
+    //@Value("${parameter.ip.QUERY_USER_EXISTS_BY_USERIDS_IP}")
+    //public String queryUserExistsByUserIdsIp;
+    // form项目共通修改接口
+    //@Value("${parameter.ip.FORM_COMMON_UPDATE_IP}")
+    //public String formCommonUpdateIp;
+    // FORM_COMMON_GETINFO_IP
+    //@Value("${parameter.ip.FORM_COMMON_GETINFO_IP}")
+    //public String formCommonGetInfoIp;
+    // form项目共通新增接口
+    //@Value("${parameter.ip.FORM_COMMON_BATCHINSERT_IP}")
+    //public String formCommonBatchInsertIp;
+    // CRM项目根据scriptKeys获取节点脚本详情地址
+    //@Value("${parameter.ip.GET_NODESCRIPTS_IP}")
+    //public String getNodeScriptsIp;
+    // 租户字典:根据字典类型得到当前字典下的所有的数据
+    //@Value("${parameter.ip.GET_TENANT_DICT_IP}")
+    //public String getTenantDictValIp;
+    // form项目共通新增接口
+    //@Value("${parameter.ip.FORM_COMMON_INSERT_IP}")
+    //public String formCommonInsertIp;
+    //form项目根据表单Fid查询详情接口
+    //@Value("${parameter.ip.FORM_GET_FORM_INFO_IP}")
+    //public String formGetFormInfoIp;
+    //from项目根据groupKey查询表格组信息
+    //@Value("${parameter.ip.FORM_GET_GROUP_INFO_IP}")
+    //public String formGetGroupInfoIp;
+    //CRM项目获取所有模板库数据表信息
+    //@Value("${parameter.ip.CRM_QUERY_TEMPLATEBASE_TABLE}")
+    //public String crmQueryTemplateBaseTableIp;
+
+
+}

+ 2 - 2
zkqy-common/src/main/java/com/zkqy/common/config/form/FormProperties.java

@@ -7,10 +7,10 @@ import org.springframework.context.annotation.Configuration;
 public class FormProperties {
 
     //开启流程
-    @Value("${bpm.runbpmurl}")
+    //@Value("${bpm.runbpmurl}")
     public String runBpmIp;
 
-    @Value("${script.runscripturl}")
+    //@Value("${script.runscripturl}")
     public String runScriptIp;
 
     public String getRunBpmIp() {

+ 21 - 0
zkqy-common/src/main/java/com/zkqy/common/constant/BpmNodeTypeConstants.java

@@ -0,0 +1,21 @@
+package com.zkqy.common.constant;
+
+/**
+ * 流程节点类型常量信息
+ */
+public class BpmNodeTypeConstants {
+
+    /** 开始节点 */
+    public static final String START_EVENT = "startEvent";
+
+    /** 结束节点 */
+    public static final String END_EVENT = "endEvent";
+
+    /** 用户任务 */
+    public static final String USER_TASK = "userTask";
+
+    /** 异常任务 */
+    public static final String EXCEPTION_TASK = "exceptionTask";
+
+
+}

+ 21 - 5
zkqy-common/src/main/java/com/zkqy/common/constant/HttpStatus.java

@@ -2,11 +2,10 @@ package com.zkqy.common.constant;
 
 /**
  * 返回状态码
- * 
- * @author ruoyi
+ *
+ * @author zkqy
  */
-public class HttpStatus
-{
+public class HttpStatus {
     /**
      * 操作成功
      */
@@ -102,10 +101,27 @@ public class HttpStatus
      */
     public static final int SQLERROR = 603;
 
+    /**
+     * 流程数据    执行出现问题
+     */
+    public static final int EXECUTEPROCESS = 604;
+
+    /**
+     * 流程执行出现问题,执行脚本异常
+     */
+    public static final int SCRIPTEXCEPTION = 605;
+
+
+    /**
+     * 流程执行出现问题,执行脚本异常
+     */
+    public static final int PROCESSERROR = 606;
+
     /**
      * 系统警告消息:按钮执行逻辑异常
      *
      */
-    public static final int BTNERROR = 604;
+    public static final int BTNERROR = 607;
+
 
 }

+ 2 - 1
zkqy-common/src/main/java/com/zkqy/common/core/controller/BaseController.java

@@ -86,7 +86,8 @@ public class BaseController
         rspData.setCode(HttpStatus.SUCCESS);
         rspData.setMsg("查询成功");
         rspData.setRows(list);
-        rspData.setTotal(new PageInfo(list).getTotal());
+        long total = new PageInfo(list).getTotal();
+        rspData.setTotal(total);
         return rspData;
     }
 

+ 3 - 4
zkqy-common/src/main/java/com/zkqy/common/core/domain/AjaxResult.java

@@ -1,13 +1,14 @@
 package com.zkqy.common.core.domain;
 
-import java.util.HashMap;
 import com.zkqy.common.constant.HttpStatus;
 import com.zkqy.common.utils.StringUtils;
 
+import java.util.HashMap;
+
 /**
  * 操作消息提醒
  * 
- * @author ruoyi
+ * @author zkqy
  */
 public class AjaxResult extends HashMap<String, Object>
 {
@@ -183,7 +184,6 @@ public class AjaxResult extends HashMap<String, Object>
         return this;
     }
 
-
     /**
      * 方便链式调用
      *
@@ -196,5 +196,4 @@ public class AjaxResult extends HashMap<String, Object>
         else
             return new AjaxResult(HttpStatus.BTNERROR, "操作失败!发生未知异常");
     }
-
 }

+ 19 - 26
zkqy-common/src/main/java/com/zkqy/common/core/domain/BaseEntity.java

@@ -1,17 +1,18 @@
 package com.zkqy.common.core.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
 
 /**
  * Entity基类
  * 
- * @author ruoyi
+ * @author zkqy
  */
 public class BaseEntity implements Serializable
 {
@@ -21,22 +22,22 @@ public class BaseEntity implements Serializable
     @JsonIgnore
     private String searchValue;
 
-    /** 创建者Id*/
-    private Long createById;
-
     /** 创建者 */
     private String createBy;
 
+    /** 创建者Id */
+    private Long createById;
+
     /** 创建时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
-    /** 修改者Id*/
-    private Long updateById;
-
     /** 更新者 */
     private String updateBy;
 
+    /** 更新者 */
+    private Long updateById;
+
     /** 更新时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
@@ -108,6 +109,14 @@ public class BaseEntity implements Serializable
         this.remark = remark;
     }
 
+    public Long getCreateById() {return createById;}
+
+    public void setCreateById(Long createById) {this.createById = createById;}
+
+    public Long getUpdateById() {return updateById;}
+
+    public void setUpdateById(Long updateById) {this.updateById = updateById;}
+
     public Map<String, Object> getParams()
     {
         if (params == null)
@@ -117,22 +126,6 @@ public class BaseEntity implements Serializable
         return params;
     }
 
-    public Long getCreateById() {
-        return createById;
-    }
-
-    public void setCreateById(Long createById) {
-        this.createById = createById;
-    }
-
-    public Long getUpdateById() {
-        return updateById;
-    }
-
-    public void setUpdateById(Long updateById) {
-        this.updateById = updateById;
-    }
-
     public void setParams(Map<String, Object> params)
     {
         this.params = params;

+ 159 - 0
zkqy-common/src/main/java/com/zkqy/common/core/domain/BaseEntityPlus.java

@@ -0,0 +1,159 @@
+package com.zkqy.common.core.domain;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+
+/**
+ * Entity基类
+ *
+ * @author zkqy
+ */
+public class BaseEntityPlus implements Serializable {
+
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 搜索值
+     */
+    @JsonIgnore
+    private String searchValue;
+
+    /**
+     * 创建者Id
+     */
+    private Long createById;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 修改者Id
+     */
+    private Long updateById;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 请求参数
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Map<String, Object> params;
+
+    public String getSearchValue() {
+        return searchValue;
+    }
+
+    public void setSearchValue(String searchValue) {
+        this.searchValue = searchValue;
+    }
+
+    public Long getCreateById() {
+        return createById == null ? SecurityUtils.getUserId() : createById;
+    }
+
+    public void setCreateById(Long createById) {
+        this.createById = createById;
+    }
+
+    public String getCreateBy() {
+        return createBy == null||createBy=="" ? SecurityUtils.getUsername() : createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime() {
+        return createTime == null || createTime.toString().isEmpty() ? getNowData() : createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUpdateById() {
+        return updateById == null ? SecurityUtils.getUserId() : updateById;
+    }
+
+    public void setUpdateById(Long updateById) {
+        this.updateById = updateById;
+    }
+
+    public String getUpdateBy() {
+        return updateBy == null||createBy=="" ? SecurityUtils.getUsername() : updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime == null || updateTime.toString().isEmpty() ? getNowData() : updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Map<String, Object> getParams() {
+        if (params == null) {
+            params = new HashMap<>();
+        }
+        return params;
+    }
+
+    public void setParams(Map<String, Object> params) {
+        this.params = params;
+    }
+
+    Date getNowData() {
+        String dateString = DateUtils.getTime();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            Date date = sdf.parse(dateString);
+            return date;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return new Date();
+    }
+}

+ 1 - 0
zkqy-common/src/main/java/com/zkqy/common/core/domain/TreeEntity.java

@@ -1,5 +1,6 @@
 package com.zkqy.common.core.domain;
 
+import com.zkqy.common.core.domain.BaseEntity;
 import java.util.ArrayList;
 import java.util.List;
 

+ 3 - 1
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysDept.java

@@ -6,9 +6,11 @@ import javax.validation.constraints.Email;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
+
+
+import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.zkqy.common.core.domain.BaseEntity;
 
 /**
  * 部门表 sys_dept

+ 2 - 1
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysDictData.java

@@ -2,12 +2,13 @@ package com.zkqy.common.core.domain.entity;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Size;
+
+import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.zkqy.common.annotation.Excel;
 import com.zkqy.common.annotation.Excel.ColumnType;
 import com.zkqy.common.constant.UserConstants;
-import com.zkqy.common.core.domain.BaseEntity;
 
 /**
  * 字典数据表 sys_dict_data

+ 2 - 1
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysDictType.java

@@ -3,11 +3,12 @@ package com.zkqy.common.core.domain.entity;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Size;
+
+import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.zkqy.common.annotation.Excel;
 import com.zkqy.common.annotation.Excel.ColumnType;
-import com.zkqy.common.core.domain.BaseEntity;
 
 /**
  * 字典类型表 sys_dict_type

+ 2 - 1
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysMenu.java

@@ -5,9 +5,10 @@ import java.util.List;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
+
+import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.zkqy.common.core.domain.BaseEntity;
 
 /**
  * 菜单权限表 sys_menu

+ 2 - 1
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysRole.java

@@ -4,11 +4,12 @@ import java.util.Set;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
+
+import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.zkqy.common.annotation.Excel;
 import com.zkqy.common.annotation.Excel.ColumnType;
-import com.zkqy.common.core.domain.BaseEntity;
 
 /**
  * 角色表 sys_role

+ 2 - 1
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysUser.java

@@ -3,13 +3,14 @@ package com.zkqy.common.core.domain.entity;
 import java.util.Date;
 import java.util.List;
 import javax.validation.constraints.*;
+
+import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.zkqy.common.annotation.Excel;
 import com.zkqy.common.annotation.Excel.ColumnType;
 import com.zkqy.common.annotation.Excel.Type;
 import com.zkqy.common.annotation.Excels;
-import com.zkqy.common.core.domain.BaseEntity;
 import com.zkqy.common.xss.Xss;
 
 /**

+ 19 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/MapWrapperFactory.java

@@ -0,0 +1,19 @@
+package com.zkqy.common.utils;
+
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.wrapper.ObjectWrapper;
+import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
+
+import java.util.Map;
+
+public class MapWrapperFactory implements ObjectWrapperFactory {
+    @Override
+    public boolean hasWrapperFor(Object object) {
+        return object != null && object instanceof Map;
+    }
+
+    @Override
+    public ObjectWrapper getWrapperFor(MetaObject metaObject, Object object) {
+        return new MyMapWrapper(metaObject, (Map) object);
+    }
+}

+ 51 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/MyMapWrapper.java

@@ -0,0 +1,51 @@
+package com.zkqy.common.utils;
+
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.wrapper.MapWrapper;
+
+import java.util.Map;
+
+public class MyMapWrapper extends MapWrapper {
+
+    public MyMapWrapper(MetaObject metaObject, Map<String, Object> map) {
+        super(metaObject, map);
+    }
+
+    @Override
+    public String findProperty(String name, boolean useCamelCaseMapping) {
+        if (useCamelCaseMapping
+                && ((name.charAt(0) >= 'A' && name.charAt(0) <= 'Z')
+                || name.indexOf("_") >= 0)) {
+            return underlineToCamelhump(name);
+        }
+        return name;
+    }
+
+    /**
+     * 将下划线风格替换为驼峰风格
+     *
+     * @param inputString
+     * @return
+     */
+    public String underlineToCamelhump(String inputString) {
+        StringBuilder sb = new StringBuilder();
+
+        boolean nextUpperCase = false;
+        for (int i = 0; i < inputString.length(); i++) {
+            char c = inputString.charAt(i);
+            if (c == '_') {
+                if (sb.length() > 0) {
+                    nextUpperCase = true;
+                }
+            } else {
+                if (nextUpperCase) {
+                    sb.append(Character.toUpperCase(c));
+                    nextUpperCase = false;
+                } else {
+                    sb.append(Character.toLowerCase(c));
+                }
+            }
+        }
+        return sb.toString();
+    }
+}

+ 34 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/bpm/BpmUtils.java

@@ -0,0 +1,34 @@
+package com.zkqy.common.utils.bpm;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.zkqy.common.config.bpm.BpmProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @author hmc
+ * @date 2023-11-02 15:29
+ * @Description:
+ */
+@Component
+public class BpmUtils {
+
+    //@Autowired
+    //private BpmProperties bpmProperties;
+
+    /**
+     * 根据用户查询角色key
+     *
+     * @param userId
+     * @return
+     */
+    //public String[] getRoleKeyByUserId(Long userId) {
+    //    RestTemplate restTemplate = new RestTemplate();
+    //    String ret = restTemplate.getForObject(bpmProperties.mainRolesKeyIp + userId, String.class);
+    //    JSONObject jsonObject = JSONObject.parseObject(ret);
+    //    String s = (String) jsonObject.get("rolesKey");
+    //    String[] strings = JSONObject.parseObject(s, String[].class);
+    //    return strings;
+    //}
+}

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

@@ -0,0 +1,302 @@
+package com.zkqy.common.utils.bpm;
+
+import cn.hutool.core.util.XmlUtil;
+import com.zkqy.common.utils.uuid.IdUtils;
+import org.w3c.dom.*;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathFactory;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 解析流程xml工具类
+ */
+public class XmlDataParserUtils {
+
+    /**
+     * 解析流程xml文件内容,得到开始节点和下一个节点
+     *
+     * @param xmlData xml内容
+     * @return
+     */
+    public static Map<String,String> getStartNodeAndNextNode(String xmlData){
+        Map<String, String> map = new HashMap<>();
+        Document document= XmlUtil.parseXml(xmlData);
+        //获得XML文档根节点
+        Element elementG=XmlUtil.getRootElement(document);
+        //获取bpmn:process节点
+        Element bpmnProcessEvent = XmlUtil.getElement(elementG,"bpmn:process");
+        //获取开始节点并得到开始节点ID
+        Element bpmnStartEvent=XmlUtil.getElement(bpmnProcessEvent,"bpmn:startEvent");
+        String startNode = bpmnStartEvent.getAttribute("id");
+        map.put("startNode",startNode);
+
+        //获取所有序列流(顺序),循环得到开始节点的下一个节点
+        NodeList elementsByTagName = elementG.getElementsByTagName("bpmn:sequenceFlow");
+        for (int i = 0; i < elementsByTagName.getLength(); i++) {
+            if (startNode.equals(elementsByTagName.item(i).getAttributes().getNamedItem("sourceRef").getNodeValue())) {
+                map.put("nextNode",elementsByTagName.item(i).getAttributes().getNamedItem("targetRef").getNodeValue());
+                break;
+            }
+        }
+        return map;
+    }
+
+    /**
+     * 新增用户异常节点
+     * @param userTaskTagName 新增节点名称
+     * @param nextTagId 新增节点下一节点ID
+     * @return
+     */
+    public static String addUserTaskTag(String xmlData,String newUserTaskTagId,String userTaskTagName,String nextTagId) throws Exception {
+        //新增节点标签ID
+//        String newUserTaskTagId = "Flow_" + IdUtils.fastSimpleUUID().substring(0,7);
+        //新增序列流ID
+        String newSequenceFlowId = "Flow_" + IdUtils.fastUUID();
+        //新增节点下一节点序列流ID
+        String sequenceFlowId = null;
+        //上一节点标签ID
+        String previousId = null;
+        //将xml文件内容转成Document对象
+        Document document= XmlUtil.parseXml(xmlData);
+        //获得XML文档根节点
+        Element elementG=XmlUtil.getRootElement(document);
+        //获取所有序列流(顺序),循环得到新增节点下一节点序列流ID、上一节点标签ID,修改新增节点下一节点序列流sourceRef为新增节点标签ID
+        NodeList elementsByTagName = elementG.getElementsByTagName("bpmn:sequenceFlow");
+        for (int i = 0; i < elementsByTagName.getLength(); i++) {
+            if (nextTagId.equals(elementsByTagName.item(i).getAttributes().getNamedItem("targetRef").getNodeValue())) {
+                sequenceFlowId = elementsByTagName.item(i).getAttributes().getNamedItem("id").getNodeValue();
+                previousId = elementsByTagName.item(i).getAttributes().getNamedItem("sourceRef").getNodeValue();
+                //获取当前元素
+                Node node = elementsByTagName.item(i);
+                //创建一个新的Attr对象,并设置新的属性值
+                Attr newAttr = document.createAttribute("sourceRef");
+                newAttr.setValue(newUserTaskTagId);
+                node.getAttributes().setNamedItem(newAttr);
+                break;
+            }
+        }
+        //创建异常任务节点标签
+        Element userTaskTag = document.createElement("bpmn:exceptionTask");
+        userTaskTag.setAttribute("id",newUserTaskTagId);
+        userTaskTag.setAttribute("name",userTaskTagName);
+        userTaskTag.appendChild(document.createTextNode("\n\t\t"));
+        Element userTaskTagChild1 = document.createElement("bpmn:incoming");
+        userTaskTagChild1.setTextContent(newSequenceFlowId);
+        userTaskTag.appendChild(userTaskTagChild1);
+        userTaskTag.appendChild(document.createTextNode("\n\t\t"));
+        Element userTaskTagChild2 = document.createElement("bpmn:outgoing");
+        userTaskTagChild2.setTextContent(sequenceFlowId);
+        userTaskTag.appendChild(userTaskTagChild2);
+        userTaskTag.appendChild(document.createTextNode("\n\t"));
+        //创建新序列流标签
+        Element sequenceFlowTag = document.createElement("bpmn:sequenceFlow");
+        sequenceFlowTag.setAttribute("id",newSequenceFlowId);
+        sequenceFlowTag.setAttribute("sourceRef",previousId);
+        sequenceFlowTag.setAttribute("targetRef",newUserTaskTagId);
+        //修改上一节点bpmn:outgoing和下一节点bpmn:incoming
+        //获取bpmn:process节点
+        Element bpmnProcessEvent = XmlUtil.getElement(elementG,"bpmn:process");
+        NodeList bpmnProcessNextLevelEventList = bpmnProcessEvent.getChildNodes();
+        for (int i = 0; i < bpmnProcessNextLevelEventList.getLength(); i++) {
+            Node node = bpmnProcessNextLevelEventList.item(i);
+            //判断node是元素节点,并且是Element实例
+            if (node.getNodeType() == Node.ELEMENT_NODE && node instanceof Element) {
+                Element element = (Element) node;
+                String id = element.getAttribute("id");
+                if(id.equals(previousId)){
+                    Element elementOutgoing = XmlUtil.getElement(element,"bpmn:outgoing");
+                    elementOutgoing.setTextContent(newSequenceFlowId);
+                }
+                if(id.equals(nextTagId)){
+                    Element elementOutgoing = XmlUtil.getElement(element,"bpmn:incoming");
+                    elementOutgoing.setTextContent(sequenceFlowId);
+                    //插入标签
+                    Node parentNode = element.getParentNode();
+                    parentNode.insertBefore(userTaskTag,element);
+
+                    parentNode.insertBefore(sequenceFlowTag,element);
+                }
+            }
+        }
+        //将document对象转成字符串
+        TransformerFactory transformerFactory = TransformerFactory.newInstance();
+        Transformer transformer = transformerFactory.newTransformer();
+        DOMSource source = new DOMSource(document);
+        StreamResult result = new StreamResult(new StringWriter()); // 使用StringWriter来将结果输出为字符串
+        transformer.transform(source, result);
+        String data = result.getWriter().toString();
+        return data;
+    }
+
+    /**
+     * 获取下一节点key
+     * @param xmlData xml内容
+     * @param taskNodeKey 当前节点key
+     * @return
+     */
+    public static String getNextNodeKey(String xmlData, String taskNodeKey){
+        //下一节点key
+        String nextTaskNodeKey = null;
+        Document document= XmlUtil.parseXml(xmlData);
+        //获得XML文档根节点
+        Element elementG=XmlUtil.getRootElement(document);
+        //获取所有序列流(顺序),循环得到开始节点的下一个节点
+        NodeList elementsByTagName = elementG.getElementsByTagName("bpmn:sequenceFlow");
+        for (int i = 0; i < elementsByTagName.getLength(); i++) {
+            if(taskNodeKey.equals(elementsByTagName.item(i).getAttributes().getNamedItem("sourceRef").getNodeValue())){
+                nextTaskNodeKey = elementsByTagName.item(i).getAttributes().getNamedItem("targetRef").getNodeValue();
+            }
+        }
+        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;
+    }
+
+    /**
+     * 清空异常节点
+     * @param xmlData xml内容
+     * @param currentNodeId 当前节点ID
+     * @return
+     */
+    public static String clearExceptionTask(String xmlData,String currentNodeId) {
+        //将xml文件内容转成Document对象
+        Document document = XmlUtil.parseXml(xmlData);
+        //得到当前所有节点ID
+        Map<String, Object> allNodeKey = getAllNodeKey(xmlData);
+        List<String> list = (List<String>) allNodeKey.get("nodeList");
+        //截取当前节点后的所有ID
+        list = new ArrayList<>(list.subList(list.indexOf(currentNodeId),list.size()));
+        //获取所有异常节点,筛选出正常节点和异常节点
+        List<String> exceptionList = new ArrayList<>();
+        for (int i = 1; i < list.size(); i++){
+            Element node = getElement(document, list.get(i),"id");
+            String nodeTagName = node.getTagName();
+            if (nodeTagName.equals("bpmn:exceptionTask")){
+                exceptionList.add(list.get(i));
+                list.remove(i);
+            }
+        }
+        // 循环正常节点,修改下一个节点指向
+        for (int i = 0; i < list.size() - 1; i++ ) {
+            //获取下一节点
+            Element nextNode = getElement(document, list.get(i + 1),"id");
+            //得到上一个正常节点得序列流元素,修改targetRef指向下一个节点ID
+            Element currentSequenceFlow = getElement(document,list.get(i),"sourceRef");
+            currentSequenceFlow.setAttribute("targetRef",list.get(i+1));
+            //修改下一个节点入口incoming指向上一个节点序列流ID
+            Element elementOutgoing = XmlUtil.getElement(nextNode,"bpmn:incoming");
+            elementOutgoing.setTextContent(currentSequenceFlow.getAttributes().getNamedItem("id").getNodeValue());
+        }
+        //删除异常节点及异常节点序列线
+        for (int i = 0; i < exceptionList.size(); i++) {
+            //获取异常节点-删除
+            Element node = getElement(document, exceptionList.get(i),"id");
+            node.getParentNode().removeChild(node);
+            //获取序列线-删除
+            Element nodeXian = getElement(document, exceptionList.get(i),"sourceRef");
+            nodeXian.getParentNode().removeChild(nodeXian);
+        }
+        //将document对象转成字符串
+        String data = "";
+        try {
+            TransformerFactory transformerFactory = TransformerFactory.newInstance();
+            Transformer transformer = transformerFactory.newTransformer();
+            DOMSource source = new DOMSource(document);
+            StreamResult result = new StreamResult(new StringWriter()); // 使用StringWriter来将结果输出为字符串
+            transformer.transform(source, result);
+            data =  result.getWriter().toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return data;
+    }
+
+    /**
+     * 获取元素
+     * @param document
+     * @param nodeAttributeId 节点属性ID
+     * @param nodeAttributeName 节点属性名称
+     * @return
+     */
+    private static Element getElement(Document document,String nodeAttributeId,String nodeAttributeName){
+        try {
+            String expression = "//*[namespace-uri()='http://www.omg.org/spec/BPMN/20100524/MODEL'][@"+nodeAttributeName+"='"+nodeAttributeId+"']";
+            XPath xpath = XPathFactory.newInstance().newXPath();
+            NodeList nodeList = (NodeList) xpath.compile(expression).evaluate(document, XPathConstants.NODESET);
+            // 遍历节点列表并获取第一个匹配的元素
+            Element userTaskElement = null;
+            for (int i = 0; i < nodeList.getLength(); i++) {
+                Node node = nodeList.item(i);
+                if (node instanceof Element) {
+                    userTaskElement = (Element) node;
+                    break;
+                }
+            }
+            // 检查是否找到了匹配的元素
+            if (userTaskElement != null) {
+                return userTaskElement;
+            } else {
+                System.out.println("No matching user task element found.");
+                return null;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+}

+ 3 - 3
zkqy-common/src/main/java/com/zkqy/common/utils/file/FileUploadUtils.java

@@ -6,7 +6,7 @@ import java.nio.file.Paths;
 import java.util.Objects;
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.web.multipart.MultipartFile;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.constant.Constants;
 import com.zkqy.common.exception.file.FileNameLengthLimitExceededException;
 import com.zkqy.common.exception.file.FileSizeLimitExceededException;
@@ -35,7 +35,7 @@ public class FileUploadUtils
     /**
      * 默认上传的地址
      */
-    private static String defaultBaseDir = RuoYiConfig.getProfile();
+    private static String defaultBaseDir = ZkqyConfig.getProfile();
 
     public static void setDefaultBaseDir(String defaultBaseDir)
     {
@@ -142,7 +142,7 @@ public class FileUploadUtils
 
     public static final String getPathFileName(String uploadDir, String fileName) throws IOException
     {
-        int dirLastIndex = RuoYiConfig.getProfile().length() + 1;
+        int dirLastIndex = ZkqyConfig.getProfile().length() + 1;
         String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
         return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
     }

+ 2 - 2
zkqy-common/src/main/java/com/zkqy/common/utils/file/FileUtils.java

@@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.ArrayUtils;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.StringUtils;
 import com.zkqy.common.utils.uuid.IdUtils;
@@ -73,7 +73,7 @@ public class FileUtils
      */
     public static String writeImportBytes(byte[] data) throws IOException
     {
-        return writeBytes(data, RuoYiConfig.getImportPath());
+        return writeBytes(data, ZkqyConfig.getImportPath());
     }
 
     /**

+ 2 - 2
zkqy-common/src/main/java/com/zkqy/common/utils/file/ImageUtils.java

@@ -9,7 +9,7 @@ import java.util.Arrays;
 import org.apache.poi.util.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.constant.Constants;
 import com.zkqy.common.utils.StringUtils;
 
@@ -79,7 +79,7 @@ public class ImageUtils
             else
             {
                 // 本机地址
-                String localPath = RuoYiConfig.getProfile();
+                String localPath = ZkqyConfig.getProfile();
                 String downloadPath = localPath + StringUtils.substringAfter(url, Constants.RESOURCE_PREFIX);
                 in = new FileInputStream(downloadPath);
             }

+ 0 - 1
zkqy-common/src/main/java/com/zkqy/common/utils/form/FromUtils.java

@@ -69,7 +69,6 @@ public class FromUtils<T> {
         // 处理响应
         if (response.getStatusCode().is2xxSuccessful()) {
             String responseBody = response.getBody();
-            System.out.println("Response: " + responseBody);
             return response.getStatusCode();
         } else {
             // System.out.println("Request failed with status code: " + response.getStatusCode());

+ 2 - 2
zkqy-common/src/main/java/com/zkqy/common/utils/ip/AddressUtils.java

@@ -4,7 +4,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.constant.Constants;
 import com.zkqy.common.utils.StringUtils;
 import com.zkqy.common.utils.http.HttpUtils;
@@ -31,7 +31,7 @@ public class AddressUtils
         {
             return "内网IP";
         }
-        if (RuoYiConfig.isAddressEnabled())
+        if (ZkqyConfig.isAddressEnabled())
         {
             try
             {

+ 2 - 2
zkqy-common/src/main/java/com/zkqy/common/utils/poi/ExcelUtil.java

@@ -73,7 +73,7 @@ import com.zkqy.common.annotation.Excel;
 import com.zkqy.common.annotation.Excel.ColumnType;
 import com.zkqy.common.annotation.Excel.Type;
 import com.zkqy.common.annotation.Excels;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.core.text.Convert;
 import com.zkqy.common.exception.UtilException;
@@ -1342,7 +1342,7 @@ public class ExcelUtil<T>
      */
     public String getAbsoluteFile(String filename)
     {
-        String downloadPath = RuoYiConfig.getDownloadPath() + filename;
+        String downloadPath = ZkqyConfig.getDownloadPath() + filename;
         File desc = new File(downloadPath);
         if (!desc.getParentFile().exists())
         {

+ 5 - 0
zkqy-framework/pom.xml

@@ -69,6 +69,11 @@
             <version>2.10.1</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-common</artifactId>
+            <version>3.8.5</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 2 - 1
zkqy-framework/src/main/java/com/zkqy/framework/aspectj/DataScopeAspect.java

@@ -2,12 +2,13 @@ package com.zkqy.framework.aspectj;
 
 import java.util.ArrayList;
 import java.util.List;
+
+import com.zkqy.common.core.domain.BaseEntity;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.springframework.stereotype.Component;
 import com.zkqy.common.annotation.DataScope;
-import com.zkqy.common.core.domain.BaseEntity;
 import com.zkqy.common.core.domain.entity.SysRole;
 import com.zkqy.common.core.domain.entity.SysUser;
 import com.zkqy.common.core.domain.model.LoginUser;

+ 0 - 1
zkqy-framework/src/main/java/com/zkqy/framework/aspectj/SqlInterceptorAopAspect.java

@@ -25,7 +25,6 @@ public class SqlInterceptorAopAspect {
         System.out.println("Package Name: " + packageName);
         MyThreadLocal.set(packageName);
         String name = Thread.currentThread().getName();
-        System.out.println(name);
             // 执行被拦截的方法
             Object result = joinPoint.proceed();
 

+ 2 - 2
zkqy-framework/src/main/java/com/zkqy/framework/config/ResourcesConfig.java

@@ -11,7 +11,7 @@ import org.springframework.web.filter.CorsFilter;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import com.zkqy.common.config.RuoYiConfig;
+import com.zkqy.common.config.ZkqyConfig;
 import com.zkqy.common.constant.Constants;
 import com.zkqy.framework.interceptor.RepeatSubmitInterceptor;
 
@@ -31,7 +31,7 @@ public class ResourcesConfig implements WebMvcConfigurer
     {
         /** 本地文件上传路径 */
         registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**")
-                .addResourceLocations("file:" + RuoYiConfig.getProfile() + "/");
+                .addResourceLocations("file:" + ZkqyConfig.getProfile() + "/");
 
         /** swagger配置 */
         registry.addResourceHandler("/swagger-ui/**")

+ 0 - 4
zkqy-framework/src/main/java/com/zkqy/framework/web/service/SysLoginService.java

@@ -195,13 +195,9 @@ public class SysLoginService
     public String checkTenantExpirationTime(String username) {
         SysUser user = userService.selectUserByUserName(username);
         //拿到当前登录用户
-        System.out.println(user);
         if(!user.getUserName().equals("admin")){
             //根据租户id查询租户信息
             SysTenant sysTenant = sysTenantService.selectSysTenantByTenantId(user.getTenantId());
-            if(sysTenant!=null){
-                System.out.println("dfsdfasdfasd");
-            }
             if(sysTenant.getTenantExpirationTime()==null||sysTenant.getTenantExpirationTime().isEmpty()){
                 return "该用户租户信息并未激活";
             }

+ 29 - 0
zkqy-process-execution/pom.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zkqy</groupId>
+        <artifactId>zkqy</artifactId>
+        <version>3.8.5</version>
+    </parent>
+
+    <artifactId>zkqy-process-execution</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-system</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 94 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmExecuteNodeController.java

@@ -0,0 +1,94 @@
+package com.zkqy.execution.produce.dispersed.controller;
+
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNode;
+import com.zkqy.execution.produce.dispersed.service.IBpmExecuteNodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 节点执行(记录)Controller
+ *
+ * @author hzh
+ * @date 2023-11-01
+ */
+@RestController
+@RequestMapping("/system/execute/node")
+public class BpmExecuteNodeController extends BaseController {
+
+    @Autowired
+    private IBpmExecuteNodeService bpmExecuteNodeService;
+
+    /**
+     * 查询节点执行(记录)列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:node:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BpmExecuteNode bpmExecuteNode) {
+        startPage();
+        List<BpmExecuteNode> list = bpmExecuteNodeService.selectBpmExecuteNodeList(bpmExecuteNode);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出节点执行(记录)列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:node:export')")
+    @Log(title = "节点执行(记录)", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BpmExecuteNode bpmExecuteNode) {
+        List<BpmExecuteNode> list = bpmExecuteNodeService.selectBpmExecuteNodeList(bpmExecuteNode);
+        ExcelUtil<BpmExecuteNode> util = new ExcelUtil<BpmExecuteNode>(BpmExecuteNode.class);
+        util.exportExcel(response, list, "节点执行(记录)数据");
+    }
+
+    /**
+     * 获取节点执行(记录)详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:node:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(bpmExecuteNodeService.selectBpmExecuteNodeById(id));
+    }
+
+    /**
+     * 新增节点执行(记录)
+     */
+    @PreAuthorize("@ss.hasPermi('system:node:add')")
+    @Log(title = "节点执行(记录)", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BpmExecuteNode bpmExecuteNode) {
+        return toAjax(bpmExecuteNodeService.insertBpmExecuteNode(bpmExecuteNode));
+    }
+
+    /**
+     * 修改节点执行(记录)
+     */
+    @PreAuthorize("@ss.hasPermi('system:node:edit')")
+    @Log(title = "节点执行(记录)", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BpmExecuteNode bpmExecuteNode) {
+        return toAjax(bpmExecuteNodeService.updateBpmExecuteNode(bpmExecuteNode));
+    }
+
+    /**
+     * 删除节点执行(记录)
+     */
+    @PreAuthorize("@ss.hasPermi('system:node:remove')")
+    @Log(title = "节点执行(记录)", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(bpmExecuteNodeService.deleteBpmExecuteNodeByIds(ids));
+    }
+
+}

+ 93 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmExecuteNodeFormController.java

@@ -0,0 +1,93 @@
+package com.zkqy.execution.produce.dispersed.controller;
+
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeForm;
+import com.zkqy.execution.produce.dispersed.service.IBpmExecuteNodeFormService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+/**
+ * 执行节点单Controller
+ *
+ * @author zkqy
+ * @date 2023-12-07
+ */
+@RestController
+@RequestMapping("/system/form")
+public class BpmExecuteNodeFormController extends BaseController {
+    @Autowired
+    private IBpmExecuteNodeFormService bpmExecuteNodeFormService;
+
+    /**
+     * 查询执行节点单列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:form:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BpmExecuteNodeForm bpmExecuteNodeForm) {
+        startPage();
+        List<BpmExecuteNodeForm> list = bpmExecuteNodeFormService.selectBpmExecuteNodeFormList(bpmExecuteNodeForm);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出执行节点单列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:form:export')")
+    @Log(title = "执行节点单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BpmExecuteNodeForm bpmExecuteNodeForm) {
+        List<BpmExecuteNodeForm> list = bpmExecuteNodeFormService.selectBpmExecuteNodeFormList(bpmExecuteNodeForm);
+        ExcelUtil<BpmExecuteNodeForm> util = new ExcelUtil<BpmExecuteNodeForm>(BpmExecuteNodeForm.class);
+        util.exportExcel(response, list, "执行节点单数据");
+    }
+
+    /**
+     * 获取执行节点单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:form:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(bpmExecuteNodeFormService.selectBpmExecuteNodeFormById(id));
+    }
+
+    /**
+     * 新增执行节点单
+     */
+    @PreAuthorize("@ss.hasPermi('system:form:add')")
+    @Log(title = "执行节点单", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BpmExecuteNodeForm bpmExecuteNodeForm) {
+        return toAjax(bpmExecuteNodeFormService.insertBpmExecuteNodeForm(bpmExecuteNodeForm));
+    }
+
+    /**
+     * 修改执行节点单
+     */
+    @PreAuthorize("@ss.hasPermi('system:form:edit')")
+    @Log(title = "执行节点单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BpmExecuteNodeForm bpmExecuteNodeForm) {
+        return toAjax(bpmExecuteNodeFormService.updateBpmExecuteNodeForm(bpmExecuteNodeForm));
+    }
+
+    /**
+     * 删除执行节点单
+     */
+    @PreAuthorize("@ss.hasPermi('system:form:remove')")
+    @Log(title = "执行节点单", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(bpmExecuteNodeFormService.deleteBpmExecuteNodeFormByIds(ids));
+    }
+}

+ 92 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmExecuteNodeMiddleController.java

@@ -0,0 +1,92 @@
+package com.zkqy.execution.produce.dispersed.controller;
+
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeMiddle;
+import com.zkqy.execution.produce.dispersed.service.IBpmExecuteNodeMiddleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 执行流程用户、节点关联脚本中间Controller
+ *
+ * @author hzh
+ * @date 2023-11-01
+ */
+@RestController
+@RequestMapping("/system/execute/middle")
+public class BpmExecuteNodeMiddleController extends BaseController {
+    @Autowired
+    private IBpmExecuteNodeMiddleService bpmExecuteNodeMiddleService;
+
+    /**
+     * 查询执行流程用户、节点关联脚本中间列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:middle:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BpmExecuteNodeMiddle bpmExecuteNodeMiddle) {
+        startPage();
+        List<BpmExecuteNodeMiddle> list = bpmExecuteNodeMiddleService.selectBpmExecuteNodeMiddleList(bpmExecuteNodeMiddle);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出执行流程用户、节点关联脚本中间列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:middle:export')")
+    @Log(title = "执行流程用户、节点关联脚本中间", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BpmExecuteNodeMiddle bpmExecuteNodeMiddle) {
+        List<BpmExecuteNodeMiddle> list = bpmExecuteNodeMiddleService.selectBpmExecuteNodeMiddleList(bpmExecuteNodeMiddle);
+        ExcelUtil<BpmExecuteNodeMiddle> util = new ExcelUtil<BpmExecuteNodeMiddle>(BpmExecuteNodeMiddle.class);
+        util.exportExcel(response, list, "执行流程用户、节点关联脚本中间数据");
+    }
+
+    /**
+     * 获取执行流程用户、节点关联脚本中间详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:middle:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(bpmExecuteNodeMiddleService.selectBpmExecuteNodeMiddleById(id));
+    }
+
+    /**
+     * 新增执行流程用户、节点关联脚本中间
+     */
+    @PreAuthorize("@ss.hasPermi('system:middle:add')")
+    @Log(title = "执行流程用户、节点关联脚本中间", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BpmExecuteNodeMiddle bpmExecuteNodeMiddle) {
+        return toAjax(bpmExecuteNodeMiddleService.insertBpmExecuteNodeMiddle(bpmExecuteNodeMiddle));
+    }
+
+    /**
+     * 修改执行流程用户、节点关联脚本中间
+     */
+    @PreAuthorize("@ss.hasPermi('system:middle:edit')")
+    @Log(title = "执行流程用户、节点关联脚本中间", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BpmExecuteNodeMiddle bpmExecuteNodeMiddle) {
+        return toAjax(bpmExecuteNodeMiddleService.updateBpmExecuteNodeMiddle(bpmExecuteNodeMiddle));
+    }
+
+    /**
+     * 删除执行流程用户、节点关联脚本中间
+     */
+    @PreAuthorize("@ss.hasPermi('system:middle:remove')")
+    @Log(title = "执行流程用户、节点关联脚本中间", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(bpmExecuteNodeMiddleService.deleteBpmExecuteNodeMiddleByIds(ids));
+    }
+}

+ 121 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmExecuteProcessController.java

@@ -0,0 +1,121 @@
+package com.zkqy.execution.produce.dispersed.controller;
+
+
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.execution.produce.dispersed.entity.BpmExecuteProcess;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.runbpm.PreExecutionToolClass;
+import com.zkqy.execution.produce.dispersed.runbpm.RunImplementationClass;
+import com.zkqy.execution.produce.dispersed.service.IBpmExecuteProcessService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * 流程执行任务Controller
+ *
+ * @author hzh
+ * @date 2023-11-01
+ */
+@RestController
+@RequestMapping("/system/execute/process")
+public class BpmExecuteProcessController extends BaseController {
+    @Autowired
+    private IBpmExecuteProcessService bpmExecuteProcessService;
+    @Autowired
+    private RunImplementationClass implementationClass;
+    @Autowired
+    private PreExecutionToolClass PreExecutionToolClass;
+
+    /**
+     * 查询流程执行任务列表
+     *
+     */
+    // @PreAuthorize("@ss.hasPermi('system:process:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BpmExecuteProcess bpmExecuteProcess) throws Exception {
+        startPage();
+        return getDataTable(bpmExecuteProcessService.selectBpmExecuteProcessList(bpmExecuteProcess));
+    }
+
+    @GetMapping("listLog")
+    public TableDataInfo listLog(BpmExecuteProcess bpmExecuteProcess) {
+        startPage();
+        return getDataTable(bpmExecuteProcessService.selectBpmExecuteProcessListLog(bpmExecuteProcess));
+    }
+
+    /**
+     * 导出流程执行任务列表
+     */
+    // @PreAuthorize("@ss.hasPermi('system:process:export')")
+    @Log(title = "流程执行任务", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BpmExecuteProcess bpmExecuteProcess) {
+//        List<BpmExecuteProcess> list = bpmExecuteProcessService.selectBpmExecuteProcessList(bpmExecuteProcess);
+//        ExcelUtil<BpmExecuteProcess> util = new ExcelUtil<BpmExecuteProcess>(BpmExecuteProcess.class);
+//        util.exportExcel(response, list, "流程执行任务数据");
+    }
+
+    /**
+     * 获取流程执行任务详细信息
+     */
+    // @PreAuthorize("@ss.hasPermi('system:process:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(bpmExecuteProcessService.selectBpmExecuteProcessById(id));
+    }
+
+    /**
+     * 新增流程执行任务
+     */
+    // @PreAuthorize("@ss.hasPermi('system:process:add')")
+    @Log(title = "流程执行任务", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BpmExecuteProcess bpmExecuteProcess) {
+        return toAjax(bpmExecuteProcessService.insertBpmExecuteProcess(bpmExecuteProcess));
+    }
+
+    /**
+     * 修改流程执行任务
+     */
+    // @PreAuthorize("@ss.hasPermi('system:process:edit')")
+    @Log(title = "流程执行任务", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BpmExecuteProcess bpmExecuteProcess) {
+        return toAjax(bpmExecuteProcessService.updateBpmExecuteProcess(bpmExecuteProcess));
+    }
+
+    /**
+     * 删除流程执行任务
+     */
+    // @PreAuthorize("@ss.hasPermi('system:process:remove')")
+    @Log(title = "流程执行任务", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(bpmExecuteProcessService.deleteBpmExecuteProcessByIds(ids));
+    }
+
+    /**
+     * 共通投产流程接口
+     */
+    @Log(title = "投产执行流程", businessType = BusinessType.INSERT)
+    @PostMapping("/productionScheduling")
+    public AjaxResult productionScheduling(@RequestBody CommonEntity commonEntity)   {
+        return bpmExecuteProcessService.productionScheduling(commonEntity);
+    }
+
+    /**
+     * 查询节点表单信息
+     */
+    @GetMapping("/getNodeFormInfos")
+    public AjaxResult getNodeFormInfos(Map<String,String> nodeForm) {
+        return AjaxResult.success(PreExecutionToolClass.getNodeFormInfos(nodeForm));
+    }
+
+}

+ 99 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmRunController.java

@@ -0,0 +1,99 @@
+package com.zkqy.execution.produce.dispersed.controller;
+
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormDateVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.TriggerExceptionVO;
+import com.zkqy.execution.produce.dispersed.runbpm.PreExecutionToolClass;
+import com.zkqy.execution.produce.dispersed.service.IBpmExecuteNodeService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+/**
+ * 流程执行共通Controller
+ *
+ * @author hzh
+ * @date 2023-11-01
+ */
+@RestController
+@RequestMapping("/system/runbpm/process")
+public class BpmRunController extends BaseController {
+
+    @Autowired
+    private PreExecutionToolClass ipreExecutionToolClass;
+
+    @Autowired
+    private IBpmExecuteNodeService bpmExecuteNodeService;
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    /**
+     * 共通投产流程接口
+     */
+    @Log(title = "投产执行流程", businessType = BusinessType.INSERT)
+    @PostMapping("/productionScheduling")
+    public AjaxResult productionScheduling(@RequestBody CommonEntity commonEntity) {
+        return AjaxResult.success(ipreExecutionToolClass.ReadyToExecute(commonEntity));
+    }
+
+    /**
+     * 共通执行节点接口
+     */
+    @Log(title = "执行流程节点", businessType = BusinessType.INSERT)
+    @PostMapping("/processNodeExecution")
+    public AjaxResult processNodeExecution(BpmRunNodeVo bpmRunNodeVo, @RequestParam("fileXML") MultipartFile fileXML) {
+        if (!fileXML.isEmpty()) {
+            try {
+                // 解析得到当前文件中的内容
+                byte[] bytes = fileXML.getBytes();
+                String xmlContent = new String(bytes);
+                bpmRunNodeVo.setTaskProcessXmlContent(xmlContent);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return AjaxResult.success(ipreExecutionToolClass.executionNode(bpmRunNodeVo));
+    }
+
+
+    /**
+     * 共通执行节点表单回显数据接口
+     */
+    @GetMapping("/processNodeFormInfoData")
+    public AjaxResult processNodeFormInfoData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        return AjaxResult.success(ipreExecutionToolClass.processNodeFormInfoData(bpmRunNodeFromVo));
+    }
+
+    /**
+     * 处理流程节点表单提交的业务数据
+     *
+     * @param bpmRunNodeFormDateVo
+     * @return
+     */
+    @PostMapping("/submitNodeForm")
+    public AjaxResult handleSubmitFormData(@RequestBody BpmRunNodeFormDateVo bpmRunNodeFormDateVo) {
+        return AjaxResult.success(echoNodeFormData.handleSubmitForm(bpmRunNodeFormDateVo));
+    }
+
+
+    /**
+     * 触发异常节点
+     */
+    @PostMapping("/triggerExceptionNode")
+    public AjaxResult triggerExceptionNode(@RequestBody TriggerExceptionVO vo) throws Exception {
+        return toAjax(bpmExecuteNodeService.triggerExceptionNode(vo));
+    }
+
+
+}

+ 39 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BpmScriptController.java

@@ -0,0 +1,39 @@
+package com.zkqy.execution.produce.dispersed.controller;
+
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IScriptEntity;
+import com.zkqy.execution.produce.dispersed.runbpm.RunImplementationClass;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @author hanzihang
+ * @date 2023/11/16 6:14 PM
+ */
+@RestController
+@RequestMapping("/system/script")
+public class BpmScriptController {
+
+    @Resource
+    private RunImplementationClass irunImplementationClass;
+
+    /**
+     * 共通投产流程接口
+     */
+    @Log(title = "脚本执行接口", businessType = BusinessType.UPDATE)
+    @PostMapping("/execute")
+    public AjaxResult productionScheduling(@RequestBody String scriptKey)   {
+        IScriptEntity iScriptEntity = new IScriptEntity();
+        iScriptEntity.setScriptFlowKey(scriptKey); // 脚本别名
+        return AjaxResult.success(irunImplementationClass.RunScriptImplementationClassLogicCode(iScriptEntity,scriptKey));
+        //return AjaxResult.success(ipreExecutionToolClass.ReadyToExecute(intoProduction));
+    }
+
+}

+ 370 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteNode.java

@@ -0,0 +1,370 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntityPlus;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.io.Serializable;
+
+/**
+ * 节点执行 对象 bpm_execute_node
+ *
+ * @author hzh
+ * @date 2023-12-18
+ */
+public class BpmExecuteNode extends BaseEntityPlus implements Serializable {
+    private static final long serialVersionUID = 1123123L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 当前执行流程任务编号task_key
+     */
+    @Excel(name = "当前执行流程任务编号task_key")
+    private String taskProcessKey;
+
+    /**
+     * 节点编号
+     */
+    @Excel(name = "节点编号")
+    private String taskNodeKey;
+
+    /**
+     * 节点名称
+     */
+    @Excel(name = "节点名称")
+    private String taskNodeName;
+
+    /**
+     * 表单编号
+     */
+    @Excel(name = "表单编号")
+    private String taskNodeFormKey;
+
+    /**
+     * 任务节点表单类型
+     */
+    private String taskNodeFormType;
+
+    /**
+     * 节点类型(当前节点是判断、网关、普通节点等等。。。。。)
+     */
+    @Excel(name = "节点类型", readConverterExp = "当=前节点是判断、网关、普通节点等等。。。。。")
+    private String taskNodeType;
+
+    /**
+     * 节点执行类型(0:true:自动执行;1:false:手动执行)
+     */
+    private String taskNodeExecuteType;
+
+    /**
+     * 节点前(节点前后只能执行脚本,下一个节点前相当于当前节点后)
+     */
+    @Excel(name = "节点前", readConverterExp = "节=点前后只能执行脚本,下一个节点前相当于当前节点后")
+    private String taskNodeBefore;
+
+    /**
+     * 节点后(节点前只存在一个)
+     */
+    @Excel(name = "节点后", readConverterExp = "节=点前只存在一个")
+    private String taskNodeAfter;
+
+    /**
+     * 角色权限 虚拟角色-》勾选用户存储中间表
+     */
+    @Excel(name = "角色权限 虚拟角色-》勾选用户存储中间表")
+    private String taskNodeRolePermission;
+
+    /**
+     * 节点描述
+     */
+    @Excel(name = "节点描述")
+    private String taskRemark;
+
+    /**
+     * 节点任务执行数量记录(件数)
+     */
+    @Excel(name = "节点任务执行数量记录", readConverterExp = "件=数")
+    private String taskNodeNumber;
+
+    /**
+     * 节点任务执行重量记录(重量)
+     */
+    @Excel(name = "节点任务执行重量记录", readConverterExp = "重=量")
+    private String taskNodeWeight;
+
+    /**
+     * 节点状态(0:未执行 1:已执行)
+     */
+    @Excel(name = "节点状态(0:未执行 1:已执行)")
+    private String taskNodeState;
+
+    /**
+     * 节点其他状态记录(1,2,3具体对应字典,当前节点工序状态)
+     */
+    @Excel(name = "节点状态(0:未执行 1:已执行)")
+    private String taskNodeOtherState;
+
+    /**
+     * 流程发起的时添设置该任务的优先级
+     */
+    @Excel(name = "流程发起的时添设置该任务的优先级")
+    private String taskPriority;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task1;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task2;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task3;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task4;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task5;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setTaskProcessKey(String taskProcessKey) {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() {
+        return taskProcessKey;
+    }
+
+    public void setTaskNodeKey(String taskNodeKey) {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() {
+        return taskNodeKey;
+    }
+
+    public void setTaskNodeName(String taskNodeName) {
+        this.taskNodeName = taskNodeName;
+    }
+
+    public String getTaskNodeName() {
+        return taskNodeName;
+    }
+
+    public void setTaskNodeFormKey(String taskNodeFormKey) {
+        this.taskNodeFormKey = taskNodeFormKey;
+    }
+
+    public String getTaskNodeFormKey() {
+        return taskNodeFormKey;
+    }
+
+    public String getTaskNodeFormType() {
+        return taskNodeFormType;
+    }
+
+    public void setTaskNodeFormType(String taskNodeFormType) {
+        this.taskNodeFormType = taskNodeFormType;
+    }
+
+    public void setTaskNodeType(String taskNodeType) {
+        this.taskNodeType = taskNodeType;
+    }
+
+    public String getTaskNodeType() {
+        return taskNodeType;
+    }
+
+    public String getTaskNodeExecuteType() {
+        return taskNodeExecuteType;
+    }
+
+    public void setTaskNodeExecuteType(String taskNodeExecuteType) {
+        this.taskNodeExecuteType = taskNodeExecuteType;
+    }
+
+    public void setTaskNodeBefore(String taskNodeBefore) {
+        this.taskNodeBefore = taskNodeBefore;
+    }
+
+    public String getTaskNodeBefore() {
+        return taskNodeBefore;
+    }
+
+    public void setTaskNodeAfter(String taskNodeAfter) {
+        this.taskNodeAfter = taskNodeAfter;
+    }
+
+    public String getTaskNodeAfter() {
+        return taskNodeAfter;
+    }
+
+    public void setTaskNodeRolePermission(String taskNodeRolePermission) {
+        this.taskNodeRolePermission = taskNodeRolePermission;
+    }
+
+    public String getTaskNodeRolePermission() {
+        return taskNodeRolePermission;
+    }
+
+    public void setTaskRemark(String taskRemark) {
+        this.taskRemark = taskRemark;
+    }
+
+    public String getTaskRemark() {
+        return taskRemark;
+    }
+
+    public void setTaskNodeNumber(String taskNodeNumber) {
+        this.taskNodeNumber = taskNodeNumber;
+    }
+
+    public String getTaskNodeNumber() {
+        return taskNodeNumber;
+    }
+
+    public void setTaskNodeWeight(String taskNodeWeight) {
+        this.taskNodeWeight = taskNodeWeight;
+    }
+
+    public String getTaskNodeWeight() {
+        return taskNodeWeight;
+    }
+
+    public void setTaskNodeState(String taskNodeState) {
+        this.taskNodeState = taskNodeState;
+    }
+
+    public String getTaskNodeState() {
+        return taskNodeState;
+    }
+
+    public String getTaskNodeOtherState() {
+        return taskNodeOtherState;
+    }
+
+    public void setTaskNodeOtherState(String taskNodeOtherState) {
+        this.taskNodeOtherState = taskNodeOtherState;
+    }
+
+    public void setTaskPriority(String taskPriority) {
+        this.taskPriority = taskPriority;
+    }
+
+    public String getTaskPriority() {
+        return taskPriority;
+    }
+
+    public void setTask1(String task1) {
+        this.task1 = task1;
+    }
+
+    public String getTask1() {
+        return task1;
+    }
+
+    public void setTask2(String task2) {
+        this.task2 = task2;
+    }
+
+    public String getTask2() {
+        return task2;
+    }
+
+    public void setTask3(String task3) {
+        this.task3 = task3;
+    }
+
+    public String getTask3() {
+        return task3;
+    }
+
+    public void setTask4(String task4) {
+        this.task4 = task4;
+    }
+
+    public String getTask4() {
+        return task4;
+    }
+
+    public void setTask5(String task5) {
+        this.task5 = task5;
+    }
+
+    public String getTask5() {
+        return task5;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() {
+        return (delFlag == null || delFlag.isEmpty()) ? "0" : delFlag;
+    }
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("taskProcessKey", getTaskProcessKey())
+                .append("taskNodeKey", getTaskNodeKey())
+                .append("taskNodeName", getTaskNodeName())
+                .append("taskNodeFormKey", getTaskNodeFormKey())
+                .append("taskNodeFormType", getTaskNodeFormType())
+                .append("taskNodeType", getTaskNodeType())
+                .append("taskNodeExecuteType", getTaskNodeExecuteType())
+                .append("taskNodeBefore", getTaskNodeBefore())
+                .append("taskNodeAfter", getTaskNodeAfter())
+                .append("taskNodeRolePermission", getTaskNodeRolePermission())
+                .append("taskRemark", getTaskRemark())
+                .append("taskNodeNumber", getTaskNodeNumber())
+                .append("taskNodeWeight", getTaskNodeWeight())
+                .append("taskNodeState", getTaskNodeState())
+                .append("taskNodeOtherState", getTaskNodeOtherState())
+                .append("taskPriority", getTaskPriority())
+                .append("task1", getTask1())
+                .append("task2", getTask2())
+                .append("task3", getTask3())
+                .append("task4", getTask4())
+                .append("task5", getTask5())
+                .append("delFlag", getDelFlag())
+                .append("createById", getCreateById())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .toString();
+    }
+}

+ 138 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteNodeForm.java

@@ -0,0 +1,138 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntityPlus;
+
+/**
+ * 执行节点单对象 bpm_execute_node_form
+ *
+ * @author zkqy
+ * @date 2023-12-07
+ */
+public class BpmExecuteNodeForm extends BaseEntityPlus {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 任务流程编码
+     */
+    @Excel(name = "任务流程编码")
+    private String taskProcessKey;
+
+    /**
+     * 节点编码
+     */
+    @Excel(name = "节点编码")
+    private String taskNodeKey;
+
+    /**
+     * 脚本编码
+     */
+    @Excel(name = "脚本编码")
+    private String taskScriptKey;
+
+    /**
+     * 表单编码
+     */
+    @Excel(name = "表单编码")
+    private String taskNodeFormKey;
+
+    /**
+     * 表单类型
+     */
+    @Excel(name = "表单类型")
+    private String taskNodeFormType;
+
+    /**
+     * 表单内容
+     */
+    @Excel(name = "表单内容")
+    private String taskNodeFormContent;
+
+    // 节点名称
+    private String taskNodeName;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    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;
+    }
+
+    public String getTaskNodeFormKey() {
+        return taskNodeFormKey;
+    }
+
+    public void setTaskNodeFormKey(String taskNodeFormKey) {
+        this.taskNodeFormKey = taskNodeFormKey;
+    }
+
+    public String getTaskNodeFormType() {
+        return taskNodeFormType;
+    }
+
+    public void setTaskNodeFormType(String taskNodeFormType) {
+        this.taskNodeFormType = taskNodeFormType;
+    }
+
+    public String getTaskNodeFormContent() {
+        return taskNodeFormContent;
+    }
+
+    public void setTaskNodeFormContent(String taskNodeFormContent) {
+        this.taskNodeFormContent = taskNodeFormContent;
+    }
+
+    public String getTaskNodeName() {
+        return taskNodeName;
+    }
+
+    public void setTaskNodeName(String taskNodeName) {
+        this.taskNodeName = taskNodeName;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder("BpmExecuteNodeForm{");
+        sb.append("id=").append(id);
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", taskScriptKey='").append(taskScriptKey).append('\'');
+        sb.append(", taskNodeFormKey='").append(taskNodeFormKey).append('\'');
+        sb.append(", taskNodeFormType='").append(taskNodeFormType).append('\'');
+        sb.append(", taskNodeFormContent='").append(taskNodeFormContent).append('\'');
+        sb.append(", taskNodeFormName='").append(taskNodeName).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 436 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteNodeLog.java

@@ -0,0 +1,436 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntityPlus;
+
+import java.io.Serializable;
+
+/**
+ * 节点执行(记录)对象 bpm_execute_node
+ *
+ * @author hzh
+ * @date 2023-11-01
+ */
+public class BpmExecuteNodeLog extends BaseEntityPlus implements Serializable {
+    private static final long serialVersionUID = 1123123L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+
+    /**
+     * 节点回滚,记录某个节点发起的操作
+     */
+    private String taskParentNodeKey;
+
+    /**
+     * 当前执行流程任务编号task_key
+     */
+    @Excel(name = "当前执行流程任务编号task_key")
+    private String taskProcessKey;
+
+    /**
+     * 节点编号
+     */
+    @Excel(name = "节点编号")
+    private String taskNodeKey;
+
+    /**
+     * 节点名称
+     */
+    @Excel(name = "节点名称")
+    private String taskNodeName;
+
+    /**
+     * 表单编号
+     */
+    @Excel(name = "表单编号")
+    private String taskNodeFormKey;
+
+    /**
+     * 任务节点表单类型
+     */
+    private String taskNodeFormType;
+
+    /**
+     * 节点类型(当前节点是判断、网关、普通节点等等。。。。。)
+     */
+    @Excel(name = "节点类型", readConverterExp = "当=前节点是判断、网关、普通节点等等。。。。。")
+    private String taskNodeType;
+
+    /**
+     * 节点执行类型(0:true:自动执行;1:false:手动执行)
+     */
+    private String taskNodeExecuteType;
+
+    /**
+     * 节点前(节点前后只能执行脚本,下一个节点前相当于当前节点后)
+     */
+    @Excel(name = "节点前", readConverterExp = "节=点前后只能执行脚本,下一个节点前相当于当前节点后")
+    private String taskNodeBefore;
+
+    /**
+     * 节点后(节点前只存在一个)
+     */
+    @Excel(name = "节点后", readConverterExp = "节=点前只存在一个")
+    private String taskNodeAfter;
+
+    /**
+     * 角色权限 虚拟角色-》勾选用户存储中间表
+     */
+    @Excel(name = "角色权限 虚拟角色-》勾选用户存储中间表")
+    private String taskNodeRolePermission;
+
+    /**
+     * 节点描述
+     */
+    @Excel(name = "节点描述")
+    private String taskRemark;
+
+    /**
+     * 节点任务执行数量记录(件数)
+     */
+    @Excel(name = "节点任务执行数量记录", readConverterExp = "件=数")
+    private String taskNodeNumber;
+
+    /**
+     * 节点任务执行重量记录(重量)
+     */
+    @Excel(name = "节点任务执行重量记录", readConverterExp = "重=量")
+    private String taskNodeWeight;
+
+    /**
+     * 节点状态(0:未执行 1:已执行)
+     */
+    @Excel(name = "节点状态(0:未执行 1:已执行)")
+    private String taskNodeState;
+
+    /**
+     * 节点其他状态记录(1,2,3具体对应字典,当前节点工序状态)
+     */
+    @Excel(name = "节点状态(0:未执行 1:已执行)")
+    private String taskNodeOtherState;
+
+    /**
+     * 流程发起的时添设置该任务的优先级
+     */
+    @Excel(name = "流程发起的时添设置该任务的优先级")
+    private String taskPriority;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task1;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task2;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task3;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task4;
+
+    /**
+     * 执行节点备用列(未启用)
+     */
+    @Excel(name = "执行节点备用列", readConverterExp = "未=启用")
+    private String task5;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+
+    public BpmExecuteNodeLog(Long id, String taskParentNodeKey, String taskProcessKey, String taskNodeKey, String taskNodeName, String taskNodeFormKey, String taskNodeFormType, String taskNodeType, String taskNodeExecuteType, String taskNodeBefore, String taskNodeAfter, String taskNodeRolePermission, String taskRemark, String taskNodeNumber, String taskNodeWeight, String taskNodeState, String taskNodeOtherState, String taskPriority, String task1, String task2, String task3, String task4, String task5, String delFlag) {
+        this.id = id;
+        this.taskParentNodeKey = taskParentNodeKey;
+        this.taskProcessKey = taskProcessKey;
+        this.taskNodeKey = taskNodeKey;
+        this.taskNodeName = taskNodeName;
+        this.taskNodeFormKey = taskNodeFormKey;
+        this.taskNodeFormType = taskNodeFormType;
+        this.taskNodeType = taskNodeType;
+        this.taskNodeExecuteType = taskNodeExecuteType;
+        this.taskNodeBefore = taskNodeBefore;
+        this.taskNodeAfter = taskNodeAfter;
+        this.taskNodeRolePermission = taskNodeRolePermission;
+        this.taskRemark = taskRemark;
+        this.taskNodeNumber = taskNodeNumber;
+        this.taskNodeWeight = taskNodeWeight;
+        this.taskNodeState = taskNodeState;
+        this.taskNodeOtherState = taskNodeOtherState;
+        this.taskPriority = taskPriority;
+        this.task1 = task1;
+        this.task2 = task2;
+        this.task3 = task3;
+        this.task4 = task4;
+        this.task5 = task5;
+        this.delFlag = delFlag;
+    }
+
+    public BpmExecuteNodeLog() {
+    }
+
+    public BpmExecuteNodeLog(BpmExecuteNode bpmExecuteNode) {
+        this.id = bpmExecuteNode.getId();
+        this.taskProcessKey = bpmExecuteNode.getTaskProcessKey();
+        this.taskNodeKey = bpmExecuteNode.getTaskNodeKey();
+        this.taskNodeName = bpmExecuteNode.getTaskNodeName();
+        this.taskNodeFormKey = bpmExecuteNode.getTaskNodeFormKey();
+        this.taskNodeFormType = bpmExecuteNode.getTaskNodeFormType();
+        this.taskNodeType = bpmExecuteNode.getTaskNodeType();
+        this.taskNodeExecuteType = bpmExecuteNode.getTaskNodeExecuteType();
+        this.taskNodeBefore = bpmExecuteNode.getTaskNodeBefore();
+        this.taskNodeAfter = bpmExecuteNode.getTaskNodeAfter();
+        this.taskNodeRolePermission = bpmExecuteNode.getTaskNodeRolePermission();
+        this.taskRemark = bpmExecuteNode.getTaskRemark();
+        this.taskNodeNumber = bpmExecuteNode.getTaskNodeNumber();
+        this.taskNodeWeight = bpmExecuteNode.getTaskNodeWeight();
+        this.taskNodeState = bpmExecuteNode.getTaskNodeState();
+        this.taskNodeOtherState = bpmExecuteNode.getTaskNodeOtherState();
+        this.taskPriority = bpmExecuteNode.getTaskPriority();
+        this.task1 = bpmExecuteNode.getTask1();
+        this.task2 = bpmExecuteNode.getTask2();
+        this.task3 = bpmExecuteNode.getTask3();
+        this.task4 = bpmExecuteNode.getTask4();
+        this.task5 = bpmExecuteNode.getTask5();
+        this.delFlag = bpmExecuteNode.getDelFlag();
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTaskParentNodeKey() {
+        return taskParentNodeKey;
+    }
+
+    public void setTaskParentNodeKey(String taskParentNodeKey) {
+        this.taskParentNodeKey = taskParentNodeKey;
+    }
+
+    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 getTaskNodeName() {
+        return taskNodeName;
+    }
+
+    public void setTaskNodeName(String taskNodeName) {
+        this.taskNodeName = taskNodeName;
+    }
+
+    public String getTaskNodeFormKey() {
+        return taskNodeFormKey;
+    }
+
+    public void setTaskNodeFormKey(String taskNodeFormKey) {
+        this.taskNodeFormKey = taskNodeFormKey;
+    }
+
+    public String getTaskNodeFormType() {
+        return taskNodeFormType;
+    }
+
+    public void setTaskNodeFormType(String taskNodeFormType) {
+        this.taskNodeFormType = taskNodeFormType;
+    }
+
+    public String getTaskNodeType() {
+        return taskNodeType;
+    }
+
+    public void setTaskNodeType(String taskNodeType) {
+        this.taskNodeType = taskNodeType;
+    }
+
+    public String getTaskNodeExecuteType() {
+        return taskNodeExecuteType;
+    }
+
+    public void setTaskNodeExecuteType(String taskNodeExecuteType) {
+        this.taskNodeExecuteType = taskNodeExecuteType;
+    }
+
+    public String getTaskNodeBefore() {
+        return taskNodeBefore;
+    }
+
+    public void setTaskNodeBefore(String taskNodeBefore) {
+        this.taskNodeBefore = taskNodeBefore;
+    }
+
+    public String getTaskNodeAfter() {
+        return taskNodeAfter;
+    }
+
+    public void setTaskNodeAfter(String taskNodeAfter) {
+        this.taskNodeAfter = taskNodeAfter;
+    }
+
+    public String getTaskNodeRolePermission() {
+        return taskNodeRolePermission;
+    }
+
+    public void setTaskNodeRolePermission(String taskNodeRolePermission) {
+        this.taskNodeRolePermission = taskNodeRolePermission;
+    }
+
+    public String getTaskRemark() {
+        return taskRemark;
+    }
+
+    public void setTaskRemark(String taskRemark) {
+        this.taskRemark = taskRemark;
+    }
+
+    public String getTaskNodeNumber() {
+        return taskNodeNumber;
+    }
+
+    public void setTaskNodeNumber(String taskNodeNumber) {
+        this.taskNodeNumber = taskNodeNumber;
+    }
+
+    public String getTaskNodeWeight() {
+        return taskNodeWeight;
+    }
+
+    public void setTaskNodeWeight(String taskNodeWeight) {
+        this.taskNodeWeight = taskNodeWeight;
+    }
+
+    public String getTaskNodeState() {
+        return taskNodeState;
+    }
+
+    public void setTaskNodeState(String taskNodeState) {
+        this.taskNodeState = taskNodeState;
+    }
+
+    public String getTaskNodeOtherState() {
+        return taskNodeOtherState;
+    }
+
+    public void setTaskNodeOtherState(String taskNodeOtherState) {
+        this.taskNodeOtherState = taskNodeOtherState;
+    }
+
+    public String getTaskPriority() {
+        return taskPriority;
+    }
+
+    public void setTaskPriority(String taskPriority) {
+        this.taskPriority = taskPriority;
+    }
+
+    public String getTask1() {
+        return task1;
+    }
+
+    public void setTask1(String task1) {
+        this.task1 = task1;
+    }
+
+    public String getTask2() {
+        return task2;
+    }
+
+    public void setTask2(String task2) {
+        this.task2 = task2;
+    }
+
+    public String getTask3() {
+        return task3;
+    }
+
+    public void setTask3(String task3) {
+        this.task3 = task3;
+    }
+
+    public String getTask4() {
+        return task4;
+    }
+
+    public void setTask4(String task4) {
+        this.task4 = task4;
+    }
+
+    public String getTask5() {
+        return task5;
+    }
+
+    public void setTask5(String task5) {
+        this.task5 = task5;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder("BpmExecuteNodeLog{");
+        sb.append("id=").append(id);
+        sb.append(", taskParentNodeKey='").append(taskParentNodeKey).append('\'');
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", taskNodeName='").append(taskNodeName).append('\'');
+        sb.append(", taskNodeFormKey='").append(taskNodeFormKey).append('\'');
+        sb.append(", taskNodeFormType='").append(taskNodeFormType).append('\'');
+        sb.append(", taskNodeType='").append(taskNodeType).append('\'');
+        sb.append(", taskNodeExecuteType='").append(taskNodeExecuteType).append('\'');
+        sb.append(", taskNodeBefore='").append(taskNodeBefore).append('\'');
+        sb.append(", taskNodeAfter='").append(taskNodeAfter).append('\'');
+        sb.append(", taskNodeRolePermission='").append(taskNodeRolePermission).append('\'');
+        sb.append(", taskRemark='").append(taskRemark).append('\'');
+        sb.append(", taskNodeNumber='").append(taskNodeNumber).append('\'');
+        sb.append(", taskNodeWeight='").append(taskNodeWeight).append('\'');
+        sb.append(", taskNodeState='").append(taskNodeState).append('\'');
+        sb.append(", taskNodeOtherState='").append(taskNodeOtherState).append('\'');
+        sb.append(", taskPriority='").append(taskPriority).append('\'');
+        sb.append(", task1='").append(task1).append('\'');
+        sb.append(", task2='").append(task2).append('\'');
+        sb.append(", task3='").append(task3).append('\'');
+        sb.append(", task4='").append(task4).append('\'');
+        sb.append(", task5='").append(task5).append('\'');
+        sb.append(", delFlag='").append(delFlag).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 150 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteNodeMiddle.java

@@ -0,0 +1,150 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntityPlus;
+
+/**
+ * 执行流程用户、节点关联脚本中间对象 bpm_execute_node_middle
+ * 
+ * @author hzh
+ * @date 2023-11-01
+ */
+public class BpmExecuteNodeMiddle extends BaseEntityPlus
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 任务流程编码 */
+    @Excel(name = "节点编码")
+    private String taskProcessKey;
+
+    /** 节点编码 */
+    @Excel(name = "节点编码")
+    private String taskNodeKey;
+
+    /** 虚拟角色编码 */
+    @Excel(name = "虚拟角色编码")
+    private String taskVirtuallyRole;
+
+    /** 角色编码1,2,3 */
+    @Excel(name = "角色编码1,2,3")
+    private String taskRealRole;
+
+    /** 执行用户编号1,2,3 */
+    @Excel(name = "执行用户编号1,2,3")
+    private String taskExecuteUserNo;
+
+    /** 手动触发脚本编码1,2,3 */
+    @Excel(name = "异常触发脚本编码1,2,3")
+    private String taskArtificialScriptKey;
+
+    /** 自动触发脚本编码1,2,3(自动触发的脚本需要根据执行节点表中的节点前后执行) */
+    @Excel(name = "正常触发脚本编码(自动触发的脚本需要根据执行节点表中的节点前后执行)")
+    private String taskAutomaticScriptTriggerType;
+
+
+    /** 自动触发的脚本需要根据执行节点表中的节点前后执行 */
+    private String taskNodeAroundScriptKey;
+
+
+
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public String getTaskProcessKey() {
+        return taskProcessKey;
+    }
+
+    public void setTaskProcessKey(String taskProcessKey) {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public void setTaskNodeKey(String taskNodeKey)
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+    public void setTaskVirtuallyRole(String taskVirtuallyRole) 
+    {
+        this.taskVirtuallyRole = taskVirtuallyRole;
+    }
+
+    public String getTaskVirtuallyRole() 
+    {
+        return taskVirtuallyRole;
+    }
+    public void setTaskRealRole(String taskRealRole) 
+    {
+        this.taskRealRole = taskRealRole;
+    }
+
+    public String getTaskRealRole() 
+    {
+        return taskRealRole;
+    }
+    public void setTaskExecuteUserNo(String taskExecuteUserNo) 
+    {
+        this.taskExecuteUserNo = taskExecuteUserNo;
+    }
+
+    public String getTaskExecuteUserNo() 
+    {
+        return taskExecuteUserNo;
+    }
+    public void setTaskArtificialScriptKey(String taskArtificialScriptKey) 
+    {
+        this.taskArtificialScriptKey = taskArtificialScriptKey;
+    }
+
+    public String getTaskArtificialScriptKey() 
+    {
+        return taskArtificialScriptKey;
+    }
+    public void setTaskAutomaticScriptTriggerType(String taskAutomaticScriptTriggerType) 
+    {
+        this.taskAutomaticScriptTriggerType = taskAutomaticScriptTriggerType;
+    }
+
+    public String getTaskAutomaticScriptTriggerType() 
+    {
+        return taskAutomaticScriptTriggerType;
+    }
+
+    public String getTaskNodeAroundScriptKey() {
+        return taskNodeAroundScriptKey;
+    }
+
+    public void setTaskNodeAroundScriptKey(String taskNodeAroundScriptKey) {
+        this.taskNodeAroundScriptKey = taskNodeAroundScriptKey;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("BpmExecuteNodeMiddle{");
+        sb.append("id=").append(id);
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", taskVirtuallyRole='").append(taskVirtuallyRole).append('\'');
+        sb.append(", taskRealRole='").append(taskRealRole).append('\'');
+        sb.append(", taskExecuteUserNo='").append(taskExecuteUserNo).append('\'');
+        sb.append(", taskArtificialScriptKey='").append(taskArtificialScriptKey).append('\'');
+        sb.append(", taskAutomaticScriptTriggerType='").append(taskAutomaticScriptTriggerType).append('\'');
+        sb.append(", taskNodeAroundScriptKey='").append(taskNodeAroundScriptKey).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 200 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmExecuteProcess.java

@@ -0,0 +1,200 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntityPlus;
+
+import java.io.Serializable;
+
+/**
+ * 流程执行任务对象 bpm_execute_process
+ *
+ * @author hzh
+ * @date 2023-11-01
+ */
+public class BpmExecuteProcess extends BaseEntityPlus implements Serializable {
+    private static final long serialVersionUID = 435235L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 流程任务执行别名
+     */
+    @Excel(name = "流程任务执行别名")
+    private String taskKey;
+
+    /**
+     * 任务计划key租户业务表中的唯一编码
+     */
+    @Excel(name = "任务计划key租户业务表中的唯一编码")
+    private String taskPlanKey;
+
+    /**
+     * 任务名称,租户业务库中的计划名称(通过联合查询的方式得到)
+     */
+    @Excel(name = "任务名称")
+    private String taskName;
+
+    /**
+     * 任务节点别名(记录当前流程执行过的最后一个节点id)
+     */
+    @Excel(name = "任务节点别名", readConverterExp = "记=录当前流程执行过的最后一个节点id")
+    private String taskNodeKey;
+    /**
+     * 记录下一个需要执行的节点
+     */
+    @Excel(name = "任务节点别名", readConverterExp = "记录当前流程下一个执行节点")
+    private String taskNodeNextKey;
+
+    /**
+     * 定义的流程别名
+     */
+    @Excel(name = "定义的流程别名")
+    private String taskProcessKey;
+
+    /**
+     * xml标签内容
+     */
+    @Excel(name = "xml标签内容")
+    private String taskProcessXmlContent;
+
+    /**
+     * 任务流程状态
+     */
+    @Excel(name = "任务流程状态")
+    private Long taskProcessState;
+
+    /**
+     * 版本注释
+     */
+    @Excel(name = "版本注释")
+    private String taskProcessNote;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 流程类型
+     */
+    @Excel(name = "流程类型")
+    private String taskProcessType;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTaskKey() {
+        return taskKey;
+    }
+
+    public void setTaskKey(String taskKey) {
+        this.taskKey = taskKey;
+    }
+
+    public String getTaskPlanKey() {
+        return taskPlanKey;
+    }
+
+    public void setTaskPlanKey(String taskPlanKey) {
+        this.taskPlanKey = taskPlanKey;
+    }
+
+    public String getTaskName() {
+        return taskName;
+    }
+
+    public void setTaskName(String taskName) {
+        this.taskName = taskName;
+    }
+
+    public String getTaskNodeKey() {
+        return taskNodeKey;
+    }
+
+    public void setTaskNodeKey(String taskNodeKey) {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskProcessKey() {
+        return taskProcessKey;
+    }
+
+    public void setTaskProcessKey(String taskProcessKey) {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessXmlContent() {
+        return taskProcessXmlContent;
+    }
+
+    public void setTaskProcessXmlContent(String taskProcessXmlContent) {
+        this.taskProcessXmlContent = taskProcessXmlContent;
+    }
+
+    public Long getTaskProcessState() {
+        return taskProcessState;
+    }
+
+    public void setTaskProcessState(Long taskProcessState) {
+        this.taskProcessState = taskProcessState;
+    }
+
+    public String getTaskProcessNote() {
+        return taskProcessNote;
+    }
+
+    public void setTaskProcessNote(String taskProcessNote) {
+        this.taskProcessNote = taskProcessNote;
+    }
+
+    public String getDelFlag() {
+        return (delFlag == null || delFlag.isEmpty()) ? "0" : delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getTaskProcessType() {
+        return taskProcessType;
+    }
+
+    public void setTaskProcessType(String taskProcessType) {
+        this.taskProcessType = taskProcessType;
+    }
+
+    public String getTaskNodeNextKey() {
+        return taskNodeNextKey;
+    }
+
+    public void setTaskNodeNextKey(String taskNodeNextKey) {
+        this.taskNodeNextKey = taskNodeNextKey;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("BpmExecuteProcess{");
+        sb.append("id=").append(id);
+        sb.append(", taskKey='").append(taskKey).append('\'');
+        sb.append(", taskPlanKey='").append(taskPlanKey).append('\'');
+        sb.append(", taskName='").append(taskName).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", taskNodeNextKey='").append(taskNodeNextKey).append('\'');
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskProcessXmlContent='").append(taskProcessXmlContent).append('\'');
+        sb.append(", taskProcessState=").append(taskProcessState);
+        sb.append(", taskProcessNote='").append(taskProcessNote).append('\'');
+        sb.append(", delFlag='").append(delFlag).append('\'');
+        sb.append(", taskProcessType='").append(taskProcessType).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 98 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmNodeHandleUser.java

@@ -0,0 +1,98 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.io.Serializable;
+
+/**
+ * 节点处理用户对象 bpm_node_handle_user
+ *
+ * @author hzh
+ * @date 2023-10-26
+ */
+public class BpmNodeHandleUser extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1234L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 虚拟角色:勾选特定用户生成虚拟角色编号
+     */
+    @Excel(name = "虚拟角色:勾选特定用户生成虚拟角色编号")
+    private String virtuallyRole;
+
+    /**
+     * 真实角色:选择角色执行,存储真实角色编号(权限字符)
+     */
+    @Excel(name = "真实角色:选择角色执行,存储真实角色编号", readConverterExp = "权=限字符")
+    private String realRole;
+
+    /**
+     * 执行用户编号
+     */
+    @Excel(name = "执行用户编号")
+    private String executeUserNo;
+
+    public BpmNodeHandleUser(String virtuallyRole) {
+        this.virtuallyRole = virtuallyRole;
+    }
+
+    public BpmNodeHandleUser() {
+
+    }
+
+    public BpmNodeHandleUser(Long id, String virtuallyRole, String realRole, String executeUserNo) {
+        this.id = id;
+        this.virtuallyRole = virtuallyRole;
+        this.realRole = realRole;
+        this.executeUserNo = executeUserNo;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setVirtuallyRole(String virtuallyRole) {
+        this.virtuallyRole = virtuallyRole;
+    }
+
+    public String getVirtuallyRole() {
+        return virtuallyRole;
+    }
+
+    public void setRealRole(String realRole) {
+        this.realRole = realRole;
+    }
+
+    public String getRealRole() {
+        return realRole;
+    }
+
+    public void setExecuteUserNo(String executeUserNo) {
+        this.executeUserNo = executeUserNo;
+    }
+
+    public String getExecuteUserNo() {
+        return executeUserNo;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("virtuallyRole", getVirtuallyRole())
+                .append("realRole", getRealRole())
+                .append("executeUserNo", getExecuteUserNo())
+                .toString();
+    }
+}

+ 138 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmNodeScript.java

@@ -0,0 +1,138 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntityPlus;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 流程节点脚本对象 bpm_node_script
+ * 
+ * @author hzh
+ * @date 2023-10-26
+ */
+public class BpmNodeScript extends BaseEntityPlus
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 脚本编码 */
+    @Excel(name = "脚本编码")
+    private String scriptKey;
+
+    /** 脚本方法名称 */
+    @Excel(name = "脚本方法名称")
+    private String scriptFunctionName;
+
+    /** 脚本名称 */
+    @Excel(name = "脚本名称")
+    private String scriptName;
+
+    /** 脚本方法体 */
+    @Excel(name = "脚本方法体")
+    private String scriptFunctionCode;
+
+    /** 脚本类型 */
+    @Excel(name = "脚本类型")
+    private Long scriptType;
+
+    /** 脚本描述 */
+    @Excel(name = "脚本描述")
+    private String scriptDescription;
+
+    /** 删除标志(0:否;1:是) */
+    private String delFlag;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setScriptKey(String scriptKey) 
+    {
+        this.scriptKey = scriptKey;
+    }
+
+    public String getScriptKey() 
+    {
+        return scriptKey;
+    }
+    public void setScriptFunctionName(String scriptFunctionName) 
+    {
+        this.scriptFunctionName = scriptFunctionName;
+    }
+
+    public String getScriptFunctionName() 
+    {
+        return scriptFunctionName;
+    }
+    public void setScriptName(String scriptName) 
+    {
+        this.scriptName = scriptName;
+    }
+
+    public String getScriptName() 
+    {
+        return scriptName;
+    }
+    public void setScriptFunctionCode(String scriptFunctionCode) 
+    {
+        this.scriptFunctionCode = scriptFunctionCode;
+    }
+
+    public String getScriptFunctionCode() 
+    {
+        return scriptFunctionCode;
+    }
+    public void setScriptType(Long scriptType) 
+    {
+        this.scriptType = scriptType;
+    }
+
+    public Long getScriptType() 
+    {
+        return scriptType;
+    }
+    public void setScriptDescription(String scriptDescription) 
+    {
+        this.scriptDescription = scriptDescription;
+    }
+
+    public String getScriptDescription() 
+    {
+        return scriptDescription;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag.isEmpty() ? "0" : delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("scriptKey", getScriptKey())
+            .append("scriptFunctionName", getScriptFunctionName())
+            .append("scriptName", getScriptName())
+            .append("scriptFunctionCode", getScriptFunctionCode())
+            .append("scriptType", getScriptType())
+            .append("scriptDescription", getScriptDescription())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 140 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmNodeScriptRelevance.java

@@ -0,0 +1,140 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntityPlus;
+
+import java.io.Serializable;
+
+/**
+ * 流程节点脚本关联对象 bpm_node_script_relevance
+ *
+ * @author hzh
+ * @date 2023-10-26
+ */
+public class BpmNodeScriptRelevance extends BaseEntityPlus implements Serializable {
+    private static final long serialVersionUID = 1231251L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 节点编码
+     */
+    @Excel(name = "节点编码")
+    private String nodeKey;
+
+    /**
+     * 脚本编码
+     */
+    @Excel(name = "脚本编码")
+    private String scriptKey;
+
+    /**
+     * 异常节点表单
+     */
+    private String formKey;
+    /**
+     * 脚本触发机制(0:异常手动;1:正常自动;2:节点前后自动)
+     */
+    @Excel(name = "脚本触发机制", readConverterExp = "0=:异常脚本;1:正常脚本 2:节点前后自动")
+    private Long scriptTriggerType;
+    /**
+     * 异常节点名称
+     */
+    private String scriptNodeName;
+    /**
+     * 异常节点表单类型
+     */
+    private String scriptNodeFormType;
+
+    public String getFormKey() {
+        return formKey;
+    }
+
+    public void setFormKey(String formKey) {
+        this.formKey = formKey;
+    }
+
+    public String getScriptNodeName() {
+        return scriptNodeName;
+    }
+
+    public void setScriptNodeName(String scriptNodeName) {
+        this.scriptNodeName = scriptNodeName;
+    }
+
+    public BpmNodeScriptRelevance(String nodeKey) {
+        this.nodeKey = nodeKey;
+    }
+
+    public BpmNodeScriptRelevance() {
+    }
+
+    public BpmNodeScriptRelevance(Long id, String nodeKey, String scriptKey, Long scriptTriggerType, String formKey, String scriptNodeName, String scriptNodeFormType) {
+        this.id = id;
+        this.nodeKey = nodeKey;
+        this.scriptKey = scriptKey;
+        this.scriptTriggerType = scriptTriggerType;
+        this.formKey = formKey;
+        this.scriptNodeName = scriptNodeName;
+        this.scriptNodeFormType = scriptNodeFormType;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setNodeKey(String nodeKey) {
+        this.nodeKey = nodeKey;
+    }
+
+    public String getNodeKey() {
+        return nodeKey;
+    }
+
+    public void setScriptKey(String scriptKey) {
+        this.scriptKey = scriptKey;
+    }
+
+    public String getScriptKey() {
+        return scriptKey;
+    }
+
+    public void setScriptTriggerType(Long scriptTriggerType) {
+        this.scriptTriggerType = scriptTriggerType;
+    }
+
+    public Long getScriptTriggerType() {
+        return scriptTriggerType;
+    }
+
+    public String getScriptNodeFormType() {
+        return scriptNodeFormType;
+    }
+
+    public void setScriptNodeFormType(String scriptNodeFormType) {
+        this.scriptNodeFormType = scriptNodeFormType;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("BpmNodeScriptRelevance{");
+        sb.append("id=").append(id);
+        sb.append(", nodeKey='").append(nodeKey).append('\'');
+        sb.append(", scriptKey='").append(scriptKey).append('\'');
+        sb.append(", scriptTriggerType=").append(scriptTriggerType);
+        sb.append(", formKey='").append(formKey).append('\'');
+        sb.append(", scriptNodeName='").append(scriptNodeName).append('\'');
+        sb.append(", scriptNodeFormType='").append(scriptNodeFormType).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+
+
+}

+ 245 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmProcess.java

@@ -0,0 +1,245 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntityPlus;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 流程定义对象 bpm_process
+ *
+ * @author hzh
+ * @date 2023-10-10
+ */
+public class BpmProcess extends BaseEntityPlus implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long processId;
+
+    /**
+     * 流程名称
+     */
+    @Excel(name = "流程名称")
+    private String processName;
+
+    /**
+     * 流程别名
+     */
+    @Excel(name = "流程别名")
+    private String processKey;
+
+    /**
+     * 流程开启状态
+     */
+    @Excel(name = "流程开启状态")
+    private Long processOpneState;
+
+    /**
+     * 流程类型。例如(OA类型,mes类型)
+     */
+    @Excel(name = "流程类型。例如", readConverterExp = "O=A类型,mes类型")
+    private Long processType;
+
+    /**
+     * 流程部署时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "流程部署时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date processDeployTime;
+
+    /**
+     * 启动事件类型
+     */
+    @Excel(name = "启动事件类型")
+    private Long startEventType;
+
+    /**
+     * 版本注释
+     */
+    @Excel(name = "版本注释")
+    private String note;
+
+    /**
+     * 版本状态(0代表最新版本,1代表历史版本)
+     */
+    @Excel(name = "版本状态", readConverterExp = "0=代表最新版本,1代表历史版本")
+    private Long processVersion;
+
+    /**
+     * xml流文件
+     */
+    @Excel(name = "xml流文件")
+    private String processXml;
+
+    /**
+     * 节点json串
+     */
+    @Excel(name = "节点json串")
+    private String processJson;
+
+    /**
+     * xml标签内容
+     */
+    @Excel(name = "xml标签内容")
+    private String processXmlContent;
+
+    /**
+     * xml文件存放地址
+     */
+    @Excel(name = "xml文件存放地址")
+    private String processXmlPath;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    ///**
+    // *
+    // */
+    //private String delFlag;
+
+    /**
+     * 回传的xml流文件
+     */
+    // private MultipartFile fileXML;
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("BpmProcess{");
+        sb.append("processId=").append(processId);
+        sb.append(", processName='").append(processName).append('\'');
+        sb.append(", processKey='").append(processKey).append('\'');
+        sb.append(", processOpneState=").append(processOpneState);
+        sb.append(", processType=").append(processType);
+        sb.append(", processDeployTime=").append(processDeployTime);
+        sb.append(", startEventType=").append(startEventType);
+        sb.append(", note='").append(note).append('\'');
+        sb.append(", processVersion=").append(processVersion);
+        sb.append(", processXml='").append(processXml).append('\'');
+        sb.append(", processJson='").append(processJson).append('\'');
+        sb.append(", processXmlContent='").append(processXmlContent).append('\'');
+        sb.append(", processXmlPath='").append(processXmlPath).append('\'');
+        sb.append(", delFlag='").append(delFlag).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+
+    public Long getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(Long processId) {
+        this.processId = processId;
+    }
+
+    public String getProcessName() {
+        return processName;
+    }
+
+    public void setProcessName(String processName) {
+        this.processName = processName;
+    }
+
+    public String getProcessKey() {
+        return processKey;
+    }
+
+    public void setProcessKey(String processKey) {
+        this.processKey = processKey;
+    }
+
+    public Long getProcessOpneState() {
+        return processOpneState;
+    }
+
+    public void setProcessOpneState(Long processOpneState) {
+        this.processOpneState = processOpneState;
+    }
+
+    public Long getProcessType() {
+        return processType;
+    }
+
+    public void setProcessType(Long processType) {
+        this.processType = processType;
+    }
+
+    public Date getProcessDeployTime() {
+        return processDeployTime;
+    }
+
+    public void setProcessDeployTime(Date processDeployTime) {
+        this.processDeployTime = processDeployTime;
+    }
+
+    public Long getStartEventType() {
+        return startEventType;
+    }
+
+    public void setStartEventType(Long startEventType) {
+        this.startEventType = startEventType;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    public Long getProcessVersion() {
+        return processVersion;
+    }
+
+    public void setProcessVersion(Long processVersion) {
+        this.processVersion = processVersion;
+    }
+
+    public String getProcessXml() {
+        return processXml;
+    }
+
+    public void setProcessXml(String processXml) {
+        this.processXml = processXml;
+    }
+
+    public String getProcessJson() {
+        return processJson;
+    }
+
+    public void setProcessJson(String processJson) {
+        this.processJson = processJson;
+    }
+
+    public String getProcessXmlContent() {
+        return processXmlContent;
+    }
+
+    public void setProcessXmlContent(String processXmlContent) {
+        this.processXmlContent = processXmlContent;
+    }
+
+    public String getProcessXmlPath() {
+        return processXmlPath;
+    }
+
+    public void setProcessXmlPath(String processXmlPath) {
+        this.processXmlPath = processXmlPath;
+    }
+
+    public String getDelFlag() {
+        return (delFlag == null || delFlag.isEmpty()) ? "0" : delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+
+}

+ 264 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/BpmProcessConfiguration.java

@@ -0,0 +1,264 @@
+package com.zkqy.execution.produce.dispersed.entity;
+
+import com.zkqy.common.core.domain.BaseEntityPlus;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.io.Serializable;
+
+/**
+ * 流程配置对象 bpm_process_configuration
+ *
+ * @author hzh
+ * @date 2023-10-20
+ */
+public class BpmProcessConfiguration extends BaseEntityPlus implements Serializable {
+
+    private static final long serialVersionUID = 123L;
+
+    /**
+     * 编号
+     */
+    private Long id;
+
+    /**
+     * 节点编号
+     */
+    private String nodeKey;
+
+    /**
+     * 节点名称
+     */
+    private String nodeName;
+
+    /**
+     * 表单编号
+     */
+    private String nodeFormKey;
+
+    /**
+     * 节点表单类型
+     */
+    private String nodeFormType;
+
+    /**
+     * 流程编号
+     */
+    private String nodeProcessKey;
+
+    /**
+     * 节点类型
+     */
+    private String nodeType;
+
+    /**
+     * 节点执行类型(0:自动执行;1:手动执行)
+     */
+    private String nodeExecuteType;
+
+    /**
+     * 节点前
+     */
+    private String nodeBefore;
+
+    /**
+     * 节点后
+     */
+    private String nodeAfter;
+
+    /**
+     * 角色权限
+     */
+    private String nodeRolePermission;
+
+    /**
+     * 备用字段1
+     */
+    private String spare1;
+
+    /**
+     * 备用字段2
+     */
+    private String spare2;
+
+    /**
+     * 备用字段3
+     */
+    private String spare3;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    public BpmProcessConfiguration() {
+    }
+
+    public BpmProcessConfiguration(String nodeProcessKey) {
+        this.nodeProcessKey = nodeProcessKey;
+    }
+
+    public BpmProcessConfiguration(Long id, String nodeKey, String nodeName, String nodeFormKey, String nodeFormType, String nodeProcessKey, String nodeType, String nodeExecuteType, String nodeBefore, String nodeAfter, String nodeRolePermission, String spare1, String spare2, String spare3, String delFlag) {
+        this.id = id;
+        this.nodeKey = nodeKey;
+        this.nodeName = nodeName;
+        this.nodeFormKey = nodeFormKey;
+        this.nodeFormType = nodeFormType;
+        this.nodeProcessKey = nodeProcessKey;
+        this.nodeType = nodeType;
+        this.nodeExecuteType = nodeExecuteType;
+        this.nodeBefore = nodeBefore;
+        this.nodeAfter = nodeAfter;
+        this.nodeRolePermission = nodeRolePermission;
+        this.spare1 = spare1;
+        this.spare2 = spare2;
+        this.spare3 = spare3;
+        this.delFlag = delFlag;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getNodeKey() {
+        return nodeKey;
+    }
+
+    public void setNodeKey(String nodeKey) {
+        this.nodeKey = nodeKey;
+    }
+
+    public String getNodeName() {
+        return nodeName;
+    }
+
+    public void setNodeName(String nodeName) {
+        this.nodeName = nodeName;
+    }
+
+    public String getNodeFormKey() {
+        return nodeFormKey;
+    }
+
+    public void setNodeFormKey(String nodeFormKey) {
+        this.nodeFormKey = nodeFormKey;
+    }
+
+    public String getNodeFormType() {
+        return nodeFormType;
+    }
+
+    public void setNodeFormType(String nodeFormType) {
+        this.nodeFormType = nodeFormType;
+    }
+
+    public String getNodeProcessKey() {
+        return nodeProcessKey;
+    }
+
+    public void setNodeProcessKey(String nodeProcessKey) {
+        this.nodeProcessKey = nodeProcessKey;
+    }
+
+    public String getNodeType() {
+        return nodeType;
+    }
+
+    public void setNodeType(String nodeType) {
+        this.nodeType = nodeType;
+    }
+
+    public String getNodeExecuteType() {
+        return nodeExecuteType;
+    }
+
+    public void setNodeExecuteType(String nodeExecuteType) {
+        this.nodeExecuteType = nodeExecuteType;
+    }
+
+    public String getNodeBefore() {
+        return nodeBefore;
+    }
+
+    public void setNodeBefore(String nodeBefore) {
+        this.nodeBefore = nodeBefore;
+    }
+
+    public String getNodeAfter() {
+        return nodeAfter;
+    }
+
+    public void setNodeAfter(String nodeAfter) {
+        this.nodeAfter = nodeAfter;
+    }
+
+    public String getNodeRolePermission() {
+        return nodeRolePermission;
+    }
+
+    public void setNodeRolePermission(String nodeRolePermission) {
+        this.nodeRolePermission = nodeRolePermission;
+    }
+
+    public String getSpare1() {
+        return spare1;
+    }
+
+    public void setSpare1(String spare1) {
+        this.spare1 = spare1;
+    }
+
+    public String getSpare2() {
+        return spare2;
+    }
+
+    public void setSpare2(String spare2) {
+        this.spare2 = spare2;
+    }
+
+    public String getSpare3() {
+        return spare3;
+    }
+
+    public void setSpare3(String spare3) {
+        this.spare3 = spare3;
+    }
+
+    public String getDelFlag() {
+        return (delFlag == null || delFlag.isEmpty()) ? "0" : delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("nodeKey", getNodeKey())
+                .append("nodeName", getNodeName())
+                .append("nodeFormKey", getNodeFormKey())
+                .append("nodeFormType", getNodeFormType())
+                .append("nodeProcessKey", getNodeProcessKey())
+                .append("nodeType", getNodeType())
+                .append("nodeExecuteType",getNodeExecuteType())
+                .append("nodeBefore", getNodeBefore())
+                .append("nodeAfter", getNodeAfter())
+                .append("nodeRolePermission", getNodeRolePermission())
+                .append("spare1", getSpare1())
+                .append("spare2", getSpare2())
+                .append("spare3", getSpare3())
+                .append("delFlag", getDelFlag())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("remark", getRemark())
+                .toString();
+    }
+}

+ 108 - 5
zkqy-business/src/main/java/com/zkqy/business/entity/CommonEntity.java → zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/CommonEntity.java

@@ -1,7 +1,10 @@
-package com.zkqy.business.entity;
+package com.zkqy.execution.produce.dispersed.entity;
 
 import com.zkqy.common.core.domain.BaseEntity;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -12,9 +15,9 @@ import java.util.Map;
  * @author hanzihang
  * @date 2023/7/19 4:05 PM
  */
-public class CommonEntity extends BaseEntity {
+public class CommonEntity extends BaseEntity implements Serializable,Cloneable {
 
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 2938L;
 
     /**
      * 基本参数Map(例如tableName,pagesize。。。)
@@ -51,7 +54,6 @@ public class CommonEntity extends BaseEntity {
      */
     private String execlMap;
 
-
     /**
      * 点击按钮携带的参数
      */
@@ -88,6 +90,10 @@ public class CommonEntity extends BaseEntity {
         return sb.toString();
     }
 
+    @Override
+    public CommonEntity clone() throws CloneNotSupportedException {
+        return (CommonEntity) super.clone();
+    }
     public CommonEntity(Map<String, Object> basicMap, Map<String, Object> queryMap, Map<String, Object> conditionMap, Map<String, Object> resultMap, Map<String, Object> commMap, List<Map<String, String>> addListMap, String execlMap, Map<String, Object> btnParametersMap) {
         this.basicMap = basicMap;
         this.queryMap = queryMap;
@@ -100,6 +106,14 @@ public class CommonEntity extends BaseEntity {
     }
 
     public CommonEntity() {
+        this.basicMap = new HashMap<>();
+        this.queryMap = new HashMap<>();
+        this.conditionMap = new HashMap<>();
+        this.resultMap = new HashMap<>();
+        this.commMap = new HashMap<>();
+        this.addListMap = new ArrayList<>();
+        this.execlMap = "";
+        this.btnParametersMap = new HashMap<>();
     }
 
 
@@ -151,4 +165,93 @@ public class CommonEntity extends BaseEntity {
         this.execlMap = execlMap;
     }
 
-}
+}
+/*
+
+insertCommonEntitylist:[
+        {
+            "basicMap": {
+                "tableName": "student"
+            },
+            "addListMap": [
+                {
+                    "sSex": "2",
+                    "sName": "名字2",
+                    "sAge": "18",
+                    "sInsTime": ""
+                }
+            ]
+        },
+        {
+            "basicMap": {
+                "tableName": "student"
+            },
+            "addListMap": [
+                {
+                    "sSex": "2",
+                    "sName": "名字2",
+                    "sAge": "18",
+                    "sInsTime": ""
+                }
+            ]
+        }
+
+]
+
+
+          //  新增
+        let add = {
+            "basicMap": {
+                "tableName": "student"
+            },
+            "addListMap": [
+                {
+                    "sSex": "2",
+                    "sName": "名字2",
+                    "sAge": "18",
+                    "sInsTime": ""
+                }
+            ]
+        }
+       // 修改穿传参
+      let updateData = {
+        // 基本参数
+        basicMap: {
+          // 表名
+          tableName: this.tableName,
+        },
+        // 条件参数(可多个参数做条件,基本是唯一标识做条件)
+        conditionMap: {
+          k: "v",
+          ...
+        },
+        // 需要修改表的数据-》不可传输唯一标识主键等
+        commMap: {
+          k: "v",
+          ...
+        }
+      }
+    // 查询传参
+    queryParams: {
+        pageNum: 1,                  // 第几页
+        pageSize: 10,                // 每页大小
+        orderByColumn: "",  // 根据某列排序
+        isAsc: this.sortState ? "DESC" : "ASC", // desc(降序)或 asc(升序)
+        // 基本查询参数
+        basicMap: {
+          tableName: "drag_form"
+        },
+        // 当前表字段筛选参数
+        queryMap: {                   // 当前查询基本参数
+          // ... key : value         当前页面的筛选条件
+          // 超级查询的唯一值
+          queryCriteriaValue: ""
+        }
+      },
+
+
+
+
+
+
+ */

+ 3 - 3
zkqy-business/src/main/java/com/zkqy/business/entity/TableSql.java → zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/TableSql.java

@@ -1,7 +1,7 @@
-package com.zkqy.business.entity;
+package com.zkqy.execution.produce.dispersed.entity;
 
 import com.zkqy.common.annotation.Excel;
-import com.zkqy.common.core.domain.BaseEntity;
+import com.zkqy.common.core.domain.BaseEntityPlus;
 
 /**
  * table 联合查询sql存储对象 table_sql
@@ -9,7 +9,7 @@ import com.zkqy.common.core.domain.BaseEntity;
  * @author ruoyi
  * @date 2023-07-19
  */
-public class TableSql extends BaseEntity {
+public class TableSql extends BaseEntityPlus {
     private static final long serialVersionUID = 1L;
 
     /**

部分文件因为文件数量过多而无法显示