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-custom.js | 250 +++++++++++++++++++++++-------------------------- 1 files changed, 118 insertions(+), 132 deletions(-) diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js index 6556d9f..2d86e2d 100644 --- a/src/utils/utils-custom.js +++ b/src/utils/utils-custom.js @@ -1985,10 +1985,18 @@ let _quot = sql.match(/'{1}/g) let _lparen = sql.match(/\({1}/g) let _rparen = sql.match(/\){1}/g) + let _ch_b = sql.match(/\$check@/ig) + let _ch_d = sql.match(/@check\$/ig) + let _m_b = sql.match(/\$@/ig) + let _m_d = sql.match(/@\$/ig) _quot = _quot ? _quot.length : 0 _lparen = _lparen ? _lparen.length : 0 _rparen = _rparen ? _rparen.length : 0 + _ch_b = _ch_b ? _ch_b.length : 0 + _ch_d = _ch_d ? _ch_d.length : 0 + _m_b = _m_b ? _m_b.length : 0 + _m_d = _m_d ? _m_d.length : 0 if (_quot % 2 !== 0) { notification.warning({ @@ -2001,6 +2009,20 @@ notification.warning({ top: 92, message: 'sql涓�()蹇呴』鎴愬鍑虹幇', + duration: 5 + }) + return false + } else if (_ch_b !== _ch_d) { + notification.warning({ + top: 92, + message: 'sql涓� $check@ 涓� @check$ 蹇呴』鎴愬鍑虹幇', + duration: 5 + }) + return false + } else if (_m_b !== _m_d) { + notification.warning({ + top: 92, + message: 'sql涓� $@ 涓� @$ 蹇呴』鎴愬鍑虹幇', duration: 5 }) return false @@ -2869,6 +2891,8 @@ let filterComponent = (components, mainSearch) => { components.forEach(item => { + item.$menuname = (config.MenuName || '') + '-' + (item.name || '') + if (item.type === 'tabs') { item.subtabs.forEach(tab => { let _mainSearch = mainSearch || [] @@ -3135,7 +3159,6 @@ let getSearches = (searches) => { let sFields = [] - let query = false searches.forEach(item => { if (!item.field) return @@ -3177,13 +3200,9 @@ } else { sFields.push(item.field) } - - if (query) return - - query = item.query !== 'false' }) - return { sFields, query } + return sFields } let getSysDefaultSql = (btn, component) => { @@ -4347,7 +4366,7 @@ searches = [...searches, ...mainSearch] } item.$searches = fromJS(searches).toJS() - let { sFields, query } = getSearches(searches) + let sFields = getSearches(searches) let _columns = [] if (item.subtype === 'dualdatacard') { @@ -4374,8 +4393,18 @@ } }) + if (_customScript || _tailScript) { + _tailScript += `${_tailScript} + aaa: + if @ErrorCode!='' + insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@ + ` + } + + let _search = '' if (item.setting.execute !== 'false') { _dataresource = item.setting.dataresource || '' + _search = '@mk_search@' } if (/\s/.test(_dataresource)) { @@ -4384,11 +4413,6 @@ item.setting.dataresource = _dataresource item.setting.customScript = _customScript - - let _search = '@search@' - if (item.setting.queryType === 'statistics' || !query) { - _search = '' - } let testSql = _dataresource + _customScript + _tailScript @@ -4396,9 +4420,6 @@ let secSql = [`@ErrorCode='',@retmsg =''`] let reps = [] - if (_customScript || _tailScript) { - reps.push('UserID', 'time_id') - } let syses = ['UserName', 'FullName', 'RoleID', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address'] syses.forEach(s => { @@ -4446,134 +4467,83 @@ let LText = '' let DateCount = '' if (_dataresource) { + /*system_query*/ if (/@pageSize@|@orderBy@|@mk_total/i.test(testSql)) { - LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` + LText = `select ${arr_field} from ${_dataresource} ${_search} ` } else if (item.setting.laypage === 'true' && item.setting.order) { - LText = `/*system_query*/select top @pageSize@ ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${_dataresource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows ` + LText = `select top @pageSize@ ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${_dataresource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows ` reps.push('pageSize', 'orderBy', 'pageIndex') if (item.subtype === 'dualdatacard') { - DateCount = `/*system_query*/select count(1) as total from (select distinct ${item.setting.primaryKey || 'ID'} from ${_dataresource} ${_search})a` + DateCount = `select count(1) as total from (select distinct ${item.setting.primaryKey || 'ID'} from ${_dataresource} ${_search})a` } else { - DateCount = `/*system_query*/select count(1) as total from ${_dataresource} ${_search}` + DateCount = `select count(1) as total from ${_dataresource} ${_search}` } } else if (item.setting.$top) { if (item.setting.order) { - LText = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} order by @orderBy@ ` + LText = `select top 1 ${arr_field} from ${_dataresource} ${_search} order by @orderBy@ ` reps.push('orderBy') } else { - LText = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} ` + LText = `select top 1 ${arr_field} from ${_dataresource} ${_search} ` } } else if (item.setting.order) { - LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} order by @orderBy@ ` + LText = `select ${arr_field} from ${_dataresource} ${_search} order by @orderBy@ ` reps.push('orderBy') } else { - LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` + LText = `select ${arr_field} from ${_dataresource} ${_search} ` } - } - - if (_customScript) { - _customScript = `${decSql} - ${_customScript} - ` - if (DateCount) { - DateCount = `${DateCount} - ${_tailScript} - aaa: - if @ErrorCode!='' - insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode,@retmsg,@UserID@ - ` - } else if (LText) { - LText = `${LText} - ${_tailScript} - aaa: - if @ErrorCode!='' - insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode,@retmsg,@UserID@ - ` - } else { - _customScript = `${_customScript} - ${_tailScript} - aaa: - if @ErrorCode!='' - insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@ - ` - } - } else if (_tailScript && DateCount) { - LText = `${decSql} - ${LText} - ` - DateCount = `${DateCount} - ${_tailScript} - aaa: - if @ErrorCode!='' - insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@ - ` - } else if (_tailScript) { - LText = `${decSql} - ${LText} - ${_tailScript} - aaa: - if @ErrorCode!='' - insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@ - ` - } else { - LText = `${decSql} - ${LText} - ` } reps = Array.from(new Set(reps)) - // LText = LText.replace(/\n\s{6,8}/g, '\n') - // DateCount = DateCount.replace(/\n\s{6,8}/g, '\n') - // _customScript = _customScript.replace(/\n\s{6,8}/g, '\n') - // LText = LText.replace(/\n\s+\/\*/g, `\n/*`) - // DateCount = DateCount.replace(/\n\s+\/\*/g, `\n/*`) - // _customScript = _customScript.replace(/\n\s+\/\*/g, `\n/*`) + let sub_name = '' + let tabid = '' + let parid = '' + let sub_field = '' + + if (item.subtype === 'dualdatacard') { + arr_field = item.columns.map(col => col.field).join(',') + sub_name = item.setting.subdata + tabid = item.setting.primaryKey || '' + parid = item.setting.subBID || '' + sub_field = item.subColumns.map(col => col.field).join(',') + } + + let sql = `SELECT obj_name='@mk_obj_name@',prm_field='',str_field='', + arr_field='${arr_field}',tabid='${tabid}',parid='${parid}',sub_name='${sub_name}',sub_field='${sub_field}' + ` + + if (DateCount) { + sql += `UNION ALL + SELECT obj_name='DateCount',prm_field='total',str_field='', + arr_field='',tabid='',parid='',sub_name='',sub_field='' + ` + } + + sql += ` + ${decSql} + ${_customScript} + ${LText} + ${DateCount} + ${_tailScript} + ` reps.forEach(n => { if (['orderBy', 'pageSize', 'pageIndex'].includes(n)) return - LText = LText.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) - DateCount = DateCount.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) - _customScript = _customScript.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) + sql = sql.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) }) - if (/\$@/ig.test(testSql)) { - LText = LText.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') - DateCount = DateCount.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') - _customScript = _customScript.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') + if (/\$@/ig.test(sql)) { + sql = sql.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') reps.push('datam_begin', 'datam_end') } - if (/@db@/ig.test(testSql)) { + if (/@db@/ig.test(sql)) { reps.push('db') } + reps.push('mk_obj_name') - // let sql = '' - // let sub_name = '' - // let tabid = '' - // let parid = '' - // let sub_field = '' + sql = sql.replace(/\n\x20{6,8}/g, '\n').replace(/\n{3,}/g, '\n\n').replace(/^\s+|\s+$/g, '') - // if (item.subtype === 'dualdatacard') { - // arr_field = item.columns.map(col => col.field).join(',') - // sub_name = item.setting.subdata - // tabid = item.setting.primaryKey || '' - // parid = item.setting.subBID || '' - // sub_field = item.subColumns.map(col => col.field).join(',') - // } - - // sql += ` - // SELECT obj_name='data',prm_field='',str_field='', - // arr_field='${arr_field}',tabid='${tabid}',parid='${parid}',sub_name='${sub_name}',sub_field='${sub_field}' - // ` - - // if (DateCount) { - // sql += `UNION ALL - // SELECT obj_name='DateCount',prm_field='total',str_field='', - // arr_field='',tabid='',parid='',sub_name='',sub_field='' - // ` - // } - - return {LText, DateCount, customScript: _customScript, reps} + return {LText: sql, reps} } let getExcelInSql = (item) => { @@ -5321,14 +5291,14 @@ item.dataSource = '(' + item.dataSource + ') tb' } - let sql = '' + let LText = '' let DateCount = '' let _search = '' let reps = [] let sFields = [] if (item.searchKey) { - _search = '@search@' + _search = '@mk_search@' sFields = item.searchKey.split(',') } @@ -5341,22 +5311,12 @@ } }) - if (item.laypage === 'true') { - sql = `/*system_query*/select top @pageSize@ ${arrfield} from (select ${arrfield} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${item.dataSource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows ` - DateCount = `/*system_query*/select count(1) as total from ${item.dataSource} ${_search}` - - reps.push('pageSize', 'orderBy', 'pageIndex') - } else { - sql = `/*system_query*/select ${arrfield} from ${item.dataSource} ${_search} order by @orderBy@ ` - reps.push('orderBy') - } - let decSql = [] let secSql = [] let syses = ['mk_departmentcode', 'mk_organization', 'mk_user_type'] syses.forEach(s => { - if (new RegExp('@' + s + '[^0-9a-z_]', 'ig').test(sql)) { + if (new RegExp('@' + s + '[^0-9a-z_]', 'ig').test(item.dataSource)) { if (['mk_departmentcode', 'mk_organization'].includes(s)) { decSql.push(`@${s} nvarchar(512)`) } else { @@ -5371,27 +5331,53 @@ secSql = secSql.join(',') if (decSql) { - sql = `Declare ${decSql} select ${secSql} - ${sql} + decSql = `Declare ${decSql} select ${secSql}` + } + + if (item.laypage === 'true') { + /*system_query*/ + LText = `select top @pageSize@ ${arrfield} from (select ${arrfield} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${item.dataSource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows ` + DateCount = `select count(1) as total from ${item.dataSource} ${_search}` + + reps.push('pageSize', 'orderBy', 'pageIndex') + } else { + LText = `select ${arrfield} from ${item.dataSource} ${_search} order by @orderBy@ ` + reps.push('orderBy') + } + + let sql = `SELECT obj_name='data',prm_field='',str_field='', + arr_field='${arrfield}',tabid='',parid='',sub_name='',sub_field='' + ` + + if (DateCount) { + sql += `UNION ALL + SELECT obj_name='DateCount',prm_field='total',str_field='', + arr_field='',tabid='',parid='',sub_name='',sub_field='' ` } + + sql += ` + ${decSql} + ${LText} + ${DateCount} + ` reps.forEach(n => { if (['orderBy', 'pageSize', 'pageIndex'].includes(n)) return sql = sql.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) - DateCount = DateCount.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) }) if (/\$@/ig.test(sql)) { sql = sql.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') - DateCount = DateCount.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') reps.push('datam_begin', 'datam_end') } if (/@db@/ig.test(sql)) { reps.push('db') } - - return {LText: sql, DateCount, reps} + + sql = sql.replace(/\n\x20{6,8}/g, '\n').replace(/\n{3,}/g, '\n\n').replace(/^\s+|\s+$/g, '') + + return {LText: sql, reps} } let _mainSearch = [] -- Gitblit v1.8.0