From c7414c3cc93649479119d51b230c4b8e36884ca7 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 23 七月 2021 18:18:55 +0800
Subject: [PATCH] 2021-07-23

---
 src/utils/utils-datamanage.js |  129 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js
index d878668..2584cd9 100644
--- a/src/utils/utils-datamanage.js
+++ b/src/utils/utils-datamanage.js
@@ -1,3 +1,4 @@
+import md5 from 'md5'
 import moment from 'moment'
 import options from '@/store/options.js'
 import Utils from './utils.js'
@@ -575,4 +576,132 @@
 
     return [...lineMap.values()]
   }
+}
+
+/**
+ * @description 鐢熸垚鍗曚釜缁勪欢sPC_Get_structured_data璇锋眰鍙傛暟
+ */
+export function getStructDefaultParam (component, searchlist) {
+  const { columns, setting, dataName, format } = component
+
+  let arr_field = columns.map(col => col.field)
+  let _dataresource = setting.dataresource
+  let _customScript = setting.customScript
+  
+  if (setting.queryType === 'statistics' || _customScript) {
+    let allSearch = Utils.getAllSearchOptions(searchlist)
+    let regoptions = allSearch.map(item => {
+      return {
+        reg: new RegExp('@' + item.key + '@', 'ig'),
+        value: `'${item.value}'`
+      }
+    })
+
+    regoptions.forEach(item => {
+      if (_dataresource && setting.queryType === 'statistics') {
+        _dataresource = _dataresource.replace(item.reg, item.value)
+      }
+      _customScript = _customScript.replace(item.reg, item.value)
+    })
+  }
+
+  _dataresource = _dataresource.replace(/@select\$|\$select@/ig, '')
+  _customScript = _customScript.replace(/@select\$|\$select@/ig, '')
+  _dataresource = _dataresource.replace(/\$sum@/ig, '/*')
+  _dataresource = _dataresource.replace(/@sum\$/ig, '*/')
+  _customScript = _customScript.replace(/\$sum@/ig, '/*')
+  _customScript = _customScript.replace(/@sum\$/ig, '*/')
+
+  let _search = ''
+  if (setting.queryType !== 'statistics' && _dataresource) {
+    _search = Utils.joinMainSearchkey(searchlist)
+    _search = _search ? 'where ' + _search : ''
+  }
+
+  if (setting.order && _dataresource) {
+    _dataresource = `select top 1000 ${arr_field.join(',')} from (select ${arr_field.join(',')} ,ROW_NUMBER() over(order by ${setting.order}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows `
+  } else if (_dataresource) {
+    _dataresource = `select top 1000 ${arr_field.join(',')} from ${_dataresource} ${_search} `
+  }
+
+  // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
+  if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
+    _customScript &&  console.info(`${setting.$name ? `/*缁勪欢-${setting.$name} 鑷畾涔夎剼鏈�*/\n` : ''}${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
+    _dataresource &&  console.info(`${setting.$name ? `/*缁勪欢-${setting.$name} 鏁版嵁婧�*/\n` : ''}` + _dataresource)
+  }
+
+  return {
+    name: dataName,
+    columns: columns,
+    par_tablename: '',
+    type: format === 'array' ? format : '',
+    primaryKey: setting.primaryKey || '',
+    foreign_key: '',
+    sql: _dataresource,
+    script: _customScript
+  }
+}
+
+/**
+ * @description 鐢熸垚sPC_Get_structured_data璇锋眰鍙傛暟
+ * 1銆佹妸澶ф帴鍙PC_Get_structured_data鐨刲text鎷嗘垚涓変唤锛岀涓�娈碉細@LText1锛岀浜屾@LText锛岀涓夋@LText2
+ */
+export function getStructuredParams (params, config, BID = '') {
+  let LText_field = []
+  let diffUser = false
+  let userName = sessionStorage.getItem('User_Name') || ''
+  let fullName = sessionStorage.getItem('Full_Name') || ''
+  let city = sessionStorage.getItem('city') || ''
+
+  if (sessionStorage.getItem('isEditState') === 'true') {
+    userName = sessionStorage.getItem('CloudUserName') || ''
+    fullName = sessionStorage.getItem('CloudFullName') || ''
+  }
+  
+  let _LText = params.map((item, index) => {
+    let _script = item.script
+
+    if (index === 0) {
+      _script = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@login_city nvarchar(50)
+        select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @login_city='${city}'
+        ${_script}
+      `
+    }
+    if (!diffUser && (/@userid@/ig.test(item.sql) || /@userid@/ig.test(_script))) {
+      diffUser = true
+    }
+
+    item.columns.forEach(cell => {
+      LText_field.push(`Select '${item.name}' as tablename,'${cell.field}' as fieldname,'${cell.datatype}' as field_type`)
+    })
+    return `Select '${item.name}' as tablename,'${window.btoa(window.encodeURIComponent(item.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 = {
+    func: 'sPC_Get_structured_data',
+    LText: _LText.join(' union all '),
+    LText_field: LText_field.join(' union all '),
+    BID: BID
+  }
+
+  let { LText, LText1, LText2 } = Utils.sPCInUpDeFormatOptions(param.LText)
+
+  param.LText1 = LText1
+  param.LText = LText
+  param.LText2 = LText2
+  param.LText_field = Utils.formatOptions(param.LText_field)
+
+  if (config.cacheUseful === 'true') {
+    param.time_type = config.timeUnit
+    param.time_limit = config.cacheTime
+    if (diffUser) {
+      param.userid = sessionStorage.getItem('UserID')
+    }
+    param.data_md5 = md5(JSON.stringify(param))
+  }
+
+  param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+  param.secretkey = Utils.encrypt(param.LText, param.timestamp)
+
+  return param
 }
\ No newline at end of file

--
Gitblit v1.8.0