From 55a89127d14a20a96720d9050295743f2090f046 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 09 九月 2024 22:29:37 +0800
Subject: [PATCH] 2024-09-09

---
 src/utils/utils-datamanage.js |  421 ++++++++++++++++++++++------------------------------
 1 files changed, 178 insertions(+), 243 deletions(-)

diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js
index aff2f1e..84c388f 100644
--- a/src/utils/utils-datamanage.js
+++ b/src/utils/utils-datamanage.js
@@ -5,6 +5,133 @@
 import MKEmitter from '@/utils/events.js'
 import Utils from './utils.js'
 
+const getBackendQueryParam = (setting, search, orderBy, pageIndex, pageSize, id, BID, year, dataName) => {
+  let item = window.GLOB.CacheData.get('sql_' + setting.uuid)
+
+  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: '',
+          type: 'text_in',
+          value: id
+        })
+      } else {
+        searchKeys.push({
+          key: setting.primaryKey || 'ID',
+          match: '03',
+          type: 'text',
+          value: id
+        })
+      }
+    }
+  }
+
+  let values = {
+    time_id: Utils.getguid(),
+    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 || '',
+    typename: 'admin',
+    datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
+    datam_begin: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
+    datam_end: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '',
+    mk_obj_name: dataName || '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 && item.urlkeys.forEach(key => {
+    values[key] = item.urlparam[key]
+  })
+
+  let allSearch = Utils.getAllSearchOptions(search)
+
+  allSearch.forEach(cell => {
+    values[cell.key.toLowerCase()] = cell.value
+  })
+
+  let exps = []
+
+  if (searchKeys) {
+    exps.push({
+      key: 'mk_search',
+      value: searchKeys
+    })
+  }
+
+  item.reps.forEach(n => {
+    let key = n.toLowerCase()
+    if (values.hasOwnProperty(key)) {
+      exps.push({
+        key: n,
+        value: values[key]
+      })
+    }
+  })
+
+  let md5_id = ''
+  if (window.GLOB.probation) {
+    md5_id = md5(item.id + JSON.stringify(exps) + Math.floor(new Date().getTime() / 600000))
+    md5_id = moment().format('YYYYMMDDHHmmss') + md5_id.slice(-18)
+  }
+
+  let cell = {
+    id: item.id,
+    exps: exps,
+    menuname: setting.$name || '',
+    md5_id: md5_id
+  }
+
+  if (dataName) {
+    cell.dataName = dataName
+    cell.luser = item.luser
+    return cell
+  }
+
+  let param = {
+    $backend: true,
+    data: [cell]
+  }
+
+  if (setting.database === 'sso' && window.GLOB.mainSystemApi) {
+    param.rduri = window.GLOB.mainSystemApi
+  }
+
+  return param
+}
+
 export default class DataUtils {
   /**
    * @description 鏁版嵁婧愮粺涓�鏌ヨ
@@ -13,22 +140,23 @@
     let param = null
 
     if (setting.interType === 'system') {
-      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)
+      if (window.backend && window.GLOB.CacheData.has('sql_' + setting.uuid)) {
+        param = getBackendQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year)
       } else {
         param = this.getDefaultQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year)
+        param.BID = BID || ''
+        param.dataM = sessionStorage.getItem('dataM') === 'true' ? 'Y' : ''
       }
     } else {
       param = this.getCustomQueryParam(setting, search, orderBy, pageIndex, pageSize, id, year)
-    }
 
-    if (BID) {
-      param.BID = BID
-    }
-    // 鏁版嵁绠$悊鏉冮檺
-    if (sessionStorage.getItem('dataM') === 'true') {
-      param.dataM = 'Y'
+      if (BID) {
+        param.BID = BID
+      }
+      // 鏁版嵁绠$悊鏉冮檺
+      if (sessionStorage.getItem('dataM') === 'true') {
+        param.dataM = 'Y'
+      }
     }
 
     return param
@@ -336,235 +464,6 @@
   }
 
   /**
-   * @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) {
@@ -731,8 +630,12 @@
 /**
  * @description 鐢熸垚鍗曚釜缁勪欢sPC_Get_structured_data璇锋眰鍙傛暟
  */
-export function getStructDefaultParam (component, searchlist, first) {
+export function getStructDefaultParam (component, searchlist, first, BID) {
   const { columns, setting, dataName, format, uuid } = component
+
+  if (window.backend && window.GLOB.CacheData.has('sql_' + uuid)) {
+    return getBackendQueryParam(setting, searchlist, setting.order, 1, 1000, '', BID, '', dataName)
+  }
 
   let _dataresource = setting.dataresource
   let _customScript = setting.customScript
@@ -789,7 +692,7 @@
 
   return {
     uuid: uuid,
-    name: dataName,
+    dataName: dataName,
     $name: setting.$name,
     columns: columns,
     par_tablename: '',
@@ -806,6 +709,38 @@
  * @description 鐢熸垚sPC_Get_structured_data璇锋眰鍙傛暟
  */
 export function getStructuredParams (params, config, BID) {
+  if (window.backend && params[0].exps) {
+    let param = {
+      $backend: true,
+      data: params.map(item => {
+        let cell = {...item}
+
+        delete cell.dataName
+        delete cell.luser
+
+        return cell
+      })
+    }
+
+    if (config.cacheUseful === 'true') {
+      param.time_limit = config.cacheTime
+
+      if (config.timeUnit === 'day') {
+        param.time_limit = param.time_limit * 1440
+      } else if (config.timeUnit === 'hour') {
+        param.time_limit = param.time_limit * 60
+      }
+
+      if (params.findIndex(item => item.luser) > -1) {
+        param.data_md5 = md5(window.GLOB.appkey + params[0].id + sessionStorage.getItem('UserID'))
+      } else {
+        param.data_md5 = md5(window.GLOB.appkey + params[0].id)
+      }
+    }
+
+    return param
+  }
+
   let LText_field = []
   let diffUser = false
 
@@ -845,9 +780,9 @@
     }
 
     item.columns.forEach(cell => {
-      LText_field.push(`Select '${item.name}' as tablename,'${cell.field}' as fieldname,'${cell.datatype}' as field_type`)
+      LText_field.push(`Select '${item.dataName}' as tablename,'${cell.field}' as fieldname,'${cell.datatype}' as field_type`)
     })
-    return `Select '${item.name}' as tablename,'${window.btoa(window.encodeURIComponent(_sql))}' as LText,'${window.btoa(window.encodeURIComponent(_script))}' as Lcustomize,'${item.type}' as table_type,'${item.primaryKey}' as primary_key,'${item.par_tablename}' as par_tablename,'${item.foreign_key}' as foreign_key,'${index}' as Sort`
+    return `Select '${item.dataName}' as tablename,'${window.btoa(window.encodeURIComponent(_sql))}' as LText,'${window.btoa(window.encodeURIComponent(_script))}' as Lcustomize,'${item.type}' as table_type,'${item.primaryKey}' as primary_key,'${item.par_tablename}' as par_tablename,'${item.foreign_key}' as foreign_key,'${index}' as Sort`
   })
 
   let param = {

--
Gitblit v1.8.0