/// <summary> /// 目的:查詢上傳後的成功筆數 /// Table:VDS_VDM_VCMS_ITEM_TMP /// 條件:V_CREATEUID /// </summary> public void QueryVcmsItemTmpImportStat(string V_CREATEUID, out int N_TMP_CNT, out int N_TAB_CNT) { try { DBO.VDM_VDM051_DBO dbo = new VDM_VDM051_DBO(ref USEDB); dbo.doQueryVcmsItemTmpImportStat(V_CREATEUID, out N_TMP_CNT, out N_TAB_CNT); } catch (Exception ex) { throw ex; } }
/// <summary> /// 目的:查詢錯誤訊息資料 /// Table:VDS_VDM_VCMS_ITEM_TMP /// 條件:[資料型態]=2:錯誤資料、[建立人員]= /// </summary> public DataTable QueryErrorByFind(string V_CREATEUID, DateTime D_CREATEDATE_S, DateTime D_CREATEDATE_E, Int32 N_ROWNUM) { try { DBO.VDM_VDM051_DBO dbo = new VDM_VDM051_DBO(ref USEDB); return dbo.doQueryVcmsItemTmpError(V_CREATEUID, D_CREATEDATE_S, D_CREATEDATE_E, N_ROWNUM); } catch (Exception ex) { throw ex; } }
/// <summary> /// 目的:將上傳檔案內容,存入暫存檔 /// /// 1.先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊。 /// 相關Table:VDS_VDM_VCMS_ITEM_TMP(VCMS廠商收費明細暫存檔) /// 2.讀取匯入檔案到暫存DataSet。 /// 3.檢查匯入檔案格式內容是否正確,如有任何錯誤,則停止上傳流程,並回傳錯誤訊息。 /// 『XX檔案,檔案內容錯誤:@錯誤說明』 (格式請參考資料庫Table Shcema) /// * 日期:檢查日期格式。 /// * 數字:檢查內容是否為數字。 /// * 文字:檢查長度是否溢位。 /// * 檔案欄位數是否不足。 /// * 兩個工作表匯入內容有任一筆錯,皆視為錯誤,整批放棄。 /// * 匯入表格細節說明請參考:WEB UI SPEC 文件 /// 4. 格式檢查正確無誤後 /// a) 暫存檔中的[狀態]欄位調整為1:FILE TO TMP /// b) 呼叫 [CheckData] ,檢查資料內容邏輯正確性 /// 5. 無論CheckData()檢查結果是否為True, /// 皆將上傳檔案內容新增到資料庫Tmp Table:, /// 並記錄錯誤原因、匯入者、匯入日期、處理檔案名稱=上傳檔名。 /// c)上述匯入需一併Commit,處理期間有任何錯誤,皆視為異常,整批Rollback,並回傳錯誤訊息。 /// 6. 上傳流程完成,回傳處理筆數訊息:上傳總筆數、成功筆數、失敗筆數。 /// </summary> public string FileToTmp(DataTable dt, DbTransaction RootDBT, string V_DATA_SOURCE, string V_CREATEUID) { bool IsRootTranscation = false; try { DBO.VDM_VDM051_DBO dbo = new VDM_VDM051_DBO(ref USEDB); //判斷是否有傳入Root Transcation IsRootTranscation = (RootDBT == null) ? true : false; #region 啟動交易或指定RootTranscation if (IsRootTranscation) { //獨立呼叫啟動Transcation Conn = USEDB.CreateConnection(); Conn.Open(); DBT = Conn.BeginTransaction(); } else { DBT = RootDBT; } #endregion #region 清空VDS_VDM_VCMS_ITEM_TMP dbo.doDeleteVcmsItemTmp(V_CREATEUID, DBT); #endregion #region FileToTmp ArrayList ParameterList = new ArrayList(); string V_RESULT = "1"; string V_MSG = ""; if (dt != null) { for (int i = 0; i < dt.Rows.Count; i++) { if (V_RESULT == "1") { ParameterList.Clear(); ParameterList.Add(V_DATA_SOURCE); ParameterList.Add(dt.Rows[i][0].ToString()); ParameterList.Add(V_CREATEUID); ParameterList.Add(System.DateTime.Now); dbo.doCreateVcmsItemTmp(ParameterList, DBT, out V_RESULT ,out V_MSG); V_MSG += "(" + dt.Rows[i][0].ToString() + ")"; } else { break; } } } #endregion if (V_RESULT == "1") { #region TmpToDB dbo.doCreateVcmsItem(V_CREATEUID, DBT); #endregion if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); V_MSG = ""; } } else { DBT.Rollback(); } return V_MSG; } catch (Exception ex) { #region 交易失敗 DBT.Rollback(); #endregion throw ex; } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } }