| | |
| | | static getuuid () { |
| | | let uuid = [] |
| | | let timestamp = new Date().getTime() |
| | | let options = '0123456789abcdefghigklmnopqrstuv' |
| | | let _options = '0123456789abcdefghigklmnopqrstuv' |
| | | for (let i = 0; i < 19; i++) { |
| | | uuid.push(options.substr(Math.floor(Math.random() * 0x20), 1)) |
| | | uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1)) |
| | | } |
| | | uuid = timestamp + uuid.join('') |
| | | return uuid |
| | |
| | | } |
| | | |
| | | return value |
| | | } |
| | | |
| | | /** |
| | | * @description sPC_TableData_InUpDe sql加密 |
| | | * @return {String} value |
| | | */ |
| | | static sPCInUpDeFormatOptions (value) { |
| | | if (!value) return {LText: '', LText1: '', LText2: ''} |
| | | |
| | | let salt = 'minKe' // 盐值 |
| | | // 关键字转换规则 |
| | | let format = [ |
| | | { key: 'select', value: ' msltk ' }, |
| | | { key: 'from', value: ' mfrmk ' }, |
| | | { key: 'where', value: ' mwhrk ' }, |
| | | { key: 'order by', value: ' modbk ' }, |
| | | { key: 'asc', value: ' modack ' }, |
| | | { key: 'desc', value: ' moddesk ' }, |
| | | { key: 'top', value: ' mtpk ' }, |
| | | { key: 'like', value: ' mlkk ' }, |
| | | { key: 'not like', value: ' mnlkk ' }, |
| | | { key: 'between', value: ' mbtnk ' }, |
| | | { key: 'and', value: ' madk ' }, |
| | | { key: 'insert', value: ' mistk ' }, |
| | | { key: 'into', value: ' mitk ' }, |
| | | { key: 'update', value: ' muptk ' }, |
| | | { key: 'delete', value: ' mdelk ' }, |
| | | { key: 'begin', value: ' mbgink ' }, |
| | | { key: 'end', value: ' medk ' }, |
| | | { key: 'if', value: ' mefk ' }, |
| | | { key: 'while', value: ' mwilk ' }, |
| | | { key: 'create', value: ' mcrtk ' }, |
| | | { key: 'alter', value: ' matek ' }, |
| | | { key: 'len', value: ' mlnk ' }, |
| | | { key: 'left', value: ' mlftk ' }, |
| | | { key: 'right', value: ' mritk ' }, |
| | | { key: 'union', value: ' munok ' }, |
| | | { key: 'varchar', value: ' mvcrk ' }, |
| | | { key: 'getdate', value: ' mgtdtk ' }, |
| | | { key: 'TRY', value: ' mtryonek ' }, |
| | | { key: 'TRAN', value: ' mtrnk ' }, |
| | | { key: 'goto', value: ' mgtk ' }, |
| | | { key: 'set', value: ' mstk ' }, |
| | | { key: 'ROLLBACK', value: ' mrlbkk ' } |
| | | ] |
| | | |
| | | value = value.replace(/\n/ig, ' \n ') |
| | | // 替换关键字 |
| | | format.forEach(item => { |
| | | let reg = new RegExp('(^|\\s)' + item.key + '(\\s|$)', 'ig') |
| | | value = value.replace(reg, item.value) |
| | | }) |
| | | |
| | | // 1、替换%符(数据库中解析后sql报错) |
| | | value = value.replace(/%/ig, ' mpercent ') |
| | | |
| | | let encodesql = (val) => { |
| | | if (!val) return '' |
| | | |
| | | let _value = window.btoa(window.encodeURIComponent(val)) |
| | | |
| | | // 插入字符 |
| | | let index = Math.floor(_value.length / 2) |
| | | _value = _value.slice(0, index) + salt + _value.slice(index) |
| | | |
| | | // base64加密 |
| | | return window.btoa(_value) |
| | | } |
| | | |
| | | // 注:LText 与 LText1 顺序颠倒 |
| | | return { |
| | | LText: encodesql(value.substring(5000, 10000)), |
| | | LText1: encodesql(value.substring(0, 5000)), |
| | | LText2: encodesql(value.substring(10000)) |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | static getExcelInSql (item, data, dict) { |
| | | let btn = item.verify |
| | | let keys = ['delete', 'drop', 'insert', 'truncate', 'update'] |
| | | let userName = sessionStorage.getItem('User_Name') || '' |
| | | let fullName = sessionStorage.getItem('Full_Name') || '' |
| | | |
| | | if (sessionStorage.getItem('isEditState') === 'true') { |
| | | userName = sessionStorage.getItem('CloudUserName') || '' |
| | | fullName = sessionStorage.getItem('CloudFullName') || '' |
| | | } |
| | | |
| | | let errors = [] |
| | | let _topline = btn.range || 0 |
| | |
| | | |
| | | if (script.position === 'init') { |
| | | _initCustomScript += ` |
| | | ${script.sql} |
| | | ` |
| | | /* 自定义脚本 */ |
| | | ${script.sql} |
| | | ` |
| | | } else if (script.position === 'front') { |
| | | _prevCustomScript += ` |
| | | ${script.sql} |
| | | ` |
| | | /* 自定义脚本 */ |
| | | ${script.sql} |
| | | ` |
| | | } else { |
| | | _backCustomScript += ` |
| | | ${script.sql} |
| | | ` |
| | | /* 自定义脚本 */ |
| | | ${script.sql} |
| | | ` |
| | | } |
| | | }) |
| | | } |
| | | |
| | | let _Ltext = data.map((item, lindex) => { |
| | | let vals = btn.columns.map((col, cindex) => { |
| | | let vals = [] |
| | | btn.columns.forEach((col, cindex) => { |
| | | if (col.import === 'false') return |
| | | |
| | | let val = item[col.Column] !== undefined ? item[col.Column] : '' |
| | | let _position = (_topline + lindex + 1) + dict['main.excel.line'] + ' ' + (cindex + 1) + dict['main.excel.column'] + ' ' |
| | | |
| | |
| | | errors.push(_error) |
| | | } |
| | | } |
| | | } else if (col.type === 'date') { |
| | | val = val.replace(/(^\s*$)|\t*|\v*/ig, '') |
| | | |
| | | if (!val && col.required === 'true') { // 必填校验 |
| | | let _error = _position + dict['main.excel.content.emptyerror'] |
| | | errors.push(_error) |
| | | } else { // 关键字校验 |
| | | keys.forEach(key => { |
| | | let _patten = new RegExp('(^' + key + '\\s+)|(\\s+' + key + '\\s+)', 'ig') |
| | | if (_patten.test(val)) { |
| | | let _error = _position + dict['main.excel.includekey'] + key |
| | | errors.push(_error) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | |
| | | return `'${val}' as ${col.Column}` |
| | | |
| | | if (col.type === 'date') { |
| | | vals.push(`case when ${col.Column}='' then '1900-01-01' else dateadd(day,cast('${val}' as int)-2,'1900-01-01') end as ${col.Column}`) |
| | | } else { |
| | | vals.push(`'${val}' as ${col.Column}`) |
| | | } |
| | | }) |
| | | |
| | | let _lineIndex = '0000' + (lindex + 1) + '0' |
| | |
| | | return `Select ${vals.join(',')}` |
| | | }) |
| | | |
| | | _Ltext = _Ltext.join(' Union all ') |
| | | let result = [] |
| | | for(let i = 0; i < _Ltext.length; i += 20) { |
| | | result.push(_Ltext.slice(i, i + 20)) |
| | | } |
| | | |
| | | let _sql = '' |
| | | let _sqlInsert = '' |
| | | let _sqlBottom = '' |
| | | |
| | | if (item.intertype === 'inner' && !item.innerFunc) { |
| | | let _uniquesql = '' |
| | |
| | | if (unique.status === 'false') return |
| | | |
| | | let _fields = unique.field.split(',') |
| | | let _fields_ = _fields.map(_field => { |
| | | return `a.${_field}=b.${_field}` |
| | | }) |
| | | let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`) |
| | | let _afields = _fields.map(_field => `a.${_field}`) |
| | | _fields_ = _fields_.join(' and ') |
| | | |
| | | if (unique.verifyType !== 'physical') { |
| | |
| | | } |
| | | |
| | | _uniquesql += ` |
| | | Set @tbid='' |
| | | Select top 1 @tbid=${_fields.join('+\' \'+')} from (select 1 as n,${unique.field} from @${item.sheet} ) a group by ${unique.field} having sum(n)>1 |
| | | |
| | | If @tbid!='' |
| | | Begin |
| | | select @ErrorCode='${unique.errorCode}',@retmsg=@tbid+' 重复' |
| | | goto aaa |
| | | end |
| | | |
| | | Set @tbid='' |
| | | Select top 1 @tbid=${_fields.join('+\' \'+')} from @${item.sheet} a |
| | | Inner join ${item.sheet} b on ${_fields_} |
| | | |
| | | If @tbid!='' |
| | | Begin |
| | | select @ErrorCode='${unique.errorCode}',@retmsg=@tbid+' 与已有数据重复' |
| | | goto aaa |
| | | end |
| | | ` |
| | | /* 重复性验证 */ |
| | | Set @tbid='' |
| | | Select top 1 @tbid=${_fields.join('+\' \'+')} from (select 1 as n,${unique.field} from @${item.sheet} ) a group by ${unique.field} having sum(n)>1 |
| | | |
| | | If @tbid!='' |
| | | Begin |
| | | select @ErrorCode='${unique.errorCode}',@retmsg=@tbid+' 重复' |
| | | goto aaa |
| | | end |
| | | |
| | | Set @tbid='' |
| | | Select top 1 @tbid=${_afields.join('+\' \'+')} from @${item.sheet} a Inner join ${item.sheet} b on ${_fields_} |
| | | |
| | | If @tbid!='' |
| | | Begin |
| | | select @ErrorCode='${unique.errorCode}',@retmsg=@tbid+' 与已有数据重复' |
| | | goto aaa |
| | | end |
| | | ` |
| | | }) |
| | | |
| | | if (_uniquesql) { |
| | | _uniquesql = 'Declare @tbid Nvarchar(512)' + _uniquesql |
| | | } |
| | | } |
| | | |
| | | let declarefields = [] |
| | | let fields = [] |
| | | |
| | | btn.columns.forEach(col => { |
| | | declarefields.push(`${col.Column} ${col.type}`) |
| | | if (col.import === 'false') return |
| | | |
| | | if (col.type === 'date') { |
| | | declarefields.push(`${col.Column} Nvarchar(50)`) |
| | | } else { |
| | | declarefields.push(`${col.Column} ${col.type}`) |
| | | } |
| | | fields.push(col.Column) |
| | | }) |
| | | |
| | | fields = fields.join(',') |
| | | |
| | | let _insert = '' |
| | | |
| | | if (_prevCustomScript) { |
| | | _insert += _prevCustomScript |
| | | } |
| | | |
| | | if (btn.default !== 'false') { |
| | | _insert += ` |
| | | _insert = ` |
| | | /* 默认sql */ |
| | | Insert into ${item.sheet} (${fields},createuserid,createuser,createstaff,bid) |
| | | Select ${fields},@userid@,@username,@fullname,@BID@ From @${item.sheet} |
| | | ` |
| | | } |
| | | |
| | | if (_backCustomScript) { |
| | | _insert += _backCustomScript |
| | | _sql = ` |
| | | /* 系统生成 */ |
| | | declare @${item.sheet} table (${declarefields.join(',')},jskey nvarchar(50) ) |
| | | Declare @UserName nvarchar(50),@FullName nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@tbid Nvarchar(512) |
| | | |
| | | Select @ErrorCode='', @retmsg='', @UserName='${userName}', @FullName='${fullName}' |
| | | ${_initCustomScript} |
| | | ` |
| | | _sqlInsert = `Insert into @${item.sheet} (${fields},jskey)` |
| | | _sqlBottom = ` |
| | | /* 默认sql */ |
| | | delete tmp_excel_in where upid=@upid@ |
| | | |
| | | delete tmp_excel_in where datediff(day,createdate,getdate())>15 |
| | | ${_uniquesql} |
| | | ${_prevCustomScript} |
| | | ${_insert} |
| | | ${_backCustomScript} |
| | | Delete @${item.sheet} |
| | | |
| | | aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` |
| | | |
| | | if (window.GLOB.systemType !== 'official' && options.sysType !== 'cloud') { |
| | | let fsql = ` |
| | | ${_sql} |
| | | ${_sqlInsert} |
| | | |
| | | /* excel数据(前40条) */ |
| | | ${_Ltext.slice(0, 40).join(' Union all ')} |
| | | ${_sqlBottom} |
| | | ` |
| | | fsql = fsql.replace(/\n\s{8}/ig, '\n') |
| | | console.log(fsql) |
| | | } |
| | | |
| | | _sql = `declare @${item.sheet} table (${declarefields.join(',')},jskey nvarchar(50) ) |
| | | Declare @UserName nvarchar(50),@FullName nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000) |
| | | |
| | | Select @ErrorCode='', @retmsg='' |
| | | |
| | | select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID@ |
| | | ${_initCustomScript} |
| | | Insert into @${item.sheet} (${fields},jskey) |
| | | ${_Ltext} |
| | | ${_uniquesql} |
| | | ${_insert} |
| | | Delete @${item.sheet} |
| | | |
| | | aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` |
| | | |
| | | } else { |
| | | _sql = _Ltext |
| | | } else { // s_sDataDictb_excelIn 云端密钥验证参数 |
| | | _sql = ` |
| | | /* 系统生成 */ |
| | | declare @${item.sheet} table (jskey nvarchar(50)) |
| | | Declare @UserName nvarchar(50),@FullName nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@tbid Nvarchar(512) |
| | | |
| | | Select @ErrorCode='', @retmsg='', @UserName='${userName}', @FullName='${fullName}' |
| | | ` |
| | | } |
| | | |
| | | console.log(_sql) |
| | | |
| | | return { |
| | | sql: _sql, |
| | | lines: result.map((list, index) => { |
| | | return { |
| | | Ltext: window.btoa(window.encodeURIComponent(list.join(' Union all '))), |
| | | Sort: (index + 1) * 10 |
| | | } |
| | | }), |
| | | insert: _sqlInsert, |
| | | bottom: _sqlBottom, |
| | | errors: errors.join('; ') |
| | | } |
| | | } |
| | |
| | | // 初始化凭证及用户信息字段 |
| | | _sql += ` |
| | | /* 凭证及用户信息初始化赋值 */ |
| | | select @BVoucher='',@FIBVoucherDate='',@FiYear='',@ErrorCode='',@retmsg='',@UserName='${userName}', @FullName='${fullName}' |
| | | select @BVoucher='',@FIBVoucherDate='',@FiYear='',@ErrorCode='',@retmsg='',@UserName='${userName}', @FullName='${fullName}', @BillCode='', @ModularDetailCode='' |
| | | ` |
| | | |
| | | if (_initCustomScript) { |
| | |
| | | let datasource = setting.dataresource |
| | | if (/\s/.test(datasource)) { // 拼接别名 |
| | | datasource = '(' + datasource + ') tb' |
| | | } else { |
| | | datasource = datasource + ' tb' |
| | | } |
| | | |
| | | verify.uniques.forEach(item => { |
| | | let _primaryKey = item.field.split(',').includes(primaryKey) ? '' : ',' + primaryKey |
| | | |
| | | _sql += ` |
| | | /* 同类数据验证 */ |
| | | Set @tbid='' |
| | | |
| | | Select top 1 @tbid='X' from (select ${item.field}${_primaryKey},1 as n from ${datasource} ) tb inner join (select ID from dbo.SplitComma(@ID@)) sp on tb.${primaryKey}=sp.ID group by ${item.field} having sum(n)>1 |
| | | Select top 1 @tbid='X' from (select distinct ${item.field},1 as n from ${datasource} inner join (select ID from dbo.SplitComma(@ID@)) sp on tb.${primaryKey}=sp.ID ) a having sum(n)>1 |
| | | |
| | | If @tbid!='' |
| | | Begin |
| | |
| | | _sql += ` |
| | | aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` |
| | | |
| | | _sql = _sql.replace(/\n\s{8}/ig, '\n') |
| | | console.log(_sql) |
| | | if (window.GLOB.systemType !== 'official' && options.sysType !== 'cloud') { |
| | | _sql = _sql.replace(/\n\s{8}/ig, '\n') |
| | | console.log(_sql) |
| | | } |
| | | |
| | | return _sql |
| | | } |
| | | } |