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 |  252 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 243 insertions(+), 9 deletions(-)

diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js
index 26f08c9..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)
     }
@@ -142,9 +147,9 @@
       { reg: /@orderBy@/ig, value: orderBy },
       { reg: /@pageSize@/ig, value: setting.laypage ? pageSize : '9999' },
       { reg: /@pageIndex@/ig, value: pageIndex},
-      { reg: /@select\$|\$select@/ig, value: ''},
-      { reg: /\$sum@/ig, value: '/*'},
-      { reg: /@sum\$/ig, value: '*/'},
+      // { reg: /@select\$|\$select@/ig, value: ''},
+      // { reg: /\$sum@/ig, value: '/*'},
+      // { reg: /@sum\$/ig, value: '*/'},
       { reg: /@ID@/ig, value: `'${id || ''}'`},
       { reg: /@BID@/ig, value: `'${BID || ''}'`},
       { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`},
@@ -156,10 +161,10 @@
     )
 
     if (setting.hasExtend) {
-      regoptions.push({ reg: /@mk_time@/ig, value: setting.extendTime })
+      regoptions.push({ reg: /@mk_time@/ig, value: `'${setting.extendTime}'` })
     }
     if (setting.$re_year) {
-      regoptions.push({ reg: /@mk_year@/ig, value: year })
+      regoptions.push({ reg: /@mk_year@/ig, value: `'${year}'` })
     }
 
     regoptions.forEach(item => {
@@ -331,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) {
@@ -375,9 +609,9 @@
       { reg: /@orderBy@/ig, value: orderBy },
       { reg: /@pageSize@/ig, value: 999999 },
       { reg: /@pageIndex@/ig, value: 1},
-      { reg: /\$select@/ig, value: '/*'},
-      { reg: /@select\$/ig, value: '*/'},
-      { reg: /@sum\$|\$sum@/ig, value: ''},
+      // { reg: /\$select@/ig, value: '/*'},
+      // { reg: /@select\$/ig, value: '*/'},
+      // { reg: /@sum\$|\$sum@/ig, value: ''},
       { reg: /@ID@/ig, value: `''`},
       { reg: /@BID@/ig, value: `'${BID || ''}'`},
       { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`},

--
Gitblit v1.8.0