3 Коміти 9c8ca6c761 ... c117b16b5a

Автор SHA1 Опис Дата
  晴为镜 c117b16b5a 自定义按钮类型补充上传 1 тиждень тому
  晴为镜 faf0e485ce Merge remote-tracking branch 'origin/master' 1 тиждень тому
  晴为镜 aa02977ac0 业务逻辑模块开发(脚本和脚本页面配置) 1 тиждень тому
38 змінених файлів з 2457 додано та 23 видалено
  1. 107 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowScriptController.java
  2. 141 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowScriptVuePageLinkController.java
  3. 115 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowVuePageController.java
  4. 88 14
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysLoginController.java
  5. 10 2
      zkqy-admin/src/main/resources/application.yml
  6. 39 3
      zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java
  7. 29 0
      zkqy-business/src/main/java/com/zkqy/business/entity/DragTableBtn.java
  8. 18 0
      zkqy-business/src/main/resources/mapper/dragmapper/DragTableBtnMapper.xml
  9. 12 0
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysTenant.java
  10. 2 1
      zkqy-framework/src/main/java/com/zkqy/framework/config/SecurityConfig.java
  11. 54 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BusinessLogicController.java
  12. 39 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/busLogic/BusLogicDto.java
  13. 35 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/busLogic/BusLogicVueDto.java
  14. 133 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/runbpm/BusinessLogicToolClass.java
  15. 64 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/IBusinessLogicService.java
  16. 0 1
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/DynamicJavaServiceImpl.java
  17. 58 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/busLogic/IBusinessLogicServiceImpl.java
  18. 2 2
      zkqy-process-execution/src/main/resources/mapper/bpm/dispersed/BpmApprovalStatusMapper.xml
  19. 195 0
      zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowScript.java
  20. 87 0
      zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowScriptVuePageLink.java
  21. 181 0
      zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowVuePage.java
  22. 63 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowScriptMapper.java
  23. 65 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowScriptVuePageLinkMapper.java
  24. 64 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowVuePageMapper.java
  25. 2 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysUserMapper.java
  26. 70 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowScriptService.java
  27. 65 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowScriptVuePageLinkService.java
  28. 65 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowVuePageService.java
  29. 2 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysUserService.java
  30. 102 0
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowScriptServiceImpl.java
  31. 99 0
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowScriptVuePageLinkServiceImpl.java
  32. 102 0
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowVuePageServiceImpl.java
  33. 5 0
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysUserServiceImpl.java
  34. 131 0
      zkqy-system/src/main/resources/mapper/system/SysBusinessFlowScriptMapper.xml
  35. 78 0
      zkqy-system/src/main/resources/mapper/system/SysBusinessFlowScriptVuePageLinkMapper.xml
  36. 126 0
      zkqy-system/src/main/resources/mapper/system/SysBusinessFlowVuePageMapper.xml
  37. 5 0
      zkqy-system/src/main/resources/mapper/system/SysTenantMapper.xml
  38. 4 0
      zkqy-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 107 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowScriptController.java

@@ -0,0 +1,107 @@
+package com.zkqy.web.controller.system;
+
+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.system.domain.SysBusinessFlowScript;
+import com.zkqy.system.service.ISysBusinessFlowScriptService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 业务脚本Controller
+ *
+ * @author zkqy
+ * @date 2025-05-19
+ */
+@RestController
+@RequestMapping("/system/SysBusinessFlowScript")
+@Api(value = "/system/SysBusinessFlowScript", description = "业务脚本-接口")
+public class SysBusinessFlowScriptController extends BaseController
+{
+    @Autowired
+    private ISysBusinessFlowScriptService sysBusinessFlowScriptService;
+
+    /**
+     * 查询业务脚本列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScript:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询业务脚本列表")
+    public TableDataInfo list(SysBusinessFlowScript sysBusinessFlowScript)
+    {
+        startPage();
+        List<SysBusinessFlowScript> list = sysBusinessFlowScriptService.selectSysBusinessFlowScriptList(sysBusinessFlowScript);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出业务脚本列表
+     */
+//    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScript:export')")
+    @Log(title = "业务脚本", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出业务脚本列表")
+    public void export(HttpServletResponse response, SysBusinessFlowScript sysBusinessFlowScript)
+    {
+        List<SysBusinessFlowScript> list = sysBusinessFlowScriptService.selectSysBusinessFlowScriptList(sysBusinessFlowScript);
+        ExcelUtil<SysBusinessFlowScript> util = new ExcelUtil<SysBusinessFlowScript>(SysBusinessFlowScript.class);
+        util.exportExcel(response, list, "业务脚本数据");
+    }
+
+    /**
+     * 获取业务脚本详细信息
+     */
+//    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScript:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取业务脚本详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(sysBusinessFlowScriptService.selectSysBusinessFlowScriptById(id));
+    }
+
+    /**
+     * 新增业务脚本
+     */
+//    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScript:add')")
+    @Log(title = "业务脚本", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增业务脚本")
+    public AjaxResult add(@RequestBody SysBusinessFlowScript sysBusinessFlowScript)
+    {
+        return toAjax(sysBusinessFlowScriptService.insertSysBusinessFlowScript(sysBusinessFlowScript));
+    }
+
+    /**
+     * 修改业务脚本
+     */
+//    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScript:edit')")
+    @Log(title = "业务脚本", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改业务脚本")
+    public AjaxResult edit(@RequestBody SysBusinessFlowScript sysBusinessFlowScript)
+    {
+        return toAjax(sysBusinessFlowScriptService.updateSysBusinessFlowScript(sysBusinessFlowScript));
+    }
+
+    /**
+     * 删除业务脚本
+     */
+//    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScript:remove')")
+    @Log(title = "业务脚本", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除业务脚本")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(sysBusinessFlowScriptService.deleteSysBusinessFlowScriptByIds(ids));
+    }
+}

+ 141 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowScriptVuePageLinkController.java

@@ -0,0 +1,141 @@
+package com.zkqy.web.controller.system;
+
+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.system.domain.SysBusinessFlowScriptVuePageLink;
+import com.zkqy.system.service.ISysBusinessFlowScriptVuePageLinkService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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 2025-05-19
+ */
+@RestController
+@RequestMapping("/system/vuePageLink")
+@Api(value = "/system/SysBusinessFlowScriptVuePageLink", description = "脚本和页面的关联-接口")
+public class SysBusinessFlowScriptVuePageLinkController extends BaseController
+{
+    @Autowired
+    private ISysBusinessFlowScriptVuePageLinkService sysBusinessFlowScriptVuePageLinkService;
+
+    /**
+     * 查询脚本和页面的关联列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScriptVuePageLink:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询脚本和页面的关联列表")
+    public TableDataInfo list(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+    {
+        startPage();
+        List<SysBusinessFlowScriptVuePageLink> list = sysBusinessFlowScriptVuePageLinkService.selectSysBusinessFlowScriptVuePageLinkList(sysBusinessFlowScriptVuePageLink);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出脚本和页面的关联列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScriptVuePageLink:export')")
+    @Log(title = "脚本和页面的关联", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出脚本和页面的关联列表")
+    public void export(HttpServletResponse response, SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+    {
+        List<SysBusinessFlowScriptVuePageLink> list = sysBusinessFlowScriptVuePageLinkService.selectSysBusinessFlowScriptVuePageLinkList(sysBusinessFlowScriptVuePageLink);
+        ExcelUtil<SysBusinessFlowScriptVuePageLink> util = new ExcelUtil<SysBusinessFlowScriptVuePageLink>(SysBusinessFlowScriptVuePageLink.class);
+        util.exportExcel(response, list, "脚本和页面的关联数据");
+    }
+
+    /**
+     * 获取脚本和页面的关联详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScriptVuePageLink:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取脚本和页面的关联详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(sysBusinessFlowScriptVuePageLinkService.selectSysBusinessFlowScriptVuePageLinkById(id));
+    }
+    /**
+     * 获取脚本和页面的关联详细信息
+     */
+    @PostMapping(value = "/getByVueKeyAndContent")
+    @ApiOperation(value = "获取脚本和页面的关联详细信息")
+    public AjaxResult getByVueKeyAndContent(@RequestBody SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+    {
+        List<SysBusinessFlowScriptVuePageLink> list = sysBusinessFlowScriptVuePageLinkService.selectSysBusinessFlowScriptVuePageLinkList(sysBusinessFlowScriptVuePageLink);
+        if (list == null || list.size() != 1){
+            return success("未绑定");
+        }
+        return success(list.get(0));
+    }
+    /**
+     * 新增脚本和页面的关联
+     */
+    @Log(title = "脚本和页面的关联", businessType = BusinessType.INSERT)
+    @PostMapping("/updateOrInsert")
+    public AjaxResult updateOrInsert(@RequestBody SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+    {
+        //先查询出来有没有对应关系,有对应关系的话更新,没有对应关系的话新增
+        SysBusinessFlowScriptVuePageLink searchLink = new SysBusinessFlowScriptVuePageLink();
+        searchLink.setVueKey(sysBusinessFlowScriptVuePageLink.getVueKey());
+        searchLink.setVueContent(sysBusinessFlowScriptVuePageLink.getVueContent());
+        List<SysBusinessFlowScriptVuePageLink> res = sysBusinessFlowScriptVuePageLinkService.selectSysBusinessFlowScriptVuePageLinkList(searchLink);
+        int i = 0;
+        // 新增
+        if (res == null || res.isEmpty()){
+            i = sysBusinessFlowScriptVuePageLinkService.insertSysBusinessFlowScriptVuePageLink(sysBusinessFlowScriptVuePageLink);
+        }else if(res!= null && res.size() == 1){
+            i = sysBusinessFlowScriptVuePageLinkService.updateSysBusinessFlowScriptVuePageLink(sysBusinessFlowScriptVuePageLink);
+        }
+        return toAjax(i);
+    }
+
+    /**
+     * 新增脚本和页面的关联
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScriptVuePageLink:add')")
+    @Log(title = "脚本和页面的关联", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增脚本和页面的关联")
+    public AjaxResult add(@RequestBody SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+    {
+        return toAjax(sysBusinessFlowScriptVuePageLinkService.insertSysBusinessFlowScriptVuePageLink(sysBusinessFlowScriptVuePageLink));
+    }
+
+//    /**
+//     * 修改脚本和页面的关联
+//     */
+//    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScriptVuePageLink:edit')")
+//    @Log(title = "脚本和页面的关联", businessType = BusinessType.UPDATE)
+//    @PutMapping
+//    @ApiOperation(value = "修改脚本和页面的关联")
+//    public AjaxResult edit(@RequestBody SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+//    {
+//        return toAjax(sysBusinessFlowScriptVuePageLinkService.updateSysBusinessFlowScriptVuePageLink(sysBusinessFlowScriptVuePageLink));
+//    }
+
+    /**
+     * 删除脚本和页面的关联
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowScriptVuePageLink:remove')")
+    @Log(title = "脚本和页面的关联", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除脚本和页面的关联")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(sysBusinessFlowScriptVuePageLinkService.deleteSysBusinessFlowScriptVuePageLinkByIds(ids));
+    }
+}

+ 115 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowVuePageController.java

@@ -0,0 +1,115 @@
+package com.zkqy.web.controller.system;
+
+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.system.domain.SysBusinessFlowVuePage;
+import com.zkqy.system.service.ISysBusinessFlowVuePageService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 存放业务脚本的vue页面Controller
+ *
+ * @author zkqy
+ * @date 2025-05-19
+ */
+@RestController
+@RequestMapping("/system/SysBusinessFlowVuePage")
+@Api(value = "/system/SysBusinessFlowVuePage", description = "存放业务脚本的vue页面-接口")
+public class SysBusinessFlowVuePageController extends BaseController
+{
+    @Autowired
+    private ISysBusinessFlowVuePageService sysBusinessFlowVuePageService;
+
+
+    /**
+     * 查询存放业务脚本的vue页面列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:SysBusinessFlowVuePage:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询存放业务脚本的vue页面列表")
+    public TableDataInfo list(SysBusinessFlowVuePage sysBusinessFlowVuePage)
+    {
+        startPage();
+        List<SysBusinessFlowVuePage> list = sysBusinessFlowVuePageService.selectSysBusinessFlowVuePageList(sysBusinessFlowVuePage);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出存放业务脚本的vue页面列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowVuePage:export')")
+    @Log(title = "存放业务脚本的vue页面", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出存放业务脚本的vue页面列表")
+    public void export(HttpServletResponse response, SysBusinessFlowVuePage sysBusinessFlowVuePage)
+    {
+        List<SysBusinessFlowVuePage> list = sysBusinessFlowVuePageService.selectSysBusinessFlowVuePageList(sysBusinessFlowVuePage);
+        ExcelUtil<SysBusinessFlowVuePage> util = new ExcelUtil<SysBusinessFlowVuePage>(SysBusinessFlowVuePage.class);
+        util.exportExcel(response, list, "存放业务脚本的vue页面数据");
+    }
+
+    /**
+     * 获取存放业务脚本的vue页面详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowVuePage:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取存放业务脚本的vue页面详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(sysBusinessFlowVuePageService.selectSysBusinessFlowVuePageById(id));
+    }
+    @GetMapping(value = "/getByVueKey")
+    @ApiOperation(value = "获取存放业务脚本的vue页面详细信息")
+    public AjaxResult getInfoByVueKey(String vueKey)
+    {
+        return success(sysBusinessFlowVuePageService.selectSysBusinessFlowVuePageByVueKey(vueKey));
+    }
+    /**
+     * 新增存放业务脚本的vue页面
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowVuePage:add')")
+    @Log(title = "存放业务脚本的vue页面", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增存放业务脚本的vue页面")
+    public AjaxResult add(@RequestBody SysBusinessFlowVuePage sysBusinessFlowVuePage)
+    {
+        return toAjax(sysBusinessFlowVuePageService.insertSysBusinessFlowVuePage(sysBusinessFlowVuePage));
+    }
+
+    /**
+     * 修改存放业务脚本的vue页面
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowVuePage:edit')")
+    @Log(title = "存放业务脚本的vue页面", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改存放业务脚本的vue页面")
+    public AjaxResult edit(@RequestBody SysBusinessFlowVuePage sysBusinessFlowVuePage)
+    {
+        return toAjax(sysBusinessFlowVuePageService.updateSysBusinessFlowVuePage(sysBusinessFlowVuePage));
+    }
+
+    /**
+     * 删除存放业务脚本的vue页面
+     */
+    @PreAuthorize("@ss.hasPermi('system:SysBusinessFlowVuePage:remove')")
+    @Log(title = "存放业务脚本的vue页面", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除存放业务脚本的vue页面")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(sysBusinessFlowVuePageService.deleteSysBusinessFlowVuePageByIds(ids));
+    }
+
+}

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

@@ -1,24 +1,22 @@
 package com.zkqy.web.controller.system;
 
 import java.nio.charset.StandardCharsets;
-import java.util.Base64;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 
-import com.zkqy.business.entity.MobilePageData;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.zkqy.business.service.IMobilePageDataService;
-import com.zkqy.common.core.domain.entity.DataSource;
 import com.zkqy.common.core.domain.entity.SysTenant;
-import com.zkqy.common.core.domain.model.LoginUser;
 import com.zkqy.common.utils.StringUtils;
 import com.zkqy.framework.web.service.TokenService;
-import com.zkqy.system.domain.LoginPageConfiguration;
 import com.zkqy.system.service.*;
-import com.zkqy.system.service.impl.LoginPageConfigurationServiceImpl;
-import com.zkqy.system.service.impl.SysTenantServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 import com.zkqy.common.constant.Constants;
@@ -49,15 +47,15 @@ public class SysLoginController {
     @Autowired
     private ISysUserService userService;
 
+    @Autowired
+    private ISysTenantService sysTenantService;
+
     @Autowired
     private ISysMenuService menuService;
 
     @Autowired
     private SysPermissionService permissionService;
 
-    @Resource
-    private SysTenantServiceImpl sysTenantService;
-
     @Resource
     private TokenService tokenService;
 
@@ -92,7 +90,11 @@ public class SysLoginController {
     //@Value("${parameter.ip.PROCESS_ENGINE_IP}")
     //public String PROCESS_ENGINE_IP;
 
-    RestTemplate restTemplate = new RestTemplate();
+    @Value("${wx.appid}")
+    private String appid;
+
+    @Value("${wx.appSecret}")
+    private String appSecret;
 
 
     /**
@@ -164,6 +166,78 @@ public class SysLoginController {
     }
 
     /**
+     * 登录方法
+     * 根据手机号 得到该手机号的租户,然后根据租户名称找到对应配置的首页html路径并且返回
+     * @return 结果
+     */
+    @GetMapping("/tenantLogin/mobile")
+    public AjaxResult tenantLogin(@RequestParam("phonenumber") String phonenumber) {
+        // 根据手机号查询到用户信息
+        if (StringUtils.isEmpty(phonenumber)) {
+            return AjaxResult.error("请输入手机号码");
+        }
+        // 开发人员特判,fjqy的小程序
+        Long tenantId = 0l;
+        if (phonenumber.equals("17395716650") || phonenumber.equals("19967487908")){
+            tenantId = 216l;
+        }else {
+            //同一个手机号只能对应一个账户
+            SysUser user = userService.selectUserByPhonenumber(phonenumber);
+            if (user == null || user.getUserId() == null) {
+                return AjaxResult.error("未查询到对应手机号的用户");
+            }
+            tenantId = user.getTenantId();
+        }
+        SysTenant sysTenant = sysTenantService.selectSysTenantByTenantId(tenantId);
+        if (sysTenant == null || sysTenant.getTenantId() == null){
+            return AjaxResult.error("该租户信息不存在");
+        }
+        if (StringUtils.isBlank(sysTenant.getTenantWechatIndexUrl())){
+            return AjaxResult.error("该租户未配置微信端首页");
+        }
+        return AjaxResult.success(sysTenant.getTenantWechatIndexUrl());
+    }
+
+    /**
+     * 微信小程序获取手机号
+     * @param
+     * @return
+     */
+    @PostMapping("/getPhoneNumber")
+    public Object getPhoneNumber(@RequestBody Map<String,Object> data)
+    {
+        //通过appid和secret来获取token
+        //WXContent.APPID是自定义的全局变量
+        String tokenUrl = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", appid, appSecret);
+        JSONObject token = JSON.parseObject(HttpUtil.get(tokenUrl));
+
+        //通过token和code来获取用户手机号
+        String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + token.getString("access_token");
+
+        //封装请求体
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("code", data.get("code").toString());
+
+        //封装请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+
+        HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(paramMap,headers);
+
+        //通过RestTemplate发送请求,获取到用户手机号码
+        RestTemplate restTemplate = new RestTemplate();
+        ResponseEntity<Map> response = restTemplate.postForEntity(url, httpEntity, Map.class);
+        JSONObject jsonObject = new JSONObject(response.getBody());
+        Object errmsg = jsonObject.get("errmsg");
+        if (errmsg != null && errmsg.equals("ok")){
+            JSONObject phoneInfo = jsonObject.getJSONObject("phone_info");
+            String string = phoneInfo.getString("phoneNumber");
+            return AjaxResult.success("成功",string);
+        }else{
+            return AjaxResult.error("获取手机号失败");
+        }
+    }
+    /*
      * 单点登录调用模拟登录方法
      *
      * @param loginInfo 登录信息

+ 10 - 2
zkqy-admin/src/main/resources/application.yml

@@ -197,7 +197,12 @@ cas:
 
 projectDownloadZip:
   mysql: /usr/local/mysql/bin/mysqldump
-
+template:
+  urluPload: D:\zkqy\test\a\
+  pageUrl: D:\zkqy\test\a\
+  urlBusiness:
+    javaDownload: D:\zkqy\businessTemplate\template.java
+    vueDownload: D:\zkqy\businessTemplate\template.vue
 OpenAuthorization2:
   MES:
     # 单点获取code、token、userinfo主机地址
@@ -209,4 +214,7 @@ OpenAuthorization2:
     # 回调地址
     CALLBACK: http://192.168.110.83:8066/oauth/callback
     #
-    NAME: hmc
+    NAME: hmc
+wx:
+  appid: wxfdd29de608e6ebc1
+  appSecret: 2738a651b015f6002b89b45d8bdcedc2

+ 39 - 3
zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java

@@ -2,7 +2,6 @@ package com.zkqy.business.controller;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.alibaba.fastjson2.TypeReference;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.zkqy.business.entity.DragForm;
@@ -20,15 +19,20 @@ import com.zkqy.common.utils.StringUtils;
 import com.zkqy.common.utils.form.FromUtils;
 import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
 import com.zkqy.execution.produce.dispersed.entity.DragFormGroup;
+import com.zkqy.execution.produce.dispersed.entity.busLogic.BusLogicDto;
 import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormDateVo;
 import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeFormMapper;
+import com.zkqy.execution.produce.dispersed.runbpm.BusinessLogicToolClass;
 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 com.zkqy.execution.produce.dispersed.service.ICommonService;
 import com.zkqy.execution.produce.dispersed.service.IDragFormGroupService;
 import com.zkqy.execution.produce.utils.EchoNodeFormData;
-import org.apache.tools.ant.taskdefs.Sleep;
+import com.zkqy.system.domain.SysBusinessFlowVuePage;
+import com.zkqy.system.service.ISysBusinessFlowScriptService;
+import com.zkqy.system.service.ISysBusinessFlowScriptVuePageLinkService;
+import com.zkqy.system.service.ISysBusinessFlowVuePageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -55,6 +59,8 @@ public class CommonBtnController extends BaseController {
     @Resource
     private FromUtils fromUtils;
 
+    @Resource
+    private BusinessLogicToolClass businessLogicToolClass;
 
     @Resource
     private IDragTableGroupService dragTableGroupService;
@@ -80,6 +86,9 @@ public class CommonBtnController extends BaseController {
     @Autowired
     private DragTableBtnServiceImpl dragTableBtnService;
 
+    @Autowired
+    private ISysBusinessFlowVuePageService iSysBusinessFlowVuePageService;
+
     /**
      * 处理按钮通用接口(新增、修改、删除...)
      * 判断什么类型走什么接口: visible  false代表弹窗未开启时走回显表单模板及数据信息接口;true代表弹窗开启时走保存数据接口
@@ -111,12 +120,39 @@ public class CommonBtnController extends BaseController {
                 return executeBtn(commonEntity, dragTableBtn);
             case "INITIATED":  // 发起流程
                 return initiatedBtn(commonEntity, dragTableBtn);
-            case "CALCULATE":
+            case "CALCULATE": //计算合计
                 return calculateBtn(commonEntity, dragTableBtn);
+            case "BUSINESSSCRIPT": // 执行业务流程脚本
+                return businessScriptBtn(commonEntity, dragTableBtn);
+            case "BUSINESSSCRIPTPAGE": // 开发业务脚本的页面 (具体脚本在页面中配置)
+                return businessScriptPageBtn(commonEntity, dragTableBtn);
             default:
                 return warn("暂不支持该操作!");
         }
     }
+    // 执行业务流程脚本
+    private AjaxResult businessScriptBtn(CommonEntity commonEntity, DragTableBtn dragTableBtn) {
+        String btnBusinessFlowScriptKey = dragTableBtn.getBtnBusinessFlowScriptKey();
+        String btnBusinessFlowScriptType = dragTableBtn.getBtnBusinessFlowScriptType();
+        //最后判断一下,然后执行脚本
+        if (StringUtils.isNotBlank(btnBusinessFlowScriptType)) {
+            BusLogicDto busLogicDto = new BusLogicDto();
+            busLogicDto.setParams(commonEntity.getConditionMap());
+            busLogicDto.setBusinessType(btnBusinessFlowScriptType);
+            busLogicDto.setBusinessKey(btnBusinessFlowScriptKey);
+            return businessLogicToolClass.RunIBusinessLogicServiceClassCode(busLogicDto);
+        }
+        return error("参数有误,请联系管理员");
+    }
+    // 打开业务脚本的页面 (具体脚本在页面中配置)
+    private AjaxResult businessScriptPageBtn(CommonEntity commonEntity, DragTableBtn dragTableBtn) {
+        String vueKey = dragTableBtn.getBtnBusinessFlowVueKey();
+        SysBusinessFlowVuePage sysBusinessFlowVuePage = iSysBusinessFlowVuePageService.selectSysBusinessFlowVuePageByVueKey(vueKey);
+        if (sysBusinessFlowVuePage == null) {
+            return error("找不到对应的页面");
+        }
+        return AjaxResult.success(sysBusinessFlowVuePage.getVueCode());
+    }
 
     private AjaxResult calculateBtn(CommonEntity commonEntity, DragTableBtn dragTableBtn) {
         //点击按钮触发的操作 visible状态用来区分是否是打开还是关闭状态

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

@@ -116,6 +116,11 @@ public class DragTableBtn extends BaseEntity {
      */
     private String delFlag;
 
+    private String btnBusinessFlowScriptKey;
+
+    private String btnBusinessFlowScriptType;
+
+    private String btnBusinessFlowVueKey;
 
     /**
      * 子菜单
@@ -317,4 +322,28 @@ public class DragTableBtn extends BaseEntity {
         sb.append('}');
         return sb.toString();
     }
+
+    public String getBtnBusinessFlowScriptKey() {
+        return btnBusinessFlowScriptKey;
+    }
+
+    public void setBtnBusinessFlowScriptKey(String btnBusinessFlowScriptKey) {
+        this.btnBusinessFlowScriptKey = btnBusinessFlowScriptKey;
+    }
+
+    public String getBtnBusinessFlowScriptType() {
+        return btnBusinessFlowScriptType;
+    }
+
+    public void setBtnBusinessFlowScriptType(String btnBusinessFlowScriptType) {
+        this.btnBusinessFlowScriptType = btnBusinessFlowScriptType;
+    }
+
+    public String getBtnBusinessFlowVueKey() {
+        return btnBusinessFlowVueKey;
+    }
+
+    public void setBtnBusinessFlowVueKey(String btnBusinessFlowVueKey) {
+        this.btnBusinessFlowVueKey = btnBusinessFlowVueKey;
+    }
 }

+ 18 - 0
zkqy-business/src/main/resources/mapper/dragmapper/DragTableBtnMapper.xml

@@ -23,6 +23,9 @@
         <result property="btnParams" column="btn_params"/>
         <result property="btnHasPermi" column="btn_has_permi"/>
         <result property="btnSort" column="btn_sort"/>
+        <result property="btnBusinessFlowScriptKey" column="btn_business_flow_script_key"/>
+        <result property="btnBusinessFlowScriptType" column="btn_business_flow_script_type"/>
+        <result property="btnBusinessFlowVueKey" column="btn_business_flow_vue_key"/>
         <result property="delFlag" column="del_flag"/>
         <result property="createBy" column="create_by"/>
         <result property="createById" column="create_by_id"/>
@@ -52,6 +55,9 @@
                btn_params,
                btn_has_permi,
                btn_sort,
+               btn_business_flow_script_key,
+               btn_business_flow_script_type,
+               btn_business_flow_vue_key,
                del_flag,
                create_by,
                create_by_id,
@@ -84,6 +90,9 @@
         <if test="btnParams != null  and btnParams != ''">and btn_params = #{btnParams}</if>
         <if test="btnHasPermi != null  and btnHasPermi != ''">and btn_has_permi = #{btnHasPermi}</if>
         <if test="btnSort != null ">and btn_sort = #{btnSort}</if>
+        <if test="btnBusinessFlowScriptKey != null ">and btn_business_flow_script_key = #{btnBusinessFlowScriptKey}</if>
+        <if test="btnBusinessFlowScriptType != null ">and btn_business_flow_script_type = #{btnBusinessFlowScriptType}</if>
+        <if test="btnBusinessFlowVueKey != null ">and btn_business_flow_vue_key = #{btnBusinessFlowVueKey}</if>
         <if test="createById != null ">and create_by_id = #{createById}</if>
         <if test="updateById != null ">and update_by_id = #{updateById}</if>
         order by btn_sort asc
@@ -113,6 +122,9 @@
             <if test="btnParams != null">btn_params,</if>
             <if test="btnHasPermi != null">btn_has_permi,</if>
             <if test="btnSort != null">btn_sort,</if>
+            <if test="btnBusinessFlowScriptKey != null">btn_business_flow_script_key,</if>
+            <if test="btnBusinessFlowScriptType != null">btn_business_flow_script_type,</if>
+            <if test="btnBusinessFlowVueKey != null">btn_business_flow_vue_key,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createById != null">create_by_id,</if>
             <if test="createTime != null">create_time,</if>
@@ -136,6 +148,9 @@
             <if test="btnParams != null">#{btnParams},</if>
             <if test="btnHasPermi != null">#{btnHasPermi},</if>
             <if test="btnSort != null">#{btnSort},</if>
+            <if test="btnBusinessFlowScriptKey != null">#{btnBusinessFlowScriptKey},</if>
+            <if test="btnBusinessFlowScriptType != null">#{btnBusinessFlowScriptType},</if>
+            <if test="btnBusinessFlowVueKey != null">#{btnBusinessFlowVueKey},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createById != null">#{createById},</if>
             <if test="createTime != null">#{createTime},</if>
@@ -163,6 +178,9 @@
             <if test="btnParams != null">btn_params = #{btnParams},</if>
             <if test="btnHasPermi != null">btn_has_permi = #{btnHasPermi},</if>
             <if test="btnSort != null">btn_sort = #{btnSort},</if>
+            <if test="btnBusinessFlowScriptKey != null">btn_business_flow_script_key = #{btnBusinessFlowScriptKey},</if>
+            <if test="btnBusinessFlowScriptType != null">btn_business_flow_script_type = #{btnBusinessFlowScriptType},</if>
+            <if test="btnBusinessFlowVueKey != null">btn_business_flow_vue_key = #{btnBusinessFlowVueKey},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateById != null">update_by_id = #{updateById},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>

+ 12 - 0
zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysTenant.java

@@ -80,6 +80,11 @@ public class SysTenant extends BaseEntity {
      * 租户工具端访问地址
      */
     private String tenantToolLoginUrl;
+
+    /**
+     * 租户小程序首页的地址
+     */
+    private String tenantWechatIndexUrl;
     /**
      * 租户等级
      */
@@ -212,4 +217,11 @@ public class SysTenant extends BaseEntity {
     }
 
 
+    public String getTenantWechatIndexUrl() {
+        return tenantWechatIndexUrl;
+    }
+
+    public void setTenantWechatIndexUrl(String tenantWechatIndexUrl) {
+        this.tenantWechatIndexUrl = tenantWechatIndexUrl;
+    }
 }

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

@@ -116,7 +116,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/oauth2/**", "/Oauth2Login/**", "/oauth/callback", "/authorize").permitAll()
                 //模拟登录授权
                 .antMatchers("/pageTransfer","/lims/Login/","pageTransferTo","/jl_inspection","/system/inspection/list","/bpleavefactory/bpleavefactory/list",
-                        "/qualityinspectioninformation/qualityinspectioninformation/list/getOne").permitAll()
+                        "/qualityinspectioninformation/qualityinspectioninformation/list/getOne",
+                        "/getPhoneNumber","/tenantLogin/mobile").permitAll()
 
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()

+ 54 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/controller/BusinessLogicController.java

@@ -0,0 +1,54 @@
+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.common.utils.StringUtils;
+import com.zkqy.execution.produce.dispersed.entity.busLogic.BusLogicDto;
+import com.zkqy.execution.produce.dispersed.entity.busLogic.BusLogicVueDto;
+import com.zkqy.execution.produce.dispersed.runbpm.BusinessLogicToolClass;
+import com.zkqy.system.domain.SysBusinessFlowScriptVuePageLink;
+import com.zkqy.system.service.ISysBusinessFlowScriptVuePageLinkService;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+@RestController
+@RequestMapping("/system/businessLogic")
+public class BusinessLogicController {
+
+    @Autowired
+    private BusinessLogicToolClass businessLogicToolClass;
+
+    @Autowired
+    private ISysBusinessFlowScriptVuePageLinkService sysBusinessFlowScriptVuePageLinkService;
+
+    /**
+     * 执行脚本
+     */
+    @Log(title = "执行流程节点", businessType = BusinessType.INSERT)
+    @PostMapping("/executeScript")
+    public AjaxResult processNodeExecution(@RequestBody BusLogicVueDto busLogicVueDto) {
+        // 从前端的传参中得到businessKey和businessType的两个参数
+        String vueKey = busLogicVueDto.getVueKey();
+        String vueContent = busLogicVueDto.getVueContent();
+        SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink = new SysBusinessFlowScriptVuePageLink();
+        if (StringUtils.isNotEmpty(vueKey) && StringUtils.isNotEmpty(vueContent)) {
+            sysBusinessFlowScriptVuePageLink = sysBusinessFlowScriptVuePageLinkService.selectSysBusinessFlowScriptVuePageLinkByVueKeyAndContent(vueKey, vueContent);
+        }
+        String businessKey = sysBusinessFlowScriptVuePageLink.getBusinessKey();
+        String businessType = sysBusinessFlowScriptVuePageLink.getBusinessType();
+        BusLogicDto busLogicDto = new BusLogicDto();
+        if (StringUtils.isNotEmpty(businessKey) && StringUtils.isNotEmpty(businessType)) {
+            busLogicDto.setBusinessKey(businessKey);
+            busLogicDto.setBusinessType(businessType);
+            busLogicDto.setParams(busLogicVueDto.getParams());
+        }else{
+            return AjaxResult.error("执行参数错误");
+        }
+        return businessLogicToolClass.RunIBusinessLogicServiceClassCode(busLogicDto);
+    }
+
+}

+ 39 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/busLogic/BusLogicDto.java

@@ -0,0 +1,39 @@
+package com.zkqy.execution.produce.dispersed.entity.busLogic;
+
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+
+import java.util.Map;
+
+public class BusLogicDto {
+    // 实现的方法名
+    private String businessKey;
+
+    //需要调取方法的类型
+    private String businessType;
+
+    private Map<String,Object> params;
+
+    public String getBusinessKey() {
+        return businessKey;
+    }
+
+    public void setBusinessKey(String businessKey) {
+        this.businessKey = businessKey;
+    }
+
+    public String getBusinessType() {
+        return businessType;
+    }
+
+    public void setBusinessType(String businessType) {
+        this.businessType = businessType;
+    }
+
+    public Map<String, Object> getParams() {
+        return params;
+    }
+
+    public void setParams(Map<String, Object> params) {
+        this.params = params;
+    }
+}

+ 35 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/entity/busLogic/BusLogicVueDto.java

@@ -0,0 +1,35 @@
+package com.zkqy.execution.produce.dispersed.entity.busLogic;
+
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+
+import java.util.Map;
+
+public class BusLogicVueDto {
+    private String vueKey;
+    private String vueContent;
+    private Map<String,Object> params;
+
+    public String getVueKey() {
+        return vueKey;
+    }
+
+    public void setVueKey(String vueKey) {
+        this.vueKey = vueKey;
+    }
+
+    public String getVueContent() {
+        return vueContent;
+    }
+
+    public void setVueContent(String vueContent) {
+        this.vueContent = vueContent;
+    }
+
+    public Map<String, Object> getParams() {
+        return params;
+    }
+
+    public void setParams(Map<String, Object> params) {
+        this.params = params;
+    }
+}

+ 133 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/runbpm/BusinessLogicToolClass.java

@@ -0,0 +1,133 @@
+package com.zkqy.execution.produce.dispersed.runbpm;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.StringUtils;
+import com.zkqy.execution.produce.dispersed.entity.busLogic.BusLogicDto;
+import com.zkqy.execution.produce.dispersed.service.DynamicJavaService;
+import com.zkqy.execution.produce.dispersed.service.IBusinessLogicService;
+import com.zkqy.system.service.ISysBusinessFlowScriptService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+
+
+/**
+ * 预备执行流程工具类
+ *
+ * @author hanzihang
+ * @date 2023/11/15
+ */
+@Component
+@EnableAsync  // 异步
+public class BusinessLogicToolClass<J> {
+
+    @Autowired
+    private ApplicationContext applicationContext;
+
+    @Autowired
+    private ISysBusinessFlowScriptService iSysBusinessFlowScriptService;
+
+    @Autowired
+    private DynamicJavaService dynamicJavaService;
+
+    private static final Logger log = LoggerFactory.getLogger(BusinessLogicToolClass.class);
+
+
+    /**
+     *  定位执行脚本所需参数
+     *  脚本实现逻辑其他参数
+     * @return
+     */
+    @Transactional
+    public AjaxResult RunIBusinessLogicServiceClassCode(BusLogicDto busLogicDto) {
+        String businessKey = busLogicDto.getBusinessKey();
+        String type = busLogicDto.getBusinessType();
+        Map<String, Object> params = busLogicDto.getParams();
+        //检查容器中是否有bean的校验
+        AjaxResult checkRes = new AjaxResult();
+        if (StringUtils.isNotEmpty(businessKey)){
+            checkRes = checkOrUpdateBeanContain(businessKey);
+        }else{
+            return AjaxResult.error("找不到方法名,请联系管理员");
+        }
+        //填充bean失败了,直接返回。
+        if (checkRes.CODE_TAG.equals(500)){
+            return checkRes;
+        }
+        //执行脚本
+        if (applicationContext.containsBean(businessKey)) {
+            IBusinessLogicService iBusinessLogicService = applicationContext.getBean(businessKey, IBusinessLogicService.class);
+            // 校验当前需要执行的脚本是否存在
+            if (iBusinessLogicService.isVerificationMethod() && iBusinessLogicService.valid(params) && StringUtils.isNotBlank(type)) {
+                // 脚本执行前验证
+                AjaxResult ajaxResult = new AjaxResult();
+                switch (type) {
+                    case "query":
+                        ajaxResult = iBusinessLogicService.query(params);
+                        break;
+                    case "add":
+                        ajaxResult = iBusinessLogicService.add(params);
+                        break;
+                    case "update":
+                        ajaxResult = iBusinessLogicService.update(params);
+                        break;
+                    case "delete":
+                        ajaxResult = iBusinessLogicService.delete(params);
+                        break;
+                    case "other":
+                        ajaxResult = iBusinessLogicService.otherMethod(params);
+                        break;
+                    default:
+                        // 处理未知的 type 或默认情况
+                        log.warn("Unknown type: {}", type);
+                        break;
+                }
+                iBusinessLogicService.preDestroy();
+                return ajaxResult;
+            }
+            return AjaxResult.success("错误类型1,请联系管理员");
+        } else {
+            return AjaxResult.error("参数类型有误,请联系管理员");
+        }
+
+    }
+
+    /**
+     * 脚本bean的前置校验
+     * 1.检查bean是否存在,没存在的增加
+     * 2.如果bean已经存在了,那么给他更新了。
+     */
+    public AjaxResult checkOrUpdateBeanContain(String implementationName) {
+        if(applicationContext.containsBean(implementationName)){
+            //删除容器中
+            // 获取 DefaultListableBeanFactory
+            ConfigurableApplicationContext configurableContext = (ConfigurableApplicationContext) applicationContext;
+            // 获取 DefaultListableBeanFactory
+            DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) configurableContext.getBeanFactory();
+            beanFactory.removeBeanDefinition(implementationName);//移除某个Bean
+            //动态编译class文件进Spring 容器
+            String s = dynamicJavaService.loadAndRegisterJavaFile(implementationName);
+            if(s.equals(implementationName+"注册失败")){
+                return AjaxResult.error("脚本编译失败").put("isFlag",false);
+            }
+            System.out.println("编译成功");
+            return AjaxResult.success("编译成功");
+        }else { //如果容器中不存在就直接编译
+            //动态编译class文件进Spring 容器
+            String s = dynamicJavaService.loadAndRegisterJavaFile(implementationName);
+            if(s.equals(implementationName+"注册失败")){
+                return AjaxResult.error("脚本编译失败").put("isFlag",false);
+            }
+            System.out.println("编译成功");
+            return AjaxResult.success("编译成功");
+        }
+    }
+}

+ 64 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/IBusinessLogicService.java

@@ -0,0 +1,64 @@
+package com.zkqy.execution.produce.dispersed.service;
+
+import com.zkqy.common.core.domain.AjaxResult;
+
+import java.util.Map;
+
+/**
+ * 业务流程通用模板接口
+ */
+public interface IBusinessLogicService {
+
+    /**
+     * 校验参数,会在所有的其余操作之前执行
+     * 返回: 校验成功或者失败
+     */
+    Boolean valid(Map<String,Object> params);
+
+    /**
+     * 查询某一行的数据 (单表/多表)
+     * 返回: 该行的数据 + 每个字段的组件类型(输入框/下拉框)
+     */
+    AjaxResult query(Map<String,Object> params);
+
+    /**
+     * 新增
+     * 返回:新增的结果状态
+     */
+    AjaxResult add(Map<String,Object> params);
+
+
+    /**
+     * 修改
+     * 返回:修改的结果状态
+     */
+    AjaxResult update(Map<String,Object> params);
+
+    /**
+     * 删除某一行的数据
+     * 返回:删除的结果状态
+     */
+    AjaxResult delete(Map<String,Object> params);
+
+    /**
+     * 删除某一行的数据
+     * 返回:删除的结果状态
+     */
+    AjaxResult otherMethod(Map<String,Object> params);
+
+    /**
+     * 验证脚本bean是否存在 在流程执行前会验证当前流程所绑定的节点脚本等
+     * 或其他验证使用
+     *
+     * @return
+     */
+    boolean isVerificationMethod();
+
+    /**
+     * 用来清理prototype作用域bean 因spring不会帮助清理
+     * 注:定义成prototype类型的bean,可以避免并发的操作。applicationContext.getBean() 每次都会返回一个新的实例
+     *
+     * @return
+     */
+    boolean preDestroy();
+}

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

@@ -2,7 +2,6 @@ package com.zkqy.execution.produce.dispersed.service.impl;
 
 import com.zkqy.execution.produce.dispersed.service.DynamicJavaService;
 import com.zkqy.execution.produce.utilsPlus.DefaultPackageClassLoader;
-import com.zkqy.execution.produce.utilsPlus.DefaultPackageCompiler;
 import com.zkqy.execution.produce.utilsPlus.SpringBeanRegistrar;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;

+ 58 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/busLogic/IBusinessLogicServiceImpl.java

@@ -0,0 +1,58 @@
+package com.zkqy.execution.produce.dispersed.service.impl.busLogic;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.service.IBusinessLogicService;
+import com.zkqy.system.domain.SysBusinessFlowScript;
+import com.zkqy.system.service.ISysBusinessFlowScriptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+@Service("asdsadsa")
+public class IBusinessLogicServiceImpl implements IBusinessLogicService {
+    @Autowired
+    private ISysBusinessFlowScriptService sysBusinessFlowScriptService;
+
+    @Override
+    public Boolean valid(Map<String, Object> params) {
+        return true;
+    }
+
+    @Override
+    public AjaxResult query(Map<String, Object> params) {
+        return null;
+    }
+
+    @Override
+    public AjaxResult add(Map<String, Object> params) {
+        return null;
+    }
+
+    @Override
+    public AjaxResult update(Map<String, Object> params) {
+        return null;
+    }
+
+    @Override
+    public AjaxResult delete(Map<String, Object> params) {
+        return null;
+    }
+
+    @Override
+    public AjaxResult otherMethod(Map<String, Object> params) {
+        String businessKey = "businessKey_ced892ac-ead8-4298-9ce0-7c4aa4c3cde5";
+        SysBusinessFlowScript sysBusinessFlowScript = sysBusinessFlowScriptService.selectSysBusinessFlowScriptByBusinessKey(businessKey);
+        return AjaxResult.success(sysBusinessFlowScript);
+    }
+
+    @Override
+    public boolean isVerificationMethod() {
+        return false;
+    }
+
+    @Override
+    public boolean preDestroy() {
+        return false;
+    }
+}

+ 2 - 2
zkqy-process-execution/src/main/resources/mapper/bpm/dispersed/BpmApprovalStatusMapper.xml

@@ -84,12 +84,12 @@
 
     <delete id="deleteBpmApprovalStatusById" parameterType="Long">
         delete
-        from bpm_approval_status
+        from {DBNAME}.bpm_approval_status
         where id = #{id}
     </delete>
 
     <delete id="deleteBpmApprovalStatusByIds" parameterType="String">
-        delete from bpm_approval_status where id in
+        delete from {DBNAME}.bpm_approval_status where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>

+ 195 - 0
zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowScript.java

@@ -0,0 +1,195 @@
+package com.zkqy.system.domain;
+
+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;
+
+/**
+ * 业务脚本对象 sys_business_flow_script
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public class SysBusinessFlowScript extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 业务脚本标识 */
+    @Excel(name = "业务脚本标识")
+    private String businessKey;
+
+    /** 绑定脚本路径 */
+    @Excel(name = "绑定脚本路径")
+    private String path;
+
+    /** 绑定脚本方法名 */
+    @Excel(name = "绑定脚本方法名")
+    private String methodName;
+
+    /** 租户id */
+    @Excel(name = "租户id")
+    private Long tenantId;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setBusinessKey(String businessKey) 
+    {
+        this.businessKey = businessKey;
+    }
+
+    public String getBusinessKey() 
+    {
+        return businessKey;
+    }
+    public void setPath(String path) 
+    {
+        this.path = path;
+    }
+
+    public String getPath() 
+    {
+        return path;
+    }
+    public void setMethodName(String methodName) 
+    {
+        this.methodName = methodName;
+    }
+
+    public String getMethodName() 
+    {
+        return methodName;
+    }
+    public void setTenantId(Long tenantId) 
+    {
+        this.tenantId = tenantId;
+    }
+
+    public Long getTenantId() 
+    {
+        return tenantId;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    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;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("businessKey", getBusinessKey())
+            .append("path", getPath())
+            .append("methodName", getMethodName())
+            .append("tenantId", getTenantId())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 87 - 0
zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowScriptVuePageLink.java

@@ -0,0 +1,87 @@
+package com.zkqy.system.domain;
+
+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;
+
+/**
+ * 脚本和页面的关联对象 sys_business_flow_script_vue_page_link
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public class SysBusinessFlowScriptVuePageLink extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id主键 */
+    private Long id;
+
+    /** 业务的标识 */
+    @Excel(name = "业务的标识")
+    private String businessKey;
+
+    @Excel(name = "业务的类型")
+    private String businessType;
+
+    /** vue页面的标识 */
+    @Excel(name = "vue页面的标识")
+    private String vueKey;
+
+    @Excel(name = "vue页面的内容")
+    private String vueContent;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setBusinessKey(String businessKey) 
+    {
+        this.businessKey = businessKey;
+    }
+
+    public String getBusinessKey() 
+    {
+        return businessKey;
+    }
+    public void setVueKey(String vueKey) 
+    {
+        this.vueKey = vueKey;
+    }
+
+    public String getVueKey() 
+    {
+        return vueKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("businessKey", getBusinessKey())
+            .append("vueKey", getVueKey())
+            .toString();
+    }
+
+    public String getBusinessType() {
+        return businessType;
+    }
+
+    public void setBusinessType(String businessType) {
+        this.businessType = businessType;
+    }
+
+    public String getVueContent() {
+        return vueContent;
+    }
+
+    public void setVueContent(String vueContent) {
+        this.vueContent = vueContent;
+    }
+}

+ 181 - 0
zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowVuePage.java

@@ -0,0 +1,181 @@
+package com.zkqy.system.domain;
+
+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;
+
+/**
+ * 存放业务脚本的vue页面对象 sys_business_flow_vue_page
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public class SysBusinessFlowVuePage extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** vue代码 */
+    @Excel(name = "vue代码")
+    private String vueCode;
+
+    /** vue的页面标识 */
+    @Excel(name = "vue的页面标识")
+    private String vueKey;
+
+    /** 租户id */
+    @Excel(name = "租户id")
+    private Long tenantId;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setVueCode(String vueCode) 
+    {
+        this.vueCode = vueCode;
+    }
+
+    public String getVueCode() 
+    {
+        return vueCode;
+    }
+    public void setVueKey(String vueKey) 
+    {
+        this.vueKey = vueKey;
+    }
+
+    public String getVueKey() 
+    {
+        return vueKey;
+    }
+    public void setTenantId(Long tenantId) 
+    {
+        this.tenantId = tenantId;
+    }
+
+    public Long getTenantId() 
+    {
+        return tenantId;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    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;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("vueCode", getVueCode())
+            .append("vueKey", getVueKey())
+            .append("tenantId", getTenantId())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 63 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowScriptMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.system.mapper;
+
+import com.zkqy.system.domain.SysBusinessFlowScript;
+
+import java.util.List;
+/**
+ * 业务脚本Mapper接口
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public interface SysBusinessFlowScriptMapper 
+{
+    /**
+     * 查询业务脚本
+     * 
+     * @param id 业务脚本主键
+     * @return 业务脚本
+     */
+    public SysBusinessFlowScript selectSysBusinessFlowScriptById(Long id);
+
+    /**
+     * 查询业务脚本列表
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 业务脚本集合
+     */
+    public List<SysBusinessFlowScript> selectSysBusinessFlowScriptList(SysBusinessFlowScript sysBusinessFlowScript);
+
+    /**
+     * 新增业务脚本
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 结果
+     */
+    public int insertSysBusinessFlowScript(SysBusinessFlowScript sysBusinessFlowScript);
+
+    /**
+     * 修改业务脚本
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 结果
+     */
+    public int updateSysBusinessFlowScript(SysBusinessFlowScript sysBusinessFlowScript);
+
+    /**
+     * 删除业务脚本
+     * 
+     * @param id 业务脚本主键
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowScriptById(Long id);
+
+    /**
+     * 批量删除业务脚本
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowScriptByIds(Long[] ids);
+
+    SysBusinessFlowScript selectSysBusinessFlowScriptByBusinessKey(String businessKey);
+}

+ 65 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowScriptVuePageLinkMapper.java

@@ -0,0 +1,65 @@
+package com.zkqy.system.mapper;
+
+import com.zkqy.system.domain.SysBusinessFlowScriptVuePageLink;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 脚本和页面的关联Mapper接口
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public interface SysBusinessFlowScriptVuePageLinkMapper 
+{
+    /**
+     * 查询脚本和页面的关联
+     * 
+     * @param id 脚本和页面的关联主键
+     * @return 脚本和页面的关联
+     */
+    public SysBusinessFlowScriptVuePageLink selectSysBusinessFlowScriptVuePageLinkById(Long id);
+
+    /**
+     * 查询脚本和页面的关联列表
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 脚本和页面的关联集合
+     */
+    public List<SysBusinessFlowScriptVuePageLink> selectSysBusinessFlowScriptVuePageLinkList(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink);
+
+    /**
+     * 新增脚本和页面的关联
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 结果
+     */
+    public int insertSysBusinessFlowScriptVuePageLink(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink);
+
+    /**
+     * 修改脚本和页面的关联
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 结果
+     */
+    public int updateSysBusinessFlowScriptVuePageLink(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink);
+
+    /**
+     * 删除脚本和页面的关联
+     * 
+     * @param id 脚本和页面的关联主键
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowScriptVuePageLinkById(Long id);
+
+    /**
+     * 批量删除脚本和页面的关联
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowScriptVuePageLinkByIds(Long[] ids);
+
+    SysBusinessFlowScriptVuePageLink selectSysBusinessFlowScriptVuePageLinkByVueKeyAndContent(@Param("vueKey") String vueKey, @Param("vueContent") String vueContent);
+}

+ 64 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowVuePageMapper.java

@@ -0,0 +1,64 @@
+package com.zkqy.system.mapper;
+
+import com.zkqy.system.domain.SysBusinessFlowVuePage;
+
+import java.util.List;
+
+/**
+ * 存放业务脚本的vue页面Mapper接口
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public interface SysBusinessFlowVuePageMapper 
+{
+    /**
+     * 查询存放业务脚本的vue页面
+     * 
+     * @param id 存放业务脚本的vue页面主键
+     * @return 存放业务脚本的vue页面
+     */
+    public SysBusinessFlowVuePage selectSysBusinessFlowVuePageById(Long id);
+
+    /**
+     * 查询存放业务脚本的vue页面列表
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 存放业务脚本的vue页面集合
+     */
+    public List<SysBusinessFlowVuePage> selectSysBusinessFlowVuePageList(SysBusinessFlowVuePage sysBusinessFlowVuePage);
+
+    /**
+     * 新增存放业务脚本的vue页面
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 结果
+     */
+    public int insertSysBusinessFlowVuePage(SysBusinessFlowVuePage sysBusinessFlowVuePage);
+
+    /**
+     * 修改存放业务脚本的vue页面
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 结果
+     */
+    public int updateSysBusinessFlowVuePage(SysBusinessFlowVuePage sysBusinessFlowVuePage);
+
+    /**
+     * 删除存放业务脚本的vue页面
+     * 
+     * @param id 存放业务脚本的vue页面主键
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowVuePageById(Long id);
+
+    /**
+     * 批量删除存放业务脚本的vue页面
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowVuePageByIds(Long[] ids);
+
+    SysBusinessFlowVuePage selectSysBusinessFlowVuePageByVueKey(String vueKey);
+}

+ 2 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/SysUserMapper.java

@@ -191,4 +191,6 @@ public interface SysUserMapper {
      * @return
      */
     List<SysUser> selectUserListFjqy(List<String> userIds);
+
+    SysUser selectUserByPhonenumber(@Param("phonenumber") String phonenumber);
 }

+ 70 - 0
zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowScriptService.java

@@ -0,0 +1,70 @@
+package com.zkqy.system.service;
+
+import com.zkqy.system.domain.SysBusinessFlowScript;
+
+import java.util.List;
+
+/**
+ * 业务脚本Service接口
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public interface ISysBusinessFlowScriptService 
+{
+    /**
+     * 查询业务脚本
+     * 
+     * @param id 业务脚本主键
+     * @return 业务脚本
+     */
+    public SysBusinessFlowScript selectSysBusinessFlowScriptById(Long id);
+
+    /**
+     * 查询业务脚本
+     *
+     * @param businessKey 业务脚本主键
+     * @return 业务脚本
+     */
+    public SysBusinessFlowScript selectSysBusinessFlowScriptByBusinessKey(String businessKey);
+
+    /**
+     * 查询业务脚本列表
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 业务脚本集合
+     */
+    public List<SysBusinessFlowScript> selectSysBusinessFlowScriptList(SysBusinessFlowScript sysBusinessFlowScript);
+
+    /**
+     * 新增业务脚本
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 结果
+     */
+    public int insertSysBusinessFlowScript(SysBusinessFlowScript sysBusinessFlowScript);
+
+    /**
+     * 修改业务脚本
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 结果
+     */
+    public int updateSysBusinessFlowScript(SysBusinessFlowScript sysBusinessFlowScript);
+
+    /**
+     * 批量删除业务脚本
+     * 
+     * @param ids 需要删除的业务脚本主键集合
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowScriptByIds(Long[] ids);
+
+    /**
+     * 删除业务脚本信息
+     * 
+     * @param id 业务脚本主键
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowScriptById(Long id);
+}

+ 65 - 0
zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowScriptVuePageLinkService.java

@@ -0,0 +1,65 @@
+package com.zkqy.system.service;
+
+import com.zkqy.system.domain.SysBusinessFlowScriptVuePageLink;
+
+import java.util.List;
+
+/**
+ * 脚本和页面的关联Service接口
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public interface ISysBusinessFlowScriptVuePageLinkService 
+{
+    /**
+     * 查询脚本和页面的关联
+     * 
+     * @param id 脚本和页面的关联主键
+     * @return 脚本和页面的关联
+     */
+    public SysBusinessFlowScriptVuePageLink selectSysBusinessFlowScriptVuePageLinkById(Long id);
+
+
+    public SysBusinessFlowScriptVuePageLink selectSysBusinessFlowScriptVuePageLinkByVueKeyAndContent(String vueKey, String vueContent);
+
+    /**
+     * 查询脚本和页面的关联列表
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 脚本和页面的关联集合
+     */
+    public List<SysBusinessFlowScriptVuePageLink> selectSysBusinessFlowScriptVuePageLinkList(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink);
+
+    /**
+     * 新增脚本和页面的关联
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 结果
+     */
+    public int insertSysBusinessFlowScriptVuePageLink(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink);
+
+    /**
+     * 修改脚本和页面的关联
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 结果
+     */
+    public int updateSysBusinessFlowScriptVuePageLink(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink);
+
+    /**
+     * 批量删除脚本和页面的关联
+     * 
+     * @param ids 需要删除的脚本和页面的关联主键集合
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowScriptVuePageLinkByIds(Long[] ids);
+
+    /**
+     * 删除脚本和页面的关联信息
+     * 
+     * @param id 脚本和页面的关联主键
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowScriptVuePageLinkById(Long id);
+}

+ 65 - 0
zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowVuePageService.java

@@ -0,0 +1,65 @@
+package com.zkqy.system.service;
+
+import com.zkqy.system.domain.SysBusinessFlowVuePage;
+
+import java.util.List;
+
+
+/**
+ * 存放业务脚本的vue页面Service接口
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+public interface ISysBusinessFlowVuePageService 
+{
+    /**
+     * 查询存放业务脚本的vue页面
+     * 
+     * @param id 存放业务脚本的vue页面主键
+     * @return 存放业务脚本的vue页面
+     */
+    public SysBusinessFlowVuePage selectSysBusinessFlowVuePageById(Long id);
+
+    public SysBusinessFlowVuePage selectSysBusinessFlowVuePageByVueKey(String vueKey);
+
+    /**
+     * 查询存放业务脚本的vue页面列表
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 存放业务脚本的vue页面集合
+     */
+    public List<SysBusinessFlowVuePage> selectSysBusinessFlowVuePageList(SysBusinessFlowVuePage sysBusinessFlowVuePage);
+
+    /**
+     * 新增存放业务脚本的vue页面
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 结果
+     */
+    public int insertSysBusinessFlowVuePage(SysBusinessFlowVuePage sysBusinessFlowVuePage);
+
+    /**
+     * 修改存放业务脚本的vue页面
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 结果
+     */
+    public int updateSysBusinessFlowVuePage(SysBusinessFlowVuePage sysBusinessFlowVuePage);
+
+    /**
+     * 批量删除存放业务脚本的vue页面
+     * 
+     * @param ids 需要删除的存放业务脚本的vue页面主键集合
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowVuePageByIds(Long[] ids);
+
+    /**
+     * 删除存放业务脚本的vue页面信息
+     * 
+     * @param id 存放业务脚本的vue页面主键
+     * @return 结果
+     */
+    public int deleteSysBusinessFlowVuePageById(Long id);
+}

+ 2 - 0
zkqy-system/src/main/java/com/zkqy/system/service/ISysUserService.java

@@ -251,4 +251,6 @@ public interface ISysUserService {
      * @return 用户对象信息
      */
     public SysUser selectUserInfoByTenantCode(String tenantCode, String userName);
+
+    SysUser selectUserByPhonenumber(String phonenumber);
 }

+ 102 - 0
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowScriptServiceImpl.java

@@ -0,0 +1,102 @@
+package com.zkqy.system.service.impl;
+
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.system.domain.SysBusinessFlowScript;
+import com.zkqy.system.mapper.SysBusinessFlowScriptMapper;
+import com.zkqy.system.service.ISysBusinessFlowScriptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 业务脚本Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+@Service
+public class SysBusinessFlowScriptServiceImpl implements ISysBusinessFlowScriptService 
+{
+    @Autowired
+    private SysBusinessFlowScriptMapper sysBusinessFlowScriptMapper;
+
+    /**
+     * 查询业务脚本
+     * 
+     * @param id 业务脚本主键
+     * @return 业务脚本
+     */
+    @Override
+    public SysBusinessFlowScript selectSysBusinessFlowScriptById(Long id)
+    {
+        return sysBusinessFlowScriptMapper.selectSysBusinessFlowScriptById(id);
+    }
+
+    @Override
+    public SysBusinessFlowScript selectSysBusinessFlowScriptByBusinessKey(String businessKey) {
+        return sysBusinessFlowScriptMapper.selectSysBusinessFlowScriptByBusinessKey(businessKey);
+    }
+
+    /**
+     * 查询业务脚本列表
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 业务脚本
+     */
+    @Override
+    public List<SysBusinessFlowScript> selectSysBusinessFlowScriptList(SysBusinessFlowScript sysBusinessFlowScript)
+    {
+        return sysBusinessFlowScriptMapper.selectSysBusinessFlowScriptList(sysBusinessFlowScript);
+    }
+
+    /**
+     * 新增业务脚本
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 结果
+     */
+    @Override
+    public int insertSysBusinessFlowScript(SysBusinessFlowScript sysBusinessFlowScript)
+    {
+        sysBusinessFlowScript.setCreateTime(DateUtils.getNowDate());
+        return sysBusinessFlowScriptMapper.insertSysBusinessFlowScript(sysBusinessFlowScript);
+    }
+
+    /**
+     * 修改业务脚本
+     * 
+     * @param sysBusinessFlowScript 业务脚本
+     * @return 结果
+     */
+    @Override
+    public int updateSysBusinessFlowScript(SysBusinessFlowScript sysBusinessFlowScript)
+    {
+        sysBusinessFlowScript.setUpdateTime(DateUtils.getNowDate());
+        return sysBusinessFlowScriptMapper.updateSysBusinessFlowScript(sysBusinessFlowScript);
+    }
+
+    /**
+     * 批量删除业务脚本
+     * 
+     * @param ids 需要删除的业务脚本主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysBusinessFlowScriptByIds(Long[] ids)
+    {
+        return sysBusinessFlowScriptMapper.deleteSysBusinessFlowScriptByIds(ids);
+    }
+
+    /**
+     * 删除业务脚本信息
+     * 
+     * @param id 业务脚本主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysBusinessFlowScriptById(Long id)
+    {
+        return sysBusinessFlowScriptMapper.deleteSysBusinessFlowScriptById(id);
+    }
+}

+ 99 - 0
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowScriptVuePageLinkServiceImpl.java

@@ -0,0 +1,99 @@
+package com.zkqy.system.service.impl;
+
+import com.zkqy.system.domain.SysBusinessFlowScriptVuePageLink;
+import com.zkqy.system.mapper.SysBusinessFlowScriptVuePageLinkMapper;
+import com.zkqy.system.service.ISysBusinessFlowScriptVuePageLinkService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 脚本和页面的关联Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+@Service
+public class SysBusinessFlowScriptVuePageLinkServiceImpl implements ISysBusinessFlowScriptVuePageLinkService 
+{
+    @Autowired
+    private SysBusinessFlowScriptVuePageLinkMapper sysBusinessFlowScriptVuePageLinkMapper;
+
+    /**
+     * 查询脚本和页面的关联
+     * 
+     * @param id 脚本和页面的关联主键
+     * @return 脚本和页面的关联
+     */
+    @Override
+    public SysBusinessFlowScriptVuePageLink selectSysBusinessFlowScriptVuePageLinkById(Long id)
+    {
+        return sysBusinessFlowScriptVuePageLinkMapper.selectSysBusinessFlowScriptVuePageLinkById(id);
+    }
+
+    @Override
+    public SysBusinessFlowScriptVuePageLink selectSysBusinessFlowScriptVuePageLinkByVueKeyAndContent(String vueKey, String vueContent) {
+        return sysBusinessFlowScriptVuePageLinkMapper.selectSysBusinessFlowScriptVuePageLinkByVueKeyAndContent(vueKey,vueContent);
+    }
+
+    /**
+     * 查询脚本和页面的关联列表
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 脚本和页面的关联
+     */
+    @Override
+    public List<SysBusinessFlowScriptVuePageLink> selectSysBusinessFlowScriptVuePageLinkList(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+    {
+        return sysBusinessFlowScriptVuePageLinkMapper.selectSysBusinessFlowScriptVuePageLinkList(sysBusinessFlowScriptVuePageLink);
+    }
+
+    /**
+     * 新增脚本和页面的关联
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 结果
+     */
+    @Override
+    public int insertSysBusinessFlowScriptVuePageLink(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+    {
+        return sysBusinessFlowScriptVuePageLinkMapper.insertSysBusinessFlowScriptVuePageLink(sysBusinessFlowScriptVuePageLink);
+    }
+
+    /**
+     * 修改脚本和页面的关联
+     * 
+     * @param sysBusinessFlowScriptVuePageLink 脚本和页面的关联
+     * @return 结果
+     */
+    @Override
+    public int updateSysBusinessFlowScriptVuePageLink(SysBusinessFlowScriptVuePageLink sysBusinessFlowScriptVuePageLink)
+    {
+        return sysBusinessFlowScriptVuePageLinkMapper.updateSysBusinessFlowScriptVuePageLink(sysBusinessFlowScriptVuePageLink);
+    }
+
+    /**
+     * 批量删除脚本和页面的关联
+     * 
+     * @param ids 需要删除的脚本和页面的关联主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysBusinessFlowScriptVuePageLinkByIds(Long[] ids)
+    {
+        return sysBusinessFlowScriptVuePageLinkMapper.deleteSysBusinessFlowScriptVuePageLinkByIds(ids);
+    }
+
+    /**
+     * 删除脚本和页面的关联信息
+     * 
+     * @param id 脚本和页面的关联主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysBusinessFlowScriptVuePageLinkById(Long id)
+    {
+        return sysBusinessFlowScriptVuePageLinkMapper.deleteSysBusinessFlowScriptVuePageLinkById(id);
+    }
+}

+ 102 - 0
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowVuePageServiceImpl.java

@@ -0,0 +1,102 @@
+package com.zkqy.system.service.impl;
+
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.system.domain.SysBusinessFlowVuePage;
+import com.zkqy.system.mapper.SysBusinessFlowVuePageMapper;
+import com.zkqy.system.service.ISysBusinessFlowVuePageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 存放业务脚本的vue页面Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2025-05-19
+ */
+@Service
+public class SysBusinessFlowVuePageServiceImpl implements ISysBusinessFlowVuePageService 
+{
+    @Autowired
+    private SysBusinessFlowVuePageMapper sysBusinessFlowVuePageMapper;
+
+    /**
+     * 查询存放业务脚本的vue页面
+     * 
+     * @param id 存放业务脚本的vue页面主键
+     * @return 存放业务脚本的vue页面
+     */
+    @Override
+    public SysBusinessFlowVuePage selectSysBusinessFlowVuePageById(Long id)
+    {
+        return sysBusinessFlowVuePageMapper.selectSysBusinessFlowVuePageById(id);
+    }
+
+    @Override
+    public SysBusinessFlowVuePage selectSysBusinessFlowVuePageByVueKey(String vueKey) {
+        return sysBusinessFlowVuePageMapper.selectSysBusinessFlowVuePageByVueKey(vueKey);
+    }
+
+    /**
+     * 查询存放业务脚本的vue页面列表
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 存放业务脚本的vue页面
+     */
+    @Override
+    public List<SysBusinessFlowVuePage> selectSysBusinessFlowVuePageList(SysBusinessFlowVuePage sysBusinessFlowVuePage)
+    {
+        return sysBusinessFlowVuePageMapper.selectSysBusinessFlowVuePageList(sysBusinessFlowVuePage);
+    }
+
+    /**
+     * 新增存放业务脚本的vue页面
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 结果
+     */
+    @Override
+    public int insertSysBusinessFlowVuePage(SysBusinessFlowVuePage sysBusinessFlowVuePage)
+    {
+        sysBusinessFlowVuePage.setCreateTime(DateUtils.getNowDate());
+        return sysBusinessFlowVuePageMapper.insertSysBusinessFlowVuePage(sysBusinessFlowVuePage);
+    }
+
+    /**
+     * 修改存放业务脚本的vue页面
+     * 
+     * @param sysBusinessFlowVuePage 存放业务脚本的vue页面
+     * @return 结果
+     */
+    @Override
+    public int updateSysBusinessFlowVuePage(SysBusinessFlowVuePage sysBusinessFlowVuePage)
+    {
+        sysBusinessFlowVuePage.setUpdateTime(DateUtils.getNowDate());
+        return sysBusinessFlowVuePageMapper.updateSysBusinessFlowVuePage(sysBusinessFlowVuePage);
+    }
+
+    /**
+     * 批量删除存放业务脚本的vue页面
+     * 
+     * @param ids 需要删除的存放业务脚本的vue页面主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysBusinessFlowVuePageByIds(Long[] ids)
+    {
+        return sysBusinessFlowVuePageMapper.deleteSysBusinessFlowVuePageByIds(ids);
+    }
+
+    /**
+     * 删除存放业务脚本的vue页面信息
+     * 
+     * @param id 存放业务脚本的vue页面主键
+     * @return 结果
+     */
+    @Override
+    public int deleteSysBusinessFlowVuePageById(Long id)
+    {
+        return sysBusinessFlowVuePageMapper.deleteSysBusinessFlowVuePageById(id);
+    }
+}

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

@@ -550,4 +550,9 @@ public class SysUserServiceImpl implements ISysUserService {
         return userMapper.selectUserInfoByTenantCode(tenantCode, userName);
     }
 
+    @Override
+    public SysUser selectUserByPhonenumber(String phonenumber) {
+        return userMapper.selectUserByPhonenumber(phonenumber);
+    }
+
 }

+ 131 - 0
zkqy-system/src/main/resources/mapper/system/SysBusinessFlowScriptMapper.xml

@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.system.mapper.SysBusinessFlowScriptMapper">
+    
+    <resultMap type="com.zkqy.system.domain.SysBusinessFlowScript" id="SysBusinessFlowScriptResult">
+        <result property="id"    column="id"    />
+        <result property="businessKey"    column="business_key"    />
+        <result property="path"    column="path"    />
+        <result property="methodName"    column="method_name"    />
+        <result property="tenantId"    column="tenant_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectSysBusinessFlowScriptVo">
+        select id, business_key, path, method_name, tenant_id, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from sys_business_flow_script
+    </sql>
+
+    <select id="selectSysBusinessFlowScriptList" parameterType="SysBusinessFlowScript" resultMap="SysBusinessFlowScriptResult">
+        <include refid="selectSysBusinessFlowScriptVo"/>
+        <where>  
+            <if test="businessKey != null  and businessKey != ''"> and business_key = #{businessKey}</if>
+            <if test="path != null  and path != ''"> and path = #{path}</if>
+            <if test="methodName != null  and methodName != ''"> and method_name like concat('%', #{methodName}, '%')</if>
+            <if test="remark != null  and remark != ''"> and remark like concat('%', #{remark}, '%')</if>
+            <if test="tenantId != null "> and tenant_id = #{tenantId}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+    
+    <select id="selectSysBusinessFlowScriptById" parameterType="Long" resultMap="SysBusinessFlowScriptResult">
+        <include refid="selectSysBusinessFlowScriptVo"/>
+        where id = #{id}
+    </select>
+    <select id="selectSysBusinessFlowScriptByBusinessKey"
+            resultType="com.zkqy.system.domain.SysBusinessFlowScript">
+        <include refid="selectSysBusinessFlowScriptVo"/>
+        where business_key = #{businessKey}
+    </select>
+
+    <insert id="insertSysBusinessFlowScript" parameterType="SysBusinessFlowScript" useGeneratedKeys="true" keyProperty="id">
+        insert into sys_business_flow_script
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="businessKey != null">business_key,</if>
+            <if test="path != null">path,</if>
+            <if test="methodName != null">method_name,</if>
+            <if test="tenantId != null">tenant_id,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="businessKey != null">#{businessKey},</if>
+            <if test="path != null">#{path},</if>
+            <if test="methodName != null">#{methodName},</if>
+            <if test="tenantId != null">#{tenantId},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateSysBusinessFlowScript" parameterType="SysBusinessFlowScript">
+        update sys_business_flow_script
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="businessKey != null">business_key = #{businessKey},</if>
+            <if test="path != null">path = #{path},</if>
+            <if test="methodName != null">method_name = #{methodName},</if>
+            <if test="tenantId != null">tenant_id = #{tenantId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSysBusinessFlowScriptById" parameterType="Long">
+        delete from sys_business_flow_script where id = #{id}
+    </delete>
+
+    <delete id="deleteSysBusinessFlowScriptByIds" parameterType="String">
+        delete from sys_business_flow_script where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 78 - 0
zkqy-system/src/main/resources/mapper/system/SysBusinessFlowScriptVuePageLinkMapper.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.system.mapper.SysBusinessFlowScriptVuePageLinkMapper">
+    
+    <resultMap type="com.zkqy.system.domain.SysBusinessFlowScriptVuePageLink" id="SysBusinessFlowScriptVuePageLinkResult">
+        <result property="id"    column="id"    />
+        <result property="businessKey"    column="business_key"    />
+        <result property="businessType"    column="business_type"    />
+        <result property="vueKey"    column="vue_key"    />
+        <result property="vueContent"    column="vue_content"    />
+    </resultMap>
+
+    <sql id="selectSysBusinessFlowScriptVuePageLinkVo">
+        select id, business_key,business_type, vue_key,vue_content from sys_business_flow_script_vue_page_link
+    </sql>
+
+    <select id="selectSysBusinessFlowScriptVuePageLinkList" parameterType="SysBusinessFlowScriptVuePageLink" resultMap="SysBusinessFlowScriptVuePageLinkResult">
+        <include refid="selectSysBusinessFlowScriptVuePageLinkVo"/>
+        <where>  
+            <if test="businessKey != null  and businessKey != ''"> and business_key = #{businessKey}</if>
+            <if test="vueKey != null  and vueKey != ''"> and vue_key = #{vueKey}</if>
+            <if test="vueContent != null  and vueContent != ''"> and vue_content = #{vueContent}</if>
+            <if test="businessType != null  and businessType != ''"> and business_type = #{businessType}</if>
+        </where>
+    </select>
+    
+    <select id="selectSysBusinessFlowScriptVuePageLinkById" parameterType="Long" resultMap="SysBusinessFlowScriptVuePageLinkResult">
+        <include refid="selectSysBusinessFlowScriptVuePageLinkVo"/>
+        where id = #{id}
+    </select>
+    <select id="selectSysBusinessFlowScriptVuePageLinkByVueKeyAndContent"
+            resultType="com.zkqy.system.domain.SysBusinessFlowScriptVuePageLink">
+        <include refid="selectSysBusinessFlowScriptVuePageLinkVo"/>
+        where vue_key = #{vueKey} and vue_content = #{vueContent}
+    </select>
+
+    <insert id="insertSysBusinessFlowScriptVuePageLink" parameterType="SysBusinessFlowScriptVuePageLink">
+        insert into sys_business_flow_script_vue_page_link
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="businessKey != null and businessKey != ''">business_key,</if>
+            <if test="businessType != null and businessType != ''">business_type,</if>
+            <if test="vueKey != null and vueKey != ''">vue_key,</if>
+            <if test="vueContent != null and vueContent != ''">vue_content,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="businessKey != null and businessKey != ''">#{businessKey},</if>
+            <if test="businessType != null and businessType != ''">#{businessType},</if>
+            <if test="vueKey != null and vueKey != ''">#{vueKey},</if>
+            <if test="vueContent != null and vueContent != ''">#{vueContent},</if>
+         </trim>
+    </insert>
+
+    <update id="updateSysBusinessFlowScriptVuePageLink" parameterType="SysBusinessFlowScriptVuePageLink">
+        update sys_business_flow_script_vue_page_link
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="businessKey != null and businessKey != ''">business_key = #{businessKey},</if>
+            <if test="businessType != null and businessType != ''">business_type = #{businessType},</if>
+            <if test="vueKey != null and vueKey != ''">vue_key = #{vueKey},</if>
+            <if test="vueContent != null and vueContent != ''">vue_content = #{vueContent},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSysBusinessFlowScriptVuePageLinkById" parameterType="Long">
+        delete from sys_business_flow_script_vue_page_link where id = #{id}
+    </delete>
+
+    <delete id="deleteSysBusinessFlowScriptVuePageLinkByIds" parameterType="String">
+        delete from sys_business_flow_script_vue_page_link where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 126 - 0
zkqy-system/src/main/resources/mapper/system/SysBusinessFlowVuePageMapper.xml

@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.system.mapper.SysBusinessFlowVuePageMapper">
+    
+    <resultMap type="com.zkqy.system.domain.SysBusinessFlowVuePage" id="SysBusinessFlowVuePageResult">
+        <result property="id"    column="id"    />
+        <result property="vueCode"    column="vue_code"    />
+        <result property="vueKey"    column="vue_key"    />
+        <result property="tenantId"    column="tenant_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectSysBusinessFlowVuePageVo">
+        select id, vue_code, vue_key, tenant_id, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from sys_business_flow_vue_page
+    </sql>
+
+    <select id="selectSysBusinessFlowVuePageList" parameterType="SysBusinessFlowVuePage" resultMap="SysBusinessFlowVuePageResult">
+        <include refid="selectSysBusinessFlowVuePageVo"/>
+        <where>  
+            <if test="vueCode != null  and vueCode != ''"> and vue_code = #{vueCode}</if>
+            <if test="vueKey != null  and vueKey != ''"> and vue_key = #{vueKey}</if>
+            <if test="tenantId != null "> and tenant_id = #{tenantId}</if>
+            <if test="remark != null "> and remark = #{remark}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+    
+    <select id="selectSysBusinessFlowVuePageById" parameterType="Long" resultMap="SysBusinessFlowVuePageResult">
+        <include refid="selectSysBusinessFlowVuePageVo"/>
+        where id = #{id}
+    </select>
+    <select id="selectSysBusinessFlowVuePageByVueKey"
+            resultType="com.zkqy.system.domain.SysBusinessFlowVuePage">
+        <include refid="selectSysBusinessFlowVuePageVo"/>
+        where vue_key = #{vueKey}
+    </select>
+
+    <insert id="insertSysBusinessFlowVuePage" parameterType="SysBusinessFlowVuePage" useGeneratedKeys="true" keyProperty="id">
+        insert into sys_business_flow_vue_page
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="vueCode != null">vue_code,</if>
+            <if test="vueKey != null">vue_key,</if>
+            <if test="tenantId != null">tenant_id,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="vueCode != null">#{vueCode},</if>
+            <if test="vueKey != null">#{vueKey},</if>
+            <if test="tenantId != null">#{tenantId},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateSysBusinessFlowVuePage" parameterType="SysBusinessFlowVuePage">
+        update sys_business_flow_vue_page
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="vueCode != null">vue_code = #{vueCode},</if>
+            <if test="vueKey != null">vue_key = #{vueKey},</if>
+            <if test="tenantId != null">tenant_id = #{tenantId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSysBusinessFlowVuePageById" parameterType="Long">
+        delete from sys_business_flow_vue_page where id = #{id}
+    </delete>
+
+    <delete id="deleteSysBusinessFlowVuePageByIds" parameterType="String">
+        delete from sys_business_flow_vue_page where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 5 - 0
zkqy-system/src/main/resources/mapper/system/SysTenantMapper.xml

@@ -19,6 +19,7 @@
         <result property="tenantParentId" column="tenant_parent_id"/>
         <result property="tenantToolLoginUrl" column="tenant_tool_login_url"/>
         <result property="tenantClientLoginUrl" column="tenant_client_login_url"/>
+        <result property="tenantWechatIndexUrl" column="tenant_wechat_index_url"/>
         <result property="tenantGrade" column="tenant_grade"/>
 
     </resultMap>
@@ -38,6 +39,7 @@
                tenant_parent_id,
                tenant_tool_login_url,
                tenant_client_login_url,
+               tenant_wechat_index_url,
                tenant_grade
         from sys_tenant
         where is_del = '0'
@@ -93,6 +95,7 @@
             <if test="tenantParentId != null">tenant_parent_id,</if>
             <if test="tenantClientLoginUrl !=null">tenant_client_login_url</if>
             <if test="tenantToolLoginUrl !=null">tenant_tool_login_url</if>
+            <if test="tenantWechatIndexUrl !=null">tenant_wechat_index_url,</if>
             <if test="tenantGrade != null">tenant_grade,</if>
             is_del
         </trim>
@@ -108,6 +111,7 @@
             <if test="tenantParentId != null">#{tenantParentId},</if>
             <if test="tenantClientLoginUrl !=null">tenant_client_login_url = #{tenantClientLoginUrl},</if>
             <if test="tenantToolLoginUrl !=null">tenant_tool_login_url = #{tenantToolLoginUrl},</if>
+            <if test="tenantWechatIndexUrl !=null">#{tenantWechatIndexUrl},</if>
             <if test="tenantGrade != null">tenant_grade = #{tenantGrade},</if>
             '0'
         </trim>
@@ -128,6 +132,7 @@
             <if test="tenantParentId != null">tenant_parent_id = #{tenantParentId},</if>
             <if test="tenantToolLoginUrl !=null">tenant_tool_login_url = #{tenantToolLoginUrl},</if>
             <if test="tenantClientLoginUrl !=null">tenant_client_login_url = #{tenantClientLoginUrl},</if>
+            <if test="tenantWechatIndexUrl !=null">tenant_wechat_index_url = #{tenantWechatIndexUrl},</if>
             <if test="tenantGrade != null">tenant_grade = #{tenantGrade},</if>
         </trim>
         where tenant_id = #{tenantId}

+ 4 - 0
zkqy-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -371,5 +371,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			#{userId}
 		</foreach>
 	</select>
+    <select id="selectUserByPhonenumber" resultType="com.zkqy.common.core.domain.entity.SysUser">
+		<include refid="selectUserVo"/>
+		where phonenumber = #{phonenumber}
+	</select>
 
 </mapper>