From 4cc738e535d1a20701d206e12cf9de8cc5a01170 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期六, 01 六月 2024 15:24:12 +0800
Subject: [PATCH] Merge branch 'develop'

---
 src/utils/utils.js |  159 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 149 insertions(+), 10 deletions(-)

diff --git a/src/utils/utils.js b/src/utils/utils.js
index be865dc..1fa8b28 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -1048,12 +1048,18 @@
           }
         } else if (typeof(val) === 'string') {
           val = val.replace(/(^\s+$)|\t+|\v+/ig, '')
-          if (!val && col.required === 'true') {           // 鏃堕棿蹇呭~鏍¢獙
-            errors.push(_position + '鍐呭涓嶅彲涓虹┖')
-          } else if (val && !/^[1-9][0-9]{3}/.test(val)) { // 鏃堕棿姝e垯鏍¢獙
+          if (!val) {
+            if (col.required === 'true') {         // 鏃堕棿蹇呭~鏍¢獙
+              errors.push(_position + '鍐呭涓嶅彲涓虹┖')
+            } else if (col.type === 'date') {
+              val = '1949-10-01'
+            } else if (col.type === 'datetime') {
+              val = '1949-10-01 00:00:00'
+            }
+          } else if (!/^[1-9][0-9]{3}/.test(val)) { // 鏃堕棿姝e垯鏍¢獙
             errors.push(_position + '鏃堕棿鏍煎紡閿欒')
           }
-        } else {                                           // 鏃堕棿鏍煎紡閿欒
+        } else {                                    // 鏃堕棿鏍煎紡閿欒
           errors.push(_position + '鏃堕棿鏍煎紡閿欒')
         }
       }
@@ -1128,9 +1134,15 @@
     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)) {
+        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)
         }
       })
 
@@ -1139,13 +1151,17 @@
 
         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 ')} ` : ''
@@ -1153,6 +1169,20 @@
         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 += `
       /* 閲嶅鎬ч獙璇� */
@@ -1226,12 +1256,84 @@
 
       ${_uniquesql}
       ${_prevCustomScript}
-      ${_insert}
+      ${_insert}`
+
+    if (item.$process && btn.workFlow === 'true' && window.GLOB.UserCacheMap.has(item.$flowId)) {
+      let flow = window.GLOB.UserCacheMap.get(item.$flowId)
+      let target = flow.cells.filter(cell => cell.mknode === 'start')[0]
+      
+      let flowsql = ''
+      let status = 0
+      let statusName = ''
+      let detailId = ''
+      let work_grade = sessionStorage.getItem('work_grade') || 0
+  
+      if (target) {
+        detailId = target.id
+        status = target.mkdata.status
+        statusName = target.mkdata.statusName
+      }
+  
+      if (!target) {
+        status = 0
+        statusName = '寮傚父'
+  
+        flowsql = `
+        /* 宸ヤ綔娴佸紓甯竤ql */
+        select @ErrorCode='E',@retmsg='宸ヤ綔娴佹棤寮�濮嬭妭鐐�' goto aaa
+        `
+      } else if (btn.flowSql === 'true') {
+        flowsql = `
+        /* 宸ヤ綔娴侀粯璁ql */
+        insert into s_my_works_flow (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,work_group,works_flow_detail_id,work_grade,bid,createuserid,CreateUser,CreateStaff,upid)
+        select jskey,@works_flow_code@,@works_flow_name@,@works_flow_param@,@status@,@statusname@,@work_group@,@works_flow_detail_id@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@
+        from #${sheet}
+                                                                   
+        insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid)
+        select jskey,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@
+        from #${sheet}
+                                                                   
+        insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid)
+        select jskey,@works_flow_code@,@works_flow_detail_id@,@userid@,@start_type@,@userid@,@UserName,@FullName,@time_id@
+        from #${sheet}
+                                                                   
+        insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid,typecharone)
+        select jskey,@works_flow_code@,@userid@,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@,'begin'
+        from #${sheet}
+        `
+      }
+      sql += `
+      ${flowsql}
       ${_backCustomScript}
 
       drop table #${sheet}
       
       aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
+
+      sql = sql.replace(/@start_type@/ig, `'寮�濮�'`)
+      sql = sql.replace(/@works_flow_code@/ig, `'${flow.flow_code}'`)
+      sql = sql.replace(/@works_flow_name@/ig, `'${flow.flow_name}'`)
+  
+      if (target) {
+        let label = target.attrs && target.attrs.text && target.attrs.text.text ? target.attrs.text.text : ''
+        let msg = {...target.mkdata, label: label, id: target.id, checkIds: [], checkUsers: []}
+        sql = sql.replace(/@works_flow_param@/ig, `'${window.btoa(window.encodeURIComponent(JSON.stringify(msg)))}'`)
+      } else {
+        sql = sql.replace(/@works_flow_param@/ig, `''`)
+      }
+      sql = sql.replace(/@works_flow_detail_id@/ig, `'${detailId}'`)
+      sql = sql.replace(/@status@/ig, `'${status}'`)
+      sql = sql.replace(/@statusname@/ig, `'${statusName}'`)
+      sql = sql.replace(/@work_group@/ig, `'${sessionStorage.getItem('work_group') || ''}'`)
+      sql = sql.replace(/@work_grade@/ig, `'${work_grade}'`)
+    } else {
+      sql += `
+      ${_backCustomScript}
+
+      drop table #${sheet}
+      
+      aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
+    }
 
     sql = sql.replace(/\n\s{6}/ig, '\n')
 
@@ -1362,17 +1464,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 += `
       /* 閲嶅鎬ч獙璇� */
@@ -1386,7 +1525,7 @@
       end
       
       ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid=''
-      Select top 1 @tbid=${_afields.join('+\' \'+')} from  #${sheet} a Inner join ${database}${sheet} b on ${_fields_}
+      Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${database}${sheet} b on ${_fields_}
       
       If @tbid!=''
       Begin
@@ -1867,7 +2006,7 @@
         if (_key === 'bid' && !_val) { // 琛ㄥ崟涓病鏈塨id鍒欎娇鐢ㄧ郴缁焍id鍙橀噺
           _val = BID
         }
-        
+
         _fieldValue.push(`${_key}='${_val}'`)
         _value.push(`${_labels[index] || ''}锛�${_val || ''}`)
       })

--
Gitblit v1.8.0