瀏覽代碼

业务表单的工具端 + 微信小程序租户端配置

晴为镜 1 周之前
父節點
當前提交
18db803c7b
共有 35 個文件被更改,包括 2593 次插入31 次删除
  1. 6 0
      zkqy-admin/pom.xml
  2. 263 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowScriptController.java
  3. 141 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowScriptVuePageLinkController.java
  4. 171 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysBusinessFlowVuePageController.java
  5. 1 9
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysTenantController.java
  6. 8 0
      zkqy-admin/src/main/resources/application.yml
  7. 110 0
      zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_i18n.json
  8. 13 0
      zkqy-common/src/main/java/com/zkqy/common/core/domain/entity/SysTenant.java
  9. 1 1
      zkqy-common/src/main/java/com/zkqy/common/utils/file/MimeTypeUtils.java
  10. 64 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/IBusinessLogicService.java
  11. 88 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/busLogicTest/IBusinessLogicServiceImpl2.java
  12. 84 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/busLogicTest/IBusinessLogicServiceImpl3.java
  13. 56 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/busLogicTest/template.java
  14. 195 0
      zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowScript.java
  15. 87 0
      zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowScriptVuePageLink.java
  16. 181 0
      zkqy-system/src/main/java/com/zkqy/system/domain/SysBusinessFlowVuePage.java
  17. 61 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowScriptMapper.java
  18. 62 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowScriptVuePageLinkMapper.java
  19. 62 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysBusinessFlowVuePageMapper.java
  20. 62 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowScriptService.java
  21. 62 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowScriptVuePageLinkService.java
  22. 63 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysBusinessFlowVuePageService.java
  23. 97 0
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowScriptServiceImpl.java
  24. 94 0
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowScriptVuePageLinkServiceImpl.java
  25. 97 0
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysBusinessFlowVuePageServiceImpl.java
  26. 126 0
      zkqy-system/src/main/resources/mapper/system/SysBusinessFlowScriptMapper.xml
  27. 73 0
      zkqy-system/src/main/resources/mapper/system/SysBusinessFlowScriptVuePageLinkMapper.xml
  28. 121 0
      zkqy-system/src/main/resources/mapper/system/SysBusinessFlowVuePageMapper.xml
  29. 5 0
      zkqy-system/src/main/resources/mapper/system/SysTenantMapper.xml
  30. 18 0
      zkqy-ui/src/api/bpmprocess/process.js
  31. 9 0
      zkqy-ui/src/api/system/tenant.js
  32. 4 9
      zkqy-ui/src/lang/en.js
  33. 4 6
      zkqy-ui/src/lang/zh.js
  34. 7 1
      zkqy-ui/src/views/system/excuteBtnMange/index.vue
  35. 97 5
      zkqy-ui/src/views/system/tenant/index.vue

+ 6 - 0
zkqy-admin/pom.xml

@@ -95,6 +95,12 @@
             <scope>system</scope>
             <systemPath>${java.home}/../lib/tools.jar</systemPath>
         </dependency>
+        <dependency>
+            <groupId>com.zkqy</groupId>
+            <artifactId>zkqy-process-execution</artifactId>
+            <version>3.8.5</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

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

@@ -0,0 +1,263 @@
+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.PlaceholderReplacer;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.system.domain.SysBusinessFlowScript;
+import com.zkqy.system.service.ISysBusinessFlowScriptService;
+import com.zkqy.web.controller.utils.DefaultPackageCompiler;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+/**
+ * 业务脚本Controller
+ *
+ * @author zkqy
+ * @date 2025-05-19
+ */
+@RestController
+@RequestMapping("/system/SysBusinessFlowScript")
+@Api(value = "/system/SysBusinessFlowScript", description = "业务脚本-接口")
+@Slf4j
+public class SysBusinessFlowScriptController extends BaseController
+{
+    @Autowired
+    private ISysBusinessFlowScriptService sysBusinessFlowScriptService;
+
+
+    @Value("${template.urlBusiness.javaDownload}")
+    private  String  urlJavaTemplateDownload;
+
+    @Value("${template.urluPload}")
+    private  String  urluPload;
+
+    /**
+     * 查询业务脚本列表
+     */
+    //@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);
+    }
+
+//    @GetMapping("/list/all")
+//    @ApiOperation(value = "查询业务脚本列表")
+//    public TableDataInfo listAll(SysBusinessFlowScript sysBusinessFlowScript)
+//    {
+//        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));
+    }
+
+    /**
+     * 脚本节点上传
+     * @param file
+     * @return
+     */
+
+    @PostMapping("/upload")
+    public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("businessKey") String businessKey) {
+        if (file.isEmpty()) {
+            return AjaxResult.error("请选择一个文件上传");
+        }
+        try {
+            // 1、上传文件的文件名称就是businessKey
+
+            // 2、确保保存文件的目录存在
+            Path uploadPath = Paths.get(urluPload);
+            if (!Files.exists(uploadPath)) {
+                Files.createDirectories(uploadPath);
+            }
+
+            // 3、删除对应的java源文件
+            StringBuffer stringBuffer=new StringBuffer();
+            stringBuffer.append(urluPload).append(businessKey);
+            File newFile = new File(stringBuffer.toString());
+            // 如果存在编译文件就把编译文件删除掉从新编译
+            if (newFile.exists()) {
+                newFile.delete();
+                log.info("java源文件删除成功!!!");
+            }
+
+            // 4、删除对应的编译文件
+            String methodName = file.getOriginalFilename().replace(".java", "");//替换内容
+            // 判断有没有生成对应的编译文件如果有就把编译文件删除掉
+            StringBuffer stringBufferClass=new StringBuffer();
+            stringBufferClass.append(urluPload).append(businessKey).append(".class");
+            File newFileClass = new File(stringBufferClass.toString());
+            // 如果存在编译文件就把编译文件删除掉从新编译
+            if (newFileClass.exists()) {
+                newFileClass.delete();
+                log.info("编译文件删除成功!!!");
+            }
+
+            // 5、将文件保存到指定路径
+            byte[] bytes = file.getBytes();
+            String pathString = urluPload + businessKey + ".java";
+            Path path = Paths.get(pathString);
+            Files.write(path, bytes);
+
+            PlaceholderReplacer placeholderReplacer = new PlaceholderReplacer();
+            //查询脚本信息
+//            SysBpmNodeScript sysBpmNodeScript1 = sysBpmNodeScriptService.selectSysBpmNodeScriptByScriptKey(replace);
+            //COMPONENT_ID PLACEHOLDERDesc
+            placeholderReplacer.setCOMPONENT_ID(businessKey); //脚本id
+            placeholderReplacer.setPLACEHOLDERDesc(file.getOriginalFilename());// 脚本描述----脚本名称
+            // 更改文件内容
+            // 第一步:将注解中的内容替换为占位符
+            String filledContent = placeholderReplacer.replaceWithPlaceholder(pathString);
+            // 第二步:将填充好的内容写入新文件
+            placeholderReplacer.createNewFile(pathString, filledContent);
+
+            // 6、开始把java文件编译成.class文件
+            DefaultPackageCompiler defaultPackageCompiler=new DefaultPackageCompiler();
+            String s = defaultPackageCompiler.compileJavaFile(pathString);
+            if(s.equals("编译成功")){
+                return AjaxResult.success("文件上传+编译成功", methodName);
+            }else {
+                // java 源文件
+                if (newFile.exists()) {
+                    newFile.delete();
+                    log.info("java源文件删除成功!!!");
+                }
+                // class 文件
+                if (newFileClass.exists()) {
+                    newFileClass.delete();
+                    log.info("class编译文件删除成功!!!");
+                }
+                return AjaxResult.error("编译失败,上传文件失败");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            return AjaxResult.error("读取文件失败: " + e.getMessage());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 下载java模板
+     * @return
+     * @throws IOException
+     */
+    @GetMapping("/download")
+    public ResponseEntity<Resource> downloadJavaTemplate() throws IOException {
+        // 加载模板文件
+        Resource resource = new FileSystemResource(urlJavaTemplateDownload);
+        // 设置响应头
+        HttpHeaders headers = new HttpHeaders();
+        headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=template.java");
+        headers.add(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE);
+
+        return ResponseEntity.ok()
+                .headers(headers)
+                .contentLength(resource.contentLength())
+                .body(resource);
+    }
+    /**
+     * 下载对应行的java代码
+     * @return
+     * @throws IOException
+     */
+    @GetMapping("/download/code")
+    public ResponseEntity<Resource> downloadJavaCode(String businessKey) throws IOException {
+        String fileName = businessKey + ".java";
+        // 加载模板文件
+        Resource resource = new FileSystemResource(urluPload + fileName);
+        // 设置响应头
+        HttpHeaders headers = new HttpHeaders();
+        headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
+        headers.add(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE);
+
+        return ResponseEntity.ok()
+                .headers(headers)
+                .contentLength(resource.contentLength())
+                .body(resource);
+    }
+}

+ 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));
+    }
+}

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

@@ -0,0 +1,171 @@
+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.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+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;
+
+    @Value("${template.urlBusiness.vueDownload}")
+    private  String  urlVueTemplateDownload;
+
+    /**
+     * 查询存放业务脚本的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);
+    }
+
+//    @GetMapping("/list/all")
+//    @ApiOperation(value = "查询存放业务脚本的vue页面列表")
+//    public TableDataInfo listAll(SysBusinessFlowVuePage sysBusinessFlowVuePage)
+//    {
+//        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));
+    }
+
+    /**
+     * 新增存放业务脚本的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));
+    }
+
+    /**
+     * 组件页面上传
+     *
+     */
+    @PostMapping("/uploadPage")
+    public AjaxResult uploadPage(@RequestParam("file") MultipartFile file) {
+        // 检查文件是否为空
+        if (file.isEmpty()) {
+            return AjaxResult.error("请选择一个文件进行上传");
+        }
+
+        // 检查文件类型是否为.vue
+        String originalFilename = file.getOriginalFilename();
+        if (originalFilename == null || !originalFilename.toLowerCase().endsWith(".vue")) {
+            return AjaxResult.error("请上传.vue格式的文件!");
+        }
+        try {
+            // 读取文件内容
+            String fileContent = new String(file.getBytes(), StandardCharsets.UTF_8);
+            // 返回文件内容
+            return AjaxResult.success("上传成功",fileContent);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return AjaxResult.error("读取文件失败: " + e.getMessage());
+        }
+    }
+
+    @GetMapping("/download")
+    public ResponseEntity<Resource> downloadJavaTemplate() throws IOException {
+        // 加载模板文件
+        Resource resource = new FileSystemResource(urlVueTemplateDownload);
+        // 设置响应头
+        HttpHeaders headers = new HttpHeaders();
+        headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=template.vue");
+        headers.add(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE);
+
+        return ResponseEntity.ok()
+                .headers(headers)
+                .contentLength(resource.contentLength())
+                .body(resource);
+    }
+
+
+}

+ 1 - 9
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysTenantController.java

@@ -5,16 +5,8 @@ import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 
 import com.zkqy.common.annotation.Anonymous;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.zkqy.common.annotation.Log;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;

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

@@ -166,5 +166,13 @@ OpenAuthorization2:
     CALLBACK: http://124.126.77.28:8080/oauth/callback
 
 template:
+  #模版下载地址
   urlDownload: D:\zkqy\test\AddAmmunitionPickingUp.java
+  urlDownloadVue: C:\nginx-1.22.1\script\template.Vue
+  #脚本地址
   urluPload: D:\zkqy\test\a\
+  #页面组件地址
+  pageUrl: C:\nginx-1.22.1\script\
+  urlBusiness:
+    javaDownload: D:\zkqy\businessTemplate\template.java
+    vueDownload: D:\zkqy\businessTemplate\template.vue

+ 110 - 0
zkqy-admin/src/main/resources/sql/initialize_sys_tenant_menu_i18n.json

@@ -83,6 +83,116 @@
     "tenantId": null,
     "menuNameEn": "Pipeline Node"
   },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 15000,
+    "menuName": "业务脚本",
+    "menuNameEn": "Business Script",
+    "parentName": null,
+    "parentId": 9764,
+    "orderNum": 9,
+    "path": "businessFlow/script",
+    "component": "businessFlow/script",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "logininfor",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 15001,
+    "menuName": "业务脚本页面",
+    "menuNameEn": "Business Script Page",
+    "parentName": null,
+    "parentId": 9764,
+    "orderNum": 10,
+    "path": "businessFlow/vuePage",
+    "component": "businessFlow/vuePage",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "0",
+    "status": "0",
+    "perms": "",
+    "icon": "logininfor",
+    "children": [
+
+    ],
+    "tenantName": null,
+    "tenantId": null
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 15002,
+    "menuName": "绑定页面脚本",
+    "menuNameEn": "Binding Page Script",
+    "parentName": null,
+    "parentId": 9764,
+    "orderNum": 11,
+    "path": "businessFlow/BindingPageScript",
+    "component": "businessFlow/BindingPageScript",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "logininfor",
+    "children": [
+    ],
+    "tenantName": null,
+    "tenantId": null
+  },
+  {
+    "createBy": null,
+    "createTime": "2023-05-25 08:54:10",
+    "updateBy": null,
+    "updateTime": null,
+    "remark": null,
+    "menuId": 15003,
+    "menuName": "跳转业务脚本页面",
+    "menuNameEn": "Jump Page",
+    "parentName": null,
+    "parentId": 4216,
+    "orderNum": 12,
+    "path": "businessFlow/jumpPage",
+    "component": "businessFlow/jumpPage",
+    "query": "",
+    "isFrame": "1",
+    "isCache": "0",
+    "menuType": "C",
+    "visible": "1",
+    "status": "0",
+    "perms": "",
+    "icon": "logininfor",
+    "children": [
+    ],
+    "tenantName": null,
+    "tenantId": null
+  },
   {
     "createBy": null,
     "createTime": "2023-05-25 08:54:10",

+ 13 - 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;
     /**
      * 租户等级
      */
@@ -224,4 +229,12 @@ public class SysTenant extends BaseEntity {
     public void setTenantParentId(String tenantParentId) {
         this.tenantParentId = tenantParentId;
     }
+
+    public String getTenantWechatIndexUrl() {
+        return tenantWechatIndexUrl;
+    }
+
+    public void setTenantWechatIndexUrl(String tenantWechatIndexUrl) {
+        this.tenantWechatIndexUrl = tenantWechatIndexUrl;
+    }
 }

+ 1 - 1
zkqy-common/src/main/java/com/zkqy/common/utils/file/MimeTypeUtils.java

@@ -30,7 +30,7 @@ public class MimeTypeUtils
             // 图片
             "bmp", "gif", "jpg", "jpeg", "png",
             // word excel powerpoint
-            "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
+            "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt", "java",
             // 压缩文件
             "rar", "zip", "gz", "bz2",
             // 视频格式

+ 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();
+}

+ 88 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/busLogicTest/IBusinessLogicServiceImpl2.java

@@ -0,0 +1,88 @@
+package com.zkqy.execution.produce.dispersed.service.impl.busLogicTest;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.BpmApprovalStatus;
+import com.zkqy.execution.produce.dispersed.service.IBpmApprovalStatusService;
+import com.zkqy.execution.produce.dispersed.service.IBusinessLogicService;
+import com.zkqy.system.domain.SysBusinessFlowScript;
+import com.zkqy.system.domain.SysBusinessFlowVuePage;
+import com.zkqy.system.service.ISysBusinessFlowScriptService;
+import com.zkqy.system.service.ISysBusinessFlowVuePageService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class IBusinessLogicServiceImpl2 implements IBusinessLogicService {
+    @Resource
+    private ISysBusinessFlowScriptService sysBusinessFlowScriptService;
+
+    @Resource
+    private ISysBusinessFlowVuePageService sysBusinessFlowVuePageService;
+
+    @Resource
+    private IBpmApprovalStatusService bpmApprovalStatusService;
+
+    // 参数校验,返回true才能执行下面的脚本
+    @Override
+    public Boolean valid(Map<String, Object> params) {
+        return true;
+    }
+
+    // 根据id查询出该行的数据用法参考
+    @Override
+    public AjaxResult query(Map<String, Object> params) {
+        Long id = Long.parseLong(params.get("id").toString());
+        SysBusinessFlowVuePage sysBusinessFlowVuePage = sysBusinessFlowVuePageService.selectSysBusinessFlowVuePageById(id);
+        return AjaxResult.success(sysBusinessFlowVuePage);
+    }
+
+    // 新增事件方法
+    @Override
+    public AjaxResult add(Map<String, Object> params) {
+        BpmApprovalStatus bpmApprovalStatus = new BpmApprovalStatus();
+        String tableId = params.get("tableId").toString();
+        bpmApprovalStatus.setApprovalState(tableId);
+        String name = params.get("name").toString();
+        bpmApprovalStatus.setTableName(name);
+        String state = params.get("state").toString();
+        bpmApprovalStatus.setApprovalState(state);
+        System.out.println("tableId" + tableId);
+        System.out.println("name" + name);
+        System.out.println("state" + state);
+        return AjaxResult.success(bpmApprovalStatusService.insertBpmApprovalStatus(bpmApprovalStatus));
+    }
+
+    // 修改操作
+    @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) {
+        SysBusinessFlowScript sysBusinessFlowScript = new SysBusinessFlowScript();
+        List<SysBusinessFlowScript> list = sysBusinessFlowScriptService.selectSysBusinessFlowScriptList(sysBusinessFlowScript);
+        return AjaxResult.success(list);
+    }
+
+    // 校验,返回为true才能执行脚本e
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    // 脚本执行完后的操作
+    @Override
+    public boolean preDestroy() {
+        return true;
+    }
+}

+ 84 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/busLogicTest/IBusinessLogicServiceImpl3.java

@@ -0,0 +1,84 @@
+package com.zkqy.execution.produce.dispersed.service.impl.busLogicTest;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.BpmApprovalStatus;
+import com.zkqy.execution.produce.dispersed.service.IBpmApprovalStatusService;
+import com.zkqy.execution.produce.dispersed.service.IBusinessLogicService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class IBusinessLogicServiceImpl3 implements IBusinessLogicService {
+
+    @Resource
+    private IBpmApprovalStatusService bpmApprovalStatusService;
+
+    // 参数校验,返回true才能执行下面的脚本
+    @Override
+    public Boolean valid(Map<String, Object> params) {
+        return true;
+    }
+
+    // 获取表格的数据
+    @Override
+    public AjaxResult query(Map<String, Object> params) {
+        BpmApprovalStatus bpmApprovalStatus1 = new BpmApprovalStatus();
+        List<BpmApprovalStatus> bpmApprovalStatuses = bpmApprovalStatusService.selectBpmApprovalStatusList(bpmApprovalStatus1);
+        return AjaxResult.success(bpmApprovalStatuses);
+    }
+
+    // 新增事件方法
+    @Override
+    public AjaxResult add(Map<String, Object> params) {
+        BpmApprovalStatus bpmApprovalStatus = new BpmApprovalStatus();
+        String tableId = params.get("tableId").toString();
+        String name = params.get("name").toString();
+        String state = params.get("state").toString();
+        bpmApprovalStatus.setApprovalState(state);
+        bpmApprovalStatus.setTableName(name);
+        bpmApprovalStatus.setTableId(tableId);
+        return AjaxResult.success(bpmApprovalStatusService.insertBpmApprovalStatus(bpmApprovalStatus));
+    }
+
+    // 修改操作
+    @Override
+    public AjaxResult update(Map<String, Object> params) {
+        Long id = Long.parseLong(params.get("id").toString());
+        String tableId = params.get("tableId").toString();
+        String name = params.get("name").toString();
+        String state = params.get("state").toString();
+        BpmApprovalStatus bpmApprovalStatus = new BpmApprovalStatus();
+        bpmApprovalStatus.setApprovalState(state);
+        bpmApprovalStatus.setTableId(tableId);
+        bpmApprovalStatus.setId(id);
+        bpmApprovalStatus.setTableName(name);
+        return AjaxResult.success(bpmApprovalStatusService.updateBpmApprovalStatus(bpmApprovalStatus));
+    }
+
+    // 删除操作
+    @Override
+    public AjaxResult delete(Map<String, Object> params) {
+        Long id = Long.parseLong(params.get("id").toString());
+        return AjaxResult.success(bpmApprovalStatusService.deleteBpmApprovalStatusById(id));
+    }
+
+    // 执行其他脚本方法
+    @Override
+    public AjaxResult otherMethod(Map<String, Object> params) {
+        return AjaxResult.success();
+    }
+
+    // 校验,返回为true才能执行脚本e
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    // 脚本执行完后的操作
+    @Override
+    public boolean preDestroy() {
+        return true;
+    }
+}

+ 56 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/busLogicTest/template.java

@@ -0,0 +1,56 @@
+//
+//
+//import com.zkqy.common.core.domain.AjaxResult;
+//import com.zkqy.execution.produce.dispersed.service.IBusinessLogicService;
+//import org.springframework.stereotype.Service;
+//
+//import java.util.Map;
+//
+///**
+// * 上传代码时请留意下方提醒,否则会导致编译失败 !!!
+// * 1.上传代码的时候不能带有package的路径,需要手动将路径删除
+// * 2.上传代码时,需要将类名和@service的值换成 ${componentId}
+// */
+//@Service("${componentId}")
+//public class ${componentId} implements IBusinessLogicService {
+//    //参数校验方法,默认返回true,返回true才能执行脚本
+//    @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) {
+//        return null;
+//    }
+//
+//    @Override
+//    public boolean isVerificationMethod() {
+//        return true;
+//    }
+//
+//    @Override
+//    public boolean preDestroy() {
+//        return true;
+//    }
+//}

+ 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();
+    }
+}

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

@@ -0,0 +1,61 @@
+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);
+}

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

@@ -0,0 +1,62 @@
+package com.zkqy.system.mapper;
+
+import com.zkqy.system.domain.SysBusinessFlowScriptVuePageLink;
+
+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);
+}

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

@@ -0,0 +1,62 @@
+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);
+}

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

@@ -0,0 +1,62 @@
+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 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);
+}

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

@@ -0,0 +1,62 @@
+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);
+
+    /**
+     * 查询脚本和页面的关联列表
+     * 
+     * @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);
+}

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

@@ -0,0 +1,63 @@
+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);
+
+    /**
+     * 查询存放业务脚本的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);
+}

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

@@ -0,0 +1,97 @@
+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);
+    }
+
+    /**
+     * 查询业务脚本列表
+     * 
+     * @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);
+    }
+}

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

@@ -0,0 +1,94 @@
+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);
+    }
+
+    /**
+     * 查询脚本和页面的关联列表
+     * 
+     * @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);
+    }
+}

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

@@ -0,0 +1,97 @@
+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);
+    }
+
+    /**
+     * 查询存放业务脚本的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);
+    }
+}

+ 126 - 0
zkqy-system/src/main/resources/mapper/system/SysBusinessFlowScriptMapper.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.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>
+        
+    <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>

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

@@ -0,0 +1,73 @@
+<?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>
+        
+    <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 vue_key = #{vueKey} and  vue_content = #{vueContent}
+    </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>

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

@@ -0,0 +1,121 @@
+<?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>
+        
+    <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"/>
         <result property="tenantProfession" column="tenant_profession"/>
     </resultMap>
@@ -38,6 +39,7 @@
                tenant_parent_id,
                tenant_tool_login_url,
                tenant_client_login_url,
+               tenant_wechat_index_url,
                tenant_grade,
                tenant_profession
         from sys_tenant
@@ -95,6 +97,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>
             <if test="tenantProfession!=null">tenant_profession,</if>
             is_del
@@ -111,6 +114,7 @@
             <if test="tenantParentId != null">#{tenantParentId},</if>
             <if test="tenantClientLoginUrl !=null">#{tenantClientLoginUrl},</if>
             <if test="tenantToolLoginUrl !=null">#{tenantToolLoginUrl},</if>
+            <if test="tenantWechatIndexUrl !=null">#{tenantWechatIndexUrl},</if>
             <if test="tenantGrade != null"> #{tenantGrade},</if>
             <if test="tenantProfession!=null">#{tenantProfession},</if>
             '0'
@@ -132,6 +136,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>
             <if test="tenantProfession!=null">tenant_profession=#{tenantProfession}</if>
         </trim>

+ 18 - 0
zkqy-ui/src/api/bpmprocess/process.js

@@ -192,3 +192,21 @@ export function listBusinessFlowVuePage(query) {
     params: query
   })
 }
+
+// 查询所有的业务脚本
+export function listBusinessFlowScript(query) {
+  return request({
+    url: '/system/SysBusinessFlowScript/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询所有的业务脚本页面
+export function listBusinessFlowVuePage(query) {
+  return request({
+    url: '/system/SysBusinessFlowVuePage/list',
+    method: 'get',
+    params: query
+  })
+}

+ 9 - 0
zkqy-ui/src/api/system/tenant.js

@@ -126,3 +126,12 @@ export function getCodeTenantAllList() {
     method: 'get',
   })
 }
+
+export function commonUpload(data) {
+  return request({
+    url: `/common/upload`,
+    method: 'post',
+    data: data,
+    baseURL: process.env.VUE_APP_BASE_API
+  })
+}

+ 4 - 9
zkqy-ui/src/lang/en.js

@@ -423,6 +423,10 @@ export default {
     tenantParentId: 'Parent Tenant ID',
     tenantClientLoginUrl: 'Client Login URL',
     tenantToolLoginUrl: 'Tool Login URL',
+    tenantWechatIndexUrl: 'Wechat Program Login URL',
+    configLoginPageClient:"config client",
+    configLoginPageTool:"config tool",
+    configLoginPageWechat:"config wechat index",
     tenantGrade: 'Tenant Grade',
     tenantExpirationTime: 'Expiration Days',
     tenantProfession: 'Tenant Type',
@@ -1039,9 +1043,6 @@ export default {
     directory: 'Directory',
     outLink: 'External Link',
     innerLink: 'Internal Link',
-    insert: 'Insert',
-    update: 'Update',
-    delete: 'Delete',
     execute: 'Execute Script',
     initiated: 'Initiate Process',
     print: 'Print',
@@ -1052,11 +1053,6 @@ export default {
     addBtnGroupName:'Create a new button group',
     addBtnName: "Create a new button group",
     businessScript:"Business Script",
-    query: 'Query',
-    insert: 'Insert',
-    update: 'Update',
-    delete: 'Delete',
-    otherMethod: 'Other',
     businessScriptPage: "open Business Script Page",
     otherMethod: 'Other Method',
     bindBusinessFlowScriptType:"Script Type",
@@ -1064,7 +1060,6 @@ export default {
     selectBusinessFlowScript:"Select Script",
     bindBusinessFlowVuePage:"Bind Vue Page",
     selectBusinessFlowVuePage:"Select Vue Page",
-    query:"query",
     valid:"valid",
   },
   formGroup: {

+ 4 - 6
zkqy-ui/src/lang/zh.js

@@ -424,6 +424,7 @@ export default {
     tenantParentId: '租户父级ID',
     tenantClientLoginUrl: '客户端访问地址',
     tenantToolLoginUrl: '工具端访问地址',
+    tenantWechatIndexUrl:"微信小程序首页地址",
     tenantGrade: '租户等级',
     tenantExpirationTime: '到期天数',
     tenantProfession: '租户类型',
@@ -441,6 +442,9 @@ export default {
     bindDatasource: '绑定数据源',
     activateTenant: '激活租户',
     configLoginPage: '配置登录页',
+    configLoginPageClient:"配置客户端",
+    configLoginPageTool:"配置工具端",
+    configLoginPageWechat:"配置小程序",
     publicNetwork: '公网',
     privateNetwork: '内网',
     datasourceType: '数据源类型',
@@ -1040,10 +1044,6 @@ export default {
     directory: '目录',
     outLink: '外链',
     innerLink: '内链',
-    businessScript:"业务脚本",
-    insert: '新增',
-    update: '修改',
-    delete: '删除',
     execute: '执行脚本',
     initiated: '发起流程',
     print: '打印',
@@ -1053,11 +1053,9 @@ export default {
     export: '导出',
     addBtnGroupName:'新建按钮组',
     addBtnName: "新建按钮组",
-    query: '查询',
     insert: '新增',
     update: '修改',
     delete: '删除',
-    otherMethod: '其他',
     bindBusinessFlowScriptType:"脚本类型",
     selectBusinessFlowScriptType:"请选择脚本类型",
     selectBusinessFlowScript:"请选择业务脚本",

+ 7 - 1
zkqy-ui/src/views/system/excuteBtnMange/index.vue

@@ -888,7 +888,13 @@ export default {
             validator: this.checkBtnProcessKey,
             trigger: "change",
           },
-        ]
+        ],
+        btnScriptKey: [
+          {
+            validator: this.checkBtnScriptKey,
+            trigger: "change",
+          },
+        ],
       },
       // 表单类型
       // formTypeOptions: [

+ 97 - 5
zkqy-ui/src/views/system/tenant/index.vue

@@ -126,6 +126,11 @@
         align="center"
         prop="tenantToolLoginUrl"
       />
+      <el-table-column
+        :label="$t('tenant.tenantWechatIndexUrl')"
+        align="center"
+        prop="tenantWechatIndexUrl"
+      />
       <!--      <el-table-column :label="$t('tenant.tenantGrade')" align="center" prop="tenantGrade"/>-->
       <el-table-column
         :label="$t('tenant.tenantExpirationTime')"
@@ -201,7 +206,7 @@
                   icon="el-icon-s-open"
                   @click="openLoginConfig(scope.row, 'client')"
                   v-hasPermi="['system:tenant:remove']"
-                  >{{$t('tenant.configLoginPage')}}
+                  >{{$t('tenant.configLoginPageClient')}}
                 </el-button>
               </el-dropdown-item>
               <el-dropdown-item>
@@ -211,10 +216,19 @@
                   icon="el-icon-s-open"
                   @click="openLoginConfig(scope.row, 'tool')"
                   v-hasPermi="['system:tenant:remove']"
-                  >{{$t('tenant.configLoginPage')}}
+                  >{{$t('tenant.configLoginPageTool')}}
+                </el-button>
+              </el-dropdown-item>
+              <el-dropdown-item>
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-s-open"
+                  @click="wechatIndexConfig(scope.row)"
+                  v-hasPermi="['system:tenant:remove']"
+                >{{$t('tenant.configLoginPageWechat')}}
                 </el-button>
               </el-dropdown-item>
-
             </el-dropdown-menu>
           </el-dropdown>
         </template>
@@ -499,6 +513,35 @@
       </div>
     </el-dialog>
 
+    <!-- 租户微信小程序配置 -->
+    <el-dialog :title="$t('tenant.configLoginPageWechat')" :visible.sync="wechatDialogFormVisible">
+      <el-form :model="wechatConfigForm">
+        <el-form-item label="首页路径" label-width="100px" >
+          <el-input v-model="wechatConfigForm.tenantWechatIndexUrl" autocomplete="off" disabled></el-input>
+        </el-form-item>
+        <el-form-item label="上传文件自动获取路径" prop="path">
+          <el-upload
+            action="#"
+            :before-upload="beforeUpload"
+            :show-file-list="true"
+            accept=".html"
+            :http-request="customUpload"
+            :limit="1"
+            :file-list="fileList"
+          >
+            <el-button type="primary" size="small">上传文件</el-button>
+            <span slot="tip" class="el-upload__tip" style="margin-left: 10px;">
+              只能上传.html文件
+            </span>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="wechatDialogFormClose">取 消</el-button>
+        <el-button type="primary" @click="wechatDialogFormUpadte">确 定</el-button>
+      </div>
+    </el-dialog>
+
     <!-- 租户克隆表单信息 -->
     <el-dialog
       :title="loginFormCloneOpenTitle"
@@ -539,7 +582,7 @@ import {
   activationOperation,
   getTenantChildrenInfo,
   getTenantAllList,
-  tenantTree,
+  tenantTree, commonUpload,
 } from "@/api/system/tenant";
 import { getDataSourceInfo, insertDataSource } from "@/api/system/data";
 
@@ -554,7 +597,6 @@ import ExcelDownLoad from "@/components/ExcelDownLoad/index.vue";
 import { mapState } from "vuex";
 import {listIndustry} from "@/api/system/industry";
 
-
 export default {
   name: "Tenant",
   dicts: [
@@ -582,6 +624,7 @@ export default {
           { required: true, message: "请选择租户名称", trigger: "blur" },
         ],
       },
+      fileList:[],
       tenantProfessionList:[],//租户类型
       tenantTempList: [], //租户列表
       tableShow: true,
@@ -610,6 +653,11 @@ export default {
         地址: "address",
         是否删除: "isDel",
       },
+      wechatDialogFormVisible: false,
+      wechatConfigForm: {
+        tenantWechatIndexUrl:"",
+        tenantId:"",
+      },
       excelTitle: "tenant",
       // 弹窗的加载提示
       dialogLoading: false,
@@ -900,6 +948,50 @@ export default {
         }
       } catch (error) {}
     },
+    resetWechatConfigForm(){
+      this.wechatConfigForm.tenantId = '';
+      this.wechatConfigForm.tenantWechatIndexUrl = '';
+      this.fileList = [];
+    },
+    async wechatIndexConfig(row){
+      this.resetWechatConfigForm();
+      this.wechatConfigForm.tenantId = row.tenantId;
+      this.wechatConfigForm.tenantWechatIndexUrl = row.tenantWechatIndexUrl;
+      this.wechatDialogFormVisible = true;
+    },
+    beforeUpload(file) {
+      const isHtmlFile = file.name.endsWith('.html');
+      if (!isHtmlFile) this.$message.error('只能上传 Html 文件!');
+      return isHtmlFile;
+    },
+    customUpload({ file }) {
+      const formData = new FormData();
+      formData.append('file', file);  // 根据后端接口字段名调整 key 名
+      this.fileList = [{ name: file.name }];
+      commonUpload(formData).then(response => {
+        if (response.code === 200) {
+          this.wechatConfigForm.tenantWechatIndexUrl = response.url;
+          this.$modal.msgSuccess('文件上传成功');
+        }else{
+          this.$modal.msgError(response.msg);
+        }
+        })
+    },
+    wechatDialogFormClose(){
+      this.resetWechatConfigForm();
+      this.wechatDialogFormVisible = false;
+    },
+    async wechatDialogFormUpadte(){
+      let res = await updateTenant(this.wechatConfigForm);
+      if (res.code == 200) {
+        this.wechatDialogFormVisible = false;
+        this.$modal.msgSuccess('更新成功');
+        this.getList();
+      }else{
+        this.$modal.msgSuccess('更新失败,请联系管理员');
+      }
+      this.resetWechatConfigForm();
+    },
     // 获取所用用户名,作校验用
     async selectAllUser() {
       let res = await selectAllUser();