king
2024-05-23 9a11e62adeb8d435b52a361eb62d5b59e1deef2a
src/menu/debug/index.jsx
@@ -1470,17 +1470,54 @@
    let _uniquesql = ''
    if (btn.uniques && btn.uniques.length > 0) {
      let textFields = []
      let numberFields = []
      let dateFields = []
      btn.columns.forEach((col) => {
        if (/Nvarchar/ig.test(col.type)) {
          textFields.push(col.Column)
        } else if (/Decimal|int/ig.test(col.type)) {
          numberFields.push(col.Column)
        } else if (/date/ig.test(col.type)) {
          dateFields.push(col.Column)
        }
      })
      btn.uniques.forEach(unique => {
        if (unique.status === 'false' || !unique.verifyType) return
        let _fields = unique.field.split(',')
        let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`)
        let _afields = _fields.map(_field => `a.${_field}`)
        _fields_ = _fields_.join(' and ')
        let _where = []
        _fields.forEach(f => {
          if (textFields.includes(f)) {
            _where.push(`${f}!=''`)
          } else if (numberFields.includes(f)) {
            _where.push(`${f}!=0`)
          } else if (dateFields.includes(f)) {
            _where.push(`${f}>'1949-10-01'`)
          }
        })
        _where = _where.length ? `where ${_where.join(' and ')} ` : ''
        if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') {
          _fields_ += ' and b.deleted=0'
        }
        let _afields = []
        _fields = _fields.map(f => {
          if (numberFields.includes(f)) {
            _afields.push(`cast(a.${f} as nvarchar(50))`)
            return `cast(${f} as nvarchar(50))`
          } else if (dateFields.includes(f)) {
            _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`)
            return `CONVERT(nvarchar(50), ${f}, 21)`
          }
          _afields.push(`a.${f}`)
          return f
        })
        _uniquesql += `
      /* 重复性验证 */
@@ -1494,7 +1531,7 @@
      end
      
      ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid=''
      Select top 1 @tbid=${_afields.join('+\' \'+')} from  #${sheet} a Inner join ${sheet} b on ${_fields_}
      Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${sheet} b on ${_fields_}
      
      If @tbid!=''
      Begin
@@ -1662,17 +1699,54 @@
    let _uniquesql = ''
    if (btn.uniques && btn.uniques.length > 0) {
      let textFields = []
      let numberFields = []
      let dateFields = []
      columns.forEach((col) => {
        if (/Nvarchar/ig.test(col.datatype)) {
          textFields.push(col.field)
        } else if (/Decimal|int/ig.test(col.datatype)) {
          numberFields.push(col.field)
        } else if (/date/ig.test(col.datatype)) {
          dateFields.push(col.field)
        }
      })
      btn.uniques.forEach(unique => {
        if (unique.status === 'false' || !unique.verifyType) return
        let _fields = unique.field.split(',')
        let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`)
        let _afields = _fields.map(_field => `a.${_field}`)
        _fields_ = _fields_.join(' and ')
        let _where = []
        _fields.forEach(f => {
          if (textFields.includes(f)) {
            _where.push(`${f}!=''`)
          } else if (numberFields.includes(f)) {
            _where.push(`${f}!=0`)
          } else if (dateFields.includes(f)) {
            _where.push(`${f}>'1949-10-01'`)
          }
        })
        _where = _where.length ? `where ${_where.join(' and ')} ` : ''
        if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') {
          _fields_ += ' and b.deleted=0'
        }
        let _afields = []
        _fields = _fields.map(f => {
          if (numberFields.includes(f)) {
            _afields.push(`cast(a.${f} as nvarchar(50))`)
            return `cast(${f} as nvarchar(50))`
          } else if (dateFields.includes(f)) {
            _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`)
            return `CONVERT(nvarchar(50), ${f}, 21)`
          }
          _afields.push(`a.${f}`)
          return f
        })
        _uniquesql += `
      /* 重复性验证 */
@@ -1686,7 +1760,7 @@
      end
      
      ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid=''
      Select top 1 @tbid=${_afields.join('+\' \'+')} from  #${sheet} a Inner join ${sheet} b on ${_fields_}
      Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${sheet} b on ${_fields_}
      
      If @tbid!=''
      Begin