瀏覽代碼

feat:查询模板库数据表接口,管道节点管理添加数据表

xuezizhuo 1 年之前
父節點
當前提交
e49ed2664a

+ 27 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TemplateBaseController.java

@@ -0,0 +1,27 @@
+package com.ruoyi.web.controller.system;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.system.service.TemplateBaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 模板库Controller
+ */
+@RestController
+@RequestMapping("/system/templateBase")
+public class TemplateBaseController {
+
+    @Autowired
+    private TemplateBaseService templateBaseService;
+
+    /**
+     * 查询模板数据库表信息
+     */
+    @GetMapping("/queryTemplateBaseTable")
+    public AjaxResult queryTemplateBaseTable(){
+        return AjaxResult.success(templateBaseService.queryTemplateBaseTable());
+    }
+}

+ 12 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysBpmNodeScript.java

@@ -33,6 +33,9 @@ public class SysBpmNodeScript extends BaseEntity
     /** 脚本类型 */
     private Long scriptType;
 
+    /** 表名 */
+    private String tableName;
+
     /** 脚本描述 */
     private String scriptDescription;
 
@@ -118,6 +121,14 @@ public class SysBpmNodeScript extends BaseEntity
         this.industryType = industryType;
     }
 
+    public String getTableName() {
+        return tableName;
+    }
+
+    public void setTableName(String tableName) {
+        this.tableName = tableName;
+    }
+
     public String getDelFlag()
     {
         return delFlag;
@@ -134,6 +145,7 @@ public class SysBpmNodeScript extends BaseEntity
             .append("scriptType", getScriptType())
             .append("scriptDescription", getScriptDescription())
             .append("industryType",getIndustryType())
+            .append("tableName",getTableName())
             .append("delFlag", getDelFlag())
             .append("createBy", getCreateBy())
             .append("createTime", getCreateTime())

+ 46 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TemplateBaseVo.java

@@ -0,0 +1,46 @@
+package com.ruoyi.system.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 模板库VO
+ */
+public class TemplateBaseVo {
+
+    /**
+     * 表名称
+     */
+    private String tableName;
+
+    /**
+     * 表描述
+     */
+    private String tableComment;
+
+    public String getTableName() {
+        return tableName;
+    }
+
+    public void setTableName(String tableName) {
+        this.tableName = tableName;
+    }
+
+    public String getTableComment() {
+        return tableComment;
+    }
+
+    public void setTableComment(String tableComment) {
+        this.tableComment = tableComment;
+    }
+
+    @Override
+    public String toString() {
+        return "TemplateBaseVo{" +
+                "tableName='" + tableName + '\'' +
+                ", tableComment='" + tableComment + '\'' +
+                '}';
+    }
+}

+ 18 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TemplateBaseMapper.java

@@ -0,0 +1,18 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.vo.TemplateBaseVo;
+
+import java.util.List;
+
+/**
+ * 模板库数据层
+ */
+public interface TemplateBaseMapper {
+
+    /**
+     * 查询模板库所有数据表
+     * @return
+     */
+    List<TemplateBaseVo> queryTemplateBaseTable();
+
+}

+ 17 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/TemplateBaseService.java

@@ -0,0 +1,17 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.vo.TemplateBaseVo;
+
+import java.util.List;
+
+/**
+ * 模板库业务层
+ */
+public interface TemplateBaseService {
+
+    /**
+     * 查询模板库所有数据表
+     * @return
+     */
+    List<TemplateBaseVo> queryTemplateBaseTable();
+}

+ 24 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TemplateBaseServiceImpl.java

@@ -0,0 +1,24 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.system.domain.vo.TemplateBaseVo;
+import com.ruoyi.system.mapper.TemplateBaseMapper;
+import com.ruoyi.system.service.TemplateBaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 模板库服务层处理
+ */
+@Service
+public class TemplateBaseServiceImpl implements TemplateBaseService {
+
+    @Autowired
+    private TemplateBaseMapper templateBaseMapper;
+
+    @Override
+    public List<TemplateBaseVo> queryTemplateBaseTable() {
+        return templateBaseMapper.queryTemplateBaseTable();
+    }
+}

+ 6 - 1
ruoyi-system/src/main/resources/mapper/system/SysBpmNodeScriptMapper.xml

@@ -13,6 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="scriptType"    column="script_type"    />
         <result property="scriptDescription"    column="script_description"    />
         <result property="industryType" column="industry_type"/>
+        <result property="tableName" column="table_name"/>
         <result property="delFlag"    column="del_flag"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
@@ -21,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectSysBpmNodeScriptVo">
-        select id, script_key, script_function_name, script_name, script_function_code, script_type, script_description, industry_type, del_flag, create_by, create_time, update_by, update_time from sys_bpm_node_script
+        select id, script_key, script_function_name, script_name, script_function_code, script_type, script_description, industry_type,table_name, del_flag, create_by, create_time, update_by, update_time from sys_bpm_node_script
     </sql>
 
     <select id="selectSysBpmNodeScriptList" parameterType="SysBpmNodeScript" resultMap="SysBpmNodeScriptResult">
@@ -34,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="scriptType != null "> and script_type = #{scriptType}</if>
             <if test="scriptDescription != null  and scriptDescription != ''"> and script_description = #{scriptDescription}</if>
             <if test="industryType != null"> and industry_type = #{industryType}</if>
+            <if test="tableName != null and tableName != ''"> and table_name = #{tableName}</if>
              order by create_time desc
     </select>
     
@@ -52,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="scriptType != null">script_type,</if>
             <if test="scriptDescription != null">script_description,</if>
             <if test="industryType != null">industry_type,</if>
+            <if test="tableName != null">table_name,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
             del_flag
@@ -64,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="scriptType != null">#{scriptType},</if>
             <if test="scriptDescription != null">#{scriptDescription},</if>
             <if test="industryType != null">#{industryType},</if>
+            <if test="tableName != null">#{tableName},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
             '0'
@@ -80,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="scriptType != null">script_type = #{scriptType},</if>
             <if test="scriptDescription != null">script_description = #{scriptDescription},</if>
             <if test="industryType != null">industry_type = #{industryType},</if>
+            <if test="tableName != null">table_name = #{tableName},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
         </trim>

+ 12 - 0
ruoyi-system/src/main/resources/mapper/system/TemplateBaseMapper.xml

@@ -0,0 +1,12 @@
+<?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.ruoyi.system.mapper.TemplateBaseMapper">
+
+    <select id="queryTemplateBaseTable" resultType="com.ruoyi.system.domain.vo.TemplateBaseVo">
+        select table_name tableName,create_time createTime,table_comment tableComment from information_schema.tables
+        where table_schema= 'zkqy-template' and table_name != 'table_info' order by createTime asc
+    </select>
+
+</mapper>

+ 8 - 0
ruoyi-ui/src/api/bpmprocess/script.js

@@ -15,4 +15,12 @@ export function updateScript(data) {
       url: '/system/script/' + id,
       method: 'delete'
     })
+  }
+
+  //查询模板库数据表
+  export function queryTemplateBaseTable() {
+    return request({
+      url: '/system/templateBase/queryTemplateBaseTable',
+      method: 'get'
+    })
   }

+ 75 - 169
ruoyi-ui/src/views/bpmprocess/scriptManage.vue

@@ -1,117 +1,47 @@
 <template>
   <div class="app-container">
-    <el-form
-      :model="queryParams"
-      ref="queryForm"
-      size="small"
-      :inline="true"
-      v-show="showSearch"
-      label-width="68px"
-    >
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="脚本编码" prop="scriptKey">
-        <el-input
-          v-model="queryParams.scriptKey"
-          placeholder="请输入脚本编码"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input v-model="queryParams.scriptKey" placeholder="请输入脚本编码" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="脚本方法名称" prop="scriptFunctionName">
-        <el-input
-          v-model="queryParams.scriptFunctionName"
-          placeholder="请输入脚本方法名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input v-model="queryParams.scriptFunctionName" placeholder="请输入脚本方法名称" clearable
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="脚本名称" prop="scriptName">
-        <el-input
-          v-model="queryParams.scriptName"
-          placeholder="请输入脚本名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input v-model="queryParams.scriptName" placeholder="请输入脚本名称" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item>
-        <el-button
-          type="primary"
-          icon="el-icon-search"
-          size="mini"
-          @click="handleQuery"
-          >搜索</el-button
-        >
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
-        >
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:script:add']"
-          >新增</el-button
-        >
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
+          v-hasPermi="['system:script:add']">新增</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:script:edit']"
-          >修改</el-button
-        >
+        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
+          v-hasPermi="['system:script:edit']">修改</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:script:remove']"
-          >删除</el-button
-        >
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
+          v-hasPermi="['system:script:remove']">删除</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:script:export']"
-          >导出</el-button
-        >
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['system:script:export']">导出</el-button>
       </el-col>
-      <right-toolbar
-        :showSearch.sync="showSearch"
-        @queryTable="getList"
-      ></right-toolbar>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table
-      v-loading="loading"
-      :data="scriptList"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" :data="scriptList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="编号" align="center" prop="id" />
       <el-table-column label="脚本编码" align="center" prop="scriptKey" />
-      <el-table-column
-        label="脚本方法名称"
-        align="center"
-        prop="scriptFunctionName"
-      />
+      <!-- <el-table-column label="脚本方法名称" align="center" prop="scriptFunctionName" /> -->
       <el-table-column label="脚本名称" align="center" prop="scriptName" />
       <!-- <el-table-column
         label="脚本方法体"
@@ -128,55 +58,32 @@
           {{ getDictLabel(scope.row.industryType, dict.type.industry_type) }}
         </template>
       </el-table-column>
-      <el-table-column
-        label="脚本描述"
-        align="center"
-        prop="scriptDescription"
-      />
-      <el-table-column
-        label="操作"
-        align="center"
-        class-name="small-padding fixed-width"
-      >
+      <el-table-column label="数据表" align="center" prop="tableName"></el-table-column>
+      <el-table-column label="脚本描述" align="center" prop="scriptDescription" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:script:edit']"
-            >修改</el-button
-          >
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:script:remove']"
-            >删除</el-button
-          >
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:script:edit']">修改</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+            v-hasPermi="['system:script:remove']">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
 
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
 
     <!-- 添加或修改流程节点脚本对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="100px">
- 
+
         <el-form-item label="脚本编码:" prop="scriptKey">
           <el-col :span="20">
-            <el-input v-model="form.scriptKey" placeholder="请输入脚本编码" :disabled="true"/>
+            <el-input v-model="form.scriptKey" placeholder="请输入脚本编码" :disabled="true" />
           </el-col>
           <el-col :span="4">
-            <el-button icon="el-icon-document-copy" v-clipboard:copy="form.scriptKey" v-clipboard:success="onCopy" v-clipboard:error="onError"></el-button>
+            <el-button icon="el-icon-document-copy" v-clipboard:copy="form.scriptKey" v-clipboard:success="onCopy"
+              v-clipboard:error="onError"></el-button>
           </el-col>
         </el-form-item>
         <el-form-item label="脚本名称:" prop="scriptName">
@@ -184,57 +91,43 @@
         </el-form-item>
         <el-form-item label="脚本类型:" prop="scriptType">
           <!-- <el-input v-model="form.scriptName" placeholder="请输入脚本名称" /> -->
-          <el-select
-            v-model="form.scriptType"
-            placeholder="请选择脚本类型"
-            filterable
-          >
-            <el-option
-              v-for="item in dict.type.bpm_script_type"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
+          <el-select v-model="form.scriptType" placeholder="请选择脚本类型" filterable>
+            <el-option v-for="item in dict.type.bpm_script_type" :key="item.value" :label="item.label"
+              :value="item.value">
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="行业类型:" prop="industryType">
-          <el-select
-            v-model="form.industryType"
-            placeholder="请选择行业类型"
-            filterable
-          >
-            <el-option
-              v-for="item in dict.type.industry_type"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            >
+          <el-select v-model="form.industryType" placeholder="请选择行业类型" filterable>
+            <el-option v-for="item in dict.type.industry_type" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="方法名:" prop="scriptFunctionName">
+        <!-- <el-form-item label="方法名:" prop="scriptFunctionName">
           <el-input
             v-model="form.scriptFunctionName"
             placeholder="请输入脚本方法名称"
           />
         </el-form-item>
 
-        <el-form-item label="方法体:" prop="scriptFunctionCode">
-          <!-- <el-input
+        <el-form-item label="方法体:" prop="scriptFunctionCode"> -->
+        <!-- <el-input
             v-model="form.scriptFunctionCode"
             type="textarea"
             placeholder="请输入内容"
           /> -->
-          <!-- <div ref="container" class="monaco-container">
+        <!-- <div ref="container" class="monaco-container">
           </div> -->
-          <el-button icon="el-icon-edit" @click="drawerOpenHandler"></el-button>
+        <!-- <el-button icon="el-icon-edit" @click="drawerOpenHandler"></el-button>
+        </el-form-item> -->
+        <el-form-item label="数据表:" prop="tableName">
+          <el-select v-model="form.tableName" multiple placeholder="请选择数据表">
+            <el-option v-for="item in tableNameList" :key="item.tableName" :label="item.tableComment" :value="item.tableName">
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="脚本描述:" prop="scriptDescription">
-          <el-input
-            v-model="form.scriptDescription"
-            placeholder="请输入脚本描述"
-          />
+          <el-input v-model="form.scriptDescription" placeholder="请输入脚本描述" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -242,12 +135,7 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
-    <el-drawer
-      :visible.sync="drawer"
-      direction="rtl"
-      :before-close="drawerHandleClose"
-      :with-header="false"
-    >
+    <el-drawer :visible.sync="drawer" direction="rtl" :before-close="drawerHandleClose" :with-header="false">
       <div ref="container" class="monaco-container"></div>
     </el-drawer>
   </div>
@@ -259,12 +147,13 @@ import {
   getScript,
   addScript,
 } from "@/api/bpmprocess/process";
-import {updateScript,delScript} from "@/api/bpmprocess/script"
+import { updateScript, delScript, queryTemplateBaseTable } from "@/api/bpmprocess/script"
 import uuid from "@/utils/bpmn/uuid";
 import Editor from "vue2-ace-editor";
-import {v4 as uuidv4} from 'uuid';
+import { v4 as uuidv4 } from 'uuid';
 import * as monaco from "monaco-editor";
 import Clipboard from "clipboard";
+import { Cog } from "lucide-vue";
 
 export default {
   name: "Script",
@@ -290,6 +179,8 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      //表数据
+      tableNameList: [],
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -304,6 +195,7 @@ export default {
       },
       // 表单参数
       form: {
+        tableName:[]
       },
       // 表单校验
       rules: {
@@ -322,6 +214,9 @@ export default {
         industryType: [
           { required: true, message: "请选择脚本类型", trigger: "change" },
         ],
+        tableName: [
+          { required: true, message: "请选择数据表", trigger: "change" },
+        ],
       },
 
       // 代码编辑器相关数据
@@ -378,6 +273,7 @@ export default {
         this.total = response.total;
         this.loading = false;
       });
+      
     },
     // 取消按钮
     cancel() {
@@ -395,6 +291,7 @@ export default {
         scriptType: null,
         industryType: null,
         scriptDescription: null,
+        tableName: null,
         delFlag: null,
         createBy: null,
         createTime: null,
@@ -420,11 +317,13 @@ export default {
       this.multiple = !selection.length;
     },
     /** 新增按钮操作 */
-    handleAdd() { 
+    handleAdd() {
       this.monacoEditor?.dispose();
       this.reset();
-      this.form.scriptKey= uuidv4();
-      console.log(this.form.scriptKey);
+      this.form.scriptKey = uuidv4();
+      queryTemplateBaseTable().then((response) => {
+        this.tableNameList = response.data
+      });
       this.open = true;
       this.title = "添加流程节点脚本";
       // this.$nextTick(() => {
@@ -440,12 +339,17 @@ export default {
     handleUpdate(row) {
       this.monacoEditor?.dispose();
       this.reset();
+      queryTemplateBaseTable().then((response) => {
+        this.tableNameList = response.data
+      });
       const id = row.id || this.ids;
       getScript(id).then((response) => {
         response.data.scriptType = response.data.scriptType.toString();
+        response.data.tableName = null?.split(",");
         this.form = response.data;
         this.open = true;
         this.title = "修改流程节点脚本";
+        console.log(this.form);
       });
     },
     /** 提交按钮 */
@@ -453,14 +357,16 @@ export default {
       // console.log(this.monacoEditor?.getValue());
       this.$refs["form"].validate((valid) => {
         if (valid) {
+          this.form.tableName = this.form.tableName.join(",");
           if (this.form.id != null) {
             updateScript(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
-          } else { 
+          } else {
             addScript(this.form).then((response) => {
+              console.log(this.form);
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -481,7 +387,7 @@ export default {
           this.getList();
           this.$modal.msgSuccess("删除成功");
         })
-        .catch(() => {});
+        .catch(() => { });
     },
     /** 导出按钮操作 */
     handleExport() {
@@ -527,7 +433,7 @@ export default {
             done();
           }
         )
-        .catch(() => {});
+        .catch(() => { });
     },
   },
 };