浏览代码

流程设计添加节点相关tableName数据

lph 1 年之前
父节点
当前提交
b226773e92

+ 3 - 24
ruoyi-ui/src/views/bpmprocess/scriptManage.vue

@@ -474,30 +474,9 @@ export default {
       });
       const id = row.id || this.ids;
       getScript(id).then((response) => {
-        let {
-          id,
-          scriptKey,
-          scriptFunctionName,
-          scriptName,
-          scriptFunctionCode,
-          scriptType,
-          industryType,
-          scriptDescription,
-          tableName,
-        } = response.data;
-        Object.assign(this.form, {
-          id,
-          scriptKey,
-          scriptFunctionName,
-          scriptName,
-          scriptFunctionCode,
-          scriptType,
-          industryType,
-          scriptDescription,
-          tableName,
-        });
-        this.form.scriptType = response.data.scriptType.toString();
-        this.form.tableName = this.form.tableName?.split(",");
+        response.data.scriptType = response.data.scriptType.toString();
+        response.data.tableName = response.data.tableName?.split(",");
+        this.form = response.data;
         this.open = true;
         this.title = "修改流程节点脚本";
       });

+ 7 - 0
ruoyi-ui/src/views/system/bpmnPro/components/Panel/components/ElementNormalTask.vue

@@ -81,6 +81,8 @@ import {
   getNormalScriptKey,
   setNormalScriptTriggerType,
   getNormalScriptTriggerType,
+  setNormalTableName,
+  getNormalTableName,
 } from "@packages/bo-utils/myFieldUtil";
 import { getActive } from "@packages/bpmn-utils/BpmnDesignerUtils";
 import { listScript } from "@/api/bpmprocess/process";
@@ -135,6 +137,7 @@ export default {
       ).map((item) => ({
         value: item.scriptKey,
         label: item.scriptName,
+        tableName: item.tableName,
       }));
       console.log(this.scriptList);
       // this.scriptList = res.rows.map((item) => ({
@@ -143,8 +146,12 @@ export default {
       // }));
     },
     updateScriptKey(value) {
+      let tableName = this.scriptList.find(
+        (item) => item.value == value
+      )?.tableName;
       setNormalScriptKey(getActive(), value);
       setNormalScriptTriggerType(getActive(), this.scriptTriggerType);
+      tableName && setNormalTableName(getActive(), tableName);
     },
     updateScriptTriggerType(value) {
       setNormalScriptTriggerType(getActive(), value);

+ 7 - 0
ruoyi-ui/src/views/system/bpmnPro/components/Panel/components/ElementUnusualTasks.vue

@@ -321,6 +321,7 @@ export default {
     },
     async saveUnusualTask(index) {
       await this.$refs.formRef.validate();
+      console.log(this.newUnusualTask);
       this.activeIndex === -1
         ? addUnusualTask(getActive(), this.newUnusualTask)
         : updateUnusualTask(
@@ -341,6 +342,7 @@ export default {
         formType: "",
         formId: "",
         compName: "", //组件名
+        tableName: "", //数据表  以 , 分割的字符串
         // event: getDefaultEvent(getActive()),
         // type: "class",
       };
@@ -355,6 +357,10 @@ export default {
     },
     // 脚本名改变
     scriptKeyChange(value) {
+      console.log(this.filteredScriptList);
+      this.newUnusualTask.tableName = this.filteredScriptList.find(
+        (item) => item.value == value
+      )?.tableName;
       this.newUnusualTask.scriptName =
         this.scriptKeyList.filter((item) => item.value == value)[0]?.label ||
         "未命名脚本";
@@ -396,6 +402,7 @@ export default {
         (item) => ({
           value: item.scriptKey,
           label: item.scriptName,
+          tableName: item.tableName,
         })
       );
     },

+ 2 - 0
ruoyi-ui/src/views/system/bpmnPro/components/Toolbar/tools/Save.vue

@@ -130,6 +130,8 @@ export default {
       // 获取xml标签内容标签内容
       let xmlPro = await this.getProcess("xml");
       var xmlObj = this.xmlStr2XmlObj(xmlPro);
+      // getNodeMsg(xmlObj);
+      // return;
       let validateNodeRes = validateNode(xmlObj);
       if (!validateNodeRes.flag) {
         this.$message.error(validateNodeRes.msg);

+ 28 - 3
ruoyi-ui/src/views/system/bpmnPro/components/bo-utils/getNodeMsg.js

@@ -38,7 +38,7 @@ export function getNodeMsg(xmlObj) {
   let prefix = getProcessEngine();
   let { attributes, childNodes } = xmlObj
     .getElementsByTagName("bpmn:process")[0];
-  let bpmProcessConfigurationList = [], bpmNodeHandleUserList = [], bpmNodeScriptRelevanceList = [], attributeArray = ['nodeKey', 'nodeFormKey', 'nodeFormType', 'nodeProcessKey', 'nodeRolePremission', 'spare1', 'spare2', 'spare3', 'createBy', 'updateBy', 'remark', 'nodeExecuteType'];
+  let bpmProcessConfigurationList = [], bpmNodeHandleUserList = [], bpmNodeScriptRelevanceList = [], bpmTableNameList = [], attributeArray = ['nodeKey', 'nodeFormKey', 'nodeFormType', 'nodeProcessKey', 'nodeRolePremission', 'spare1', 'spare2', 'spare3', 'createBy', 'updateBy', 'remark', 'nodeExecuteType'];
   childNodes.forEach((node) => {
     // let uuid = uuidv4();
 
@@ -64,6 +64,8 @@ export function getNodeMsg(xmlObj) {
     if (nodeObj.nodeType == "sequenceFlow") return;
     let nodeExceptionList = getNodeException(node, nodeObj)
     let bpmNodeHandleUser = getBpmNodeHandleUser(node, nodeObj)
+    let tableNameList = getTableNameList(node, nodeObj)
+    bpmTableNameList = [...bpmTableNameList, ...tableNameList]
     bpmNodeScriptRelevanceList = [...bpmNodeScriptRelevanceList, ...nodeExceptionList];//获取节点脚本数据
     bpmNodeHandleUserList = [...bpmNodeHandleUserList, ...bpmNodeHandleUser]
     attributeArray.forEach(attr => {
@@ -83,10 +85,12 @@ export function getNodeMsg(xmlObj) {
     }
     bpmProcessConfigurationList.push(nodeObj)
   })
+  bpmTableNameList = [...new Set(bpmTableNameList)];
   return {
     bpmProcessConfigurationList,
     bpmNodeHandleUserList,
-    bpmNodeScriptRelevanceList
+    bpmNodeScriptRelevanceList,
+    tableNameList: bpmTableNameList
   };
 }
 
@@ -170,6 +174,27 @@ function getBpmNodeHandleUser(node, nodeObj) {
   return [res]
 }
 
+function getTableNameList(node, nodeObj) {
+  console.dir(node, nodeObj);
+  let prefix = getProcessEngine();
+  let res = [];
+  // 获取正常节点的tableName
+  let tableNameArr = node.getAttribute(prefix + ':tableName')
+  tableNameArr && (res = res.concat(tableNameArr.split(',')));
+
+  // 获取异常节点的tableName
+  node.childNodes[0]?.childNodes.forEach(item => {
+    if (item.localName == 'unusualTask') {
+      let tableNameArrUn = item.getAttribute('tableName')
+      tableNameArrUn && (res = res.concat(tableNameArrUn.split(',')));
+    }
+  })
+  console.log(res);
+  return res;
+}
+
+
+
 // 处理节点数据更新
 export function filterNodeMsg(oldMsg, newMsg) {
   let keys = ['bpmProcessConfigurationList', 'bpmNodeScriptRelevanceList', 'bpmNodeHandleUserList', 'removeNodeIds']
@@ -199,7 +224,7 @@ export function filterNodeMsg(oldMsg, newMsg) {
     })
   }).map(item => item.id)
 
-
+  newMsg.tableNameList = oldMsg.tableNameList
 
   return newMsg;
 }

+ 20 - 1
ruoyi-ui/src/views/system/bpmnPro/components/bo-utils/myFieldUtil.js

@@ -254,7 +254,7 @@ export function getUnusualTaskTableData(moddleList = []) {
 function updateTaskProperty(element, listener, props) {
   const modeling = getModeler.getModeling();
   const prefix = getProcessEngine();
-  const { scriptKey, scriptTriggerType, scriptName, industryType, formType, compName, formId, formName } = props;
+  const { scriptKey, scriptTriggerType, scriptName, industryType, formType, compName, formId, formName, tableName } = props;
 
   const updateProperty = (key, value) =>
     modeling.updateModdleProperties(element, listener, { [`${key}`]: value });
@@ -266,6 +266,7 @@ function updateTaskProperty(element, listener, props) {
   formType && updateProperty('formType', formType)
   compName && updateProperty('compName', compName)
   formId && updateProperty('formId', formId)
+  tableName && updateProperty('tableName', tableName)
 }
 // 修改任务
 export function updateUnusualTask(element, props, listener) {
@@ -352,6 +353,24 @@ export function getNormalScriptKey(element) {
 
   return businessObject.get(`${prefix}:NormalScriptKey`);
 }
+export function setNormalTableName(element, value) {
+  const prefix = getProcessEngine();
+  const modeling = getModeler.getModeling();
+  const businessObject = getBusinessObject(element);
+  modeling.updateModdleProperties(element, businessObject, {
+    [`${prefix}:tableName`]: value
+  });
+}
+
+
+export function getNormalTableName(element) {
+  const prefix = getProcessEngine();
+  const businessObject = getBusinessObject(element);
+
+  return businessObject.get(`${prefix}:tableName`);
+}
+
+
 export function setNormalScriptTriggerType(element, value) {
   const prefix = getProcessEngine();
   const modeling = getModeler.getModeling();