From c10fc10d5fd307a7b334bcde6af5c1175aaa0410 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 28 八月 2024 17:47:28 +0800
Subject: [PATCH] 2024-08-28

---
 src/utils/utils-datamanage.js |  302 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 235 insertions(+), 67 deletions(-)

diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js
index 4e96051..aff2f1e 100644
--- a/src/utils/utils-datamanage.js
+++ b/src/utils/utils-datamanage.js
@@ -13,7 +13,12 @@
     let param = null
 
     if (setting.interType === 'system') {
-      param = this.getDefaultQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year)
+      if (window.backend && window.GLOB.CacheData.has('sql_' + setting.uuid) && !window.GLOB.mkHS) {
+        param = this.getDefaultQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year)
+        this.getBackendQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year)
+      } else {
+        param = this.getDefaultQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year)
+      }
     } else {
       param = this.getCustomQueryParam(setting, search, orderBy, pageIndex, pageSize, id, year)
     }
@@ -289,72 +294,6 @@
       param.menuname = setting.$name
     }
 
-    // if (window.backend && window.GLOB.CacheData.has('sql_' + setting.uuid)) {
-    //   let item = window.GLOB.CacheData.get('sql_' + setting.uuid)
-      
-    //   let values = {
-    //     userid: sessionStorage.getItem('UserID') || '',
-    //     time_id: Utils.getguid(),
-    //     username: userName,
-    //     fullname: fullName,
-    //     roleid: RoleID,
-    //     mk_departmentcode: departmentcode,
-    //     mk_organization: organization,
-    //     mk_user_type: mk_user_type,
-    //     mk_nation: nation,
-    //     mk_province: province,
-    //     mk_city: city,
-    //     mk_district: district,
-    //     mk_address: address,
-    //     orderby: orderBy,
-    //     pagesize: setting.laypage ? pageSize : '9999',
-    //     pageindex: pageIndex,
-    //     id: id || '',
-    //     bid: BID || '',
-    //     loginuid: sessionStorage.getItem('LoginUID') || '',
-    //     sessionuid: localStorage.getItem('SessionUid') || '',
-    //     appkey: window.GLOB.appkey || '',
-    //     lang: sessionStorage.getItem('lang'),
-    //     typename: 'admin',
-    //     datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
-    //     datam_begin: sessionStorage.getItem('dataM') === 'true' ? '/*' : '',
-    //     datam_end: sessionStorage.getItem('dataM') === 'true' ? '*/' : '',
-    //   }
-
-    //   if (setting.hasExtend) {
-    //     values.mk_time = setting.extendTime
-    //   }
-    //   if (setting.$re_year) {
-    //     values.mk_year = year
-    //   }
-    //   if (window.GLOB.externalDatabase !== null) {
-    //     values.db = window.GLOB.externalDatabase
-    //   }
-    //   if (item.works_flow_code) {
-    //     values.works_flow_code = item.works_flow_code
-    //   }
-    //   item.urlkeys.forEach(key => {
-    //     values[key] = item.urlparam[key]
-    //   })
-
-    //   let Ltext = item.LText
-    //   let DateCount = item.DateCount
-    //   let customScript = item.customScript
-  
-    //   item.reps.forEach(n => {
-    //     let key = n.toLowerCase()
-    //     if (values.hasOwnProperty(key)) {
-    //       Ltext = Ltext.replace(new RegExp('@' + key + '@', 'ig'), values[key])
-    //       DateCount = DateCount.replace(new RegExp('@' + key + '@', 'ig'), values[key])
-    //       customScript = customScript.replace(new RegExp('@' + key + '@', 'ig'), values[key])
-    //     }
-    //   })
-
-    //   if (search.length) {
-
-    //   }
-    // }
-
     param.custom_script = Utils.formatOptions(_customScript, param.exec_type)
     param.LText = Utils.formatOptions(LText, param.exec_type)
     param.DateCount = Utils.formatOptions(DateCount, param.exec_type)
@@ -397,6 +336,235 @@
   }
 
   /**
+   * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鐨勫弬鏁�
+   */
+  static getBackendQueryParam (setting, search, orderBy, pageIndex, pageSize, id, BID, year) {
+    let item = window.GLOB.CacheData.get('sql_' + setting.uuid)
+
+    let param = {}
+
+    let searchKeys = null
+    if (setting.dataresource) {
+      searchKeys = []
+
+      if (search.length) {
+        searchKeys = Utils.getSearchkeys(search)
+      }
+
+      if (id) {
+        if (/^excel:/.test(id)) {
+          id = id.replace(/^excel:/, '')
+          searchKeys.push({
+            key: setting.primaryKey || 'ID',
+            match: 'in',
+            type: 'text_in',
+            value: id
+          })
+        } else {
+          searchKeys.push({
+            key: setting.primaryKey || 'ID',
+            match: '=',
+            type: 'text',
+            value: id
+          })
+        }
+      }
+    }
+
+    let values = {
+      userid: sessionStorage.getItem('UserID') || '',
+      time_id: Utils.getguid(),
+      username: sessionStorage.getItem('User_Name') || '',
+      fullname: sessionStorage.getItem('Full_Name') || '',
+      roleid: sessionStorage.getItem('role_id') || '',
+      mk_departmentcode: sessionStorage.getItem('departmentcode') || '',
+      mk_organization: sessionStorage.getItem('organization') || '',
+      mk_user_type: sessionStorage.getItem('mk_user_type') || '',
+      mk_nation: sessionStorage.getItem('nation') || '',
+      mk_province: sessionStorage.getItem('province') || '',
+      mk_city: sessionStorage.getItem('city') || '',
+      mk_district: sessionStorage.getItem('district') || '',
+      mk_address: sessionStorage.getItem('address') || '',
+      orderby: orderBy,
+      pagesize: setting.laypage ? pageSize : '9999',
+      pageindex: pageIndex,
+      id: id || '',
+      bid: BID || '',
+      loginuid: sessionStorage.getItem('LoginUID') || '',
+      sessionuid: localStorage.getItem('SessionUid') || '',
+      appkey: window.GLOB.appkey || '',
+      lang: sessionStorage.getItem('lang'),
+      typename: 'admin',
+      datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
+      datam_begin: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
+      datam_end: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
+      // datam_begin: sessionStorage.getItem('dataM') === 'true' ? '/*' : '',
+      // datam_end: sessionStorage.getItem('dataM') === 'true' ? '*/' : '',
+      mk_obj_name: 'data'
+    }
+
+    if (setting.hasExtend) {
+      values.mk_time = setting.extendTime
+    }
+    if (setting.$re_year) {
+      values.mk_year = year
+    }
+    if (window.GLOB.externalDatabase !== null) {
+      values.db = window.GLOB.externalDatabase
+    }
+    if (item.works_flow_code) {
+      values.works_flow_code = item.works_flow_code
+    }
+
+    item.urlkeys.forEach(key => {
+      values[key] = item.urlparam[key]
+    })
+
+    let allSearch = Utils.getAllSearchOptions(search)
+
+    allSearch.forEach(cell => {
+      values[cell.key.toLowerCase()] = cell.value
+    })
+
+    let list = []
+
+    if (searchKeys) {
+      list.push({
+        key: 'mk_search',
+        value: searchKeys
+      })
+    }
+
+    let sql = item.sql
+
+    item.reps.forEach(n => {
+      let key = n.toLowerCase()
+      if (values.hasOwnProperty(key)) {
+        list.push({
+          key: n,
+          value: values[key]
+        })
+      }
+    })
+
+    // let list = [
+    //   {
+    //     key: "mk_search",
+    //     value: [
+    //       { key: "nvarchar1,nvarchar3", match: "like", type: "text_or", value: "www" },
+    //       { key: "int2", match: ">=", type: "number", value: "0" },
+    //       { key: "int2", match: "<=", type: "number", value: "50" }
+    //     ]
+    //   },
+    //   { key: "mk_obj_name", value: "data" },
+    //   { key: "pageSize", value: 10 },
+    //   { key: "orderBy", value: "ID desc" },
+    //   { key: "pageIndex", value: 1 },
+    //   {
+    //     key: 'mk_excel_data',
+    //     value: [[`'1'`, `'2'`, `'3'`, `'4'`, `'5'`], [`'6'`, `'7'`, `'8'`, `'9'`, `'10'`]]
+    //   },
+    //   {
+    //     key: 'mk_outer_params',
+    //     value: [
+    //       {
+    //         tb: '#tb1',
+    //         keys: ['[nvarchar1]', '[nvarchar2]', '[nvarchar3]', '[mk_level]','[mk_id]','[mk_bid]'],
+    //         values: [[`'1'`, `'2'`, `'3'`, `'4'`, `'5'`, `'6'`], [`'7'`, `'8'`, `'9'`, `'10'`, `'11'`, `'12'`]]
+    //       },
+    //       {
+    //         tb: '@tb2',
+    //         keys: ['[field1]', '[field2]', '[field3]', '[mk_level]','[mk_id]','[mk_bid]'],
+    //         values: [[`'1'`, `'2'`, `'3'`, `'4'`, `'5'`, `'6'`], [`'7'`, `'8'`, `'9'`, `'10'`, `'11'`, `'12'`]]
+    //       }
+    //     ]
+    //   },
+    // ]
+
+    list.forEach(cell => {
+      if (cell.key === 'mk_outer_params') {
+        let mk_outer_params = []
+        cell.value.forEach(n => {
+          mk_outer_params.push(` Insert into ${n.tb} (${n.keys.join(',')}) `)
+          let vals = []
+          n.values.forEach(m => {
+            vals.push(` Select ${m.join(',')} `)
+          })
+          mk_outer_params.push(vals.join(' Union all '))
+        })
+        mk_outer_params = mk_outer_params.join('')
+        sql = sql.replace(/@mk_outer_params@/ig, mk_outer_params)
+      } else if (cell.key === 'mk_excel_data') {
+        let mk_excel_data = []
+        cell.value.forEach(n => {
+          mk_excel_data.push(`Select ${n.join(',')}`)
+        })
+        mk_excel_data = mk_excel_data.join(' Union all ')
+        sql = sql.replace(/@mk_excel_data@/ig, mk_excel_data)
+      } else if (cell.key === 'datam_begin' || cell.key === 'mk_check_begin') {
+        if (cell.value === 'Y') {
+          sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), '/*')
+        } else {
+          sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), '')
+        }
+      } else if (cell.key === 'datam_end' || cell.key === 'mk_check_end') {
+        if (cell.value === 'Y') {
+          sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), '*/')
+        } else {
+          sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), '')
+        }
+      } else if (cell.key === 'mk_search') {
+        let mk_search = []
+
+        cell.value.forEach(n => {
+          let str = n.match === 'like' || n.match === 'not like' ? '%' : ''
+          if (n.type === 'text_or') {
+            let vals = n.key.split(',').map(key => {
+              return `${key} ${n.match} '${str}${n.value}${str}'`
+            })
+
+            mk_search.push(`(${vals.join(' OR ')})`)
+          } else if (n.type === 'text_multi') {
+            mk_search.push(`'${n.value}' ${n.match} '%'+${n.key}+'%'`)
+          } else if (n.type === 'number') {
+            mk_search.push(`${n.key} ${n.match} ${n.value}`)
+          } else if (n.type === 'text_in') {
+            mk_search.push(`${n.key} in (select ID from dbo.SplitComma('${n.value}'))`)
+          } else {
+            mk_search.push(`${n.key} ${n.match} '${str}${n.value}${str}'`)
+          }
+        })
+
+        if (mk_search.length === 0) {
+          mk_search = ''
+        } else {
+          mk_search = 'where ' + mk_search.join(' AND ')
+        }
+
+        sql = sql.replace(/@mk_search@/ig, mk_search)
+      } else {
+        sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), cell.value)
+      }
+    })
+
+    param.list = [
+      {
+        id: item.v_id,
+        regExps: list,
+        menuname: setting.$name || '',
+        s_debug_type: window.GLOB.probation ? 'Y' : '',
+        // md5_id: window.GLOB.probation ? md5(JSON.stringify(list)) : '',
+      }
+    ]
+
+    if (setting.database === 'sso' && window.GLOB.mainSystemApi) {
+      param.rduri = window.GLOB.mainSystemApi
+    }
+
+    return param
+  }
+
+  /**
    * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鍚堣鍊肩殑鍙傛暟
    */
   static getStatQueryDataParams (setting, statFields, search, orderBy, BID) {

--
Gitblit v1.8.0