/// <summary> /// 目的:查詢上傳後的成功筆數 /// Table:VDS_VDM_VCMS_MAIN_TMP /// 條件:V_CREATEUID /// </summary> public void QueryRouteStoreTmpImportStat(string V_CREATEUID, out int N_TMP_CNT, out int N_TAB_CNT) { try { DBO.STM_STM24_DBO dbo = new STM_STM24_DBO(ref USEDB); dbo.doQueryRouteStoreTmpImportStat(V_CREATEUID, out N_TMP_CNT, out N_TAB_CNT); } catch (Exception ex) { throw ex; } }
/// <summary> /// 目的:查詢錯誤訊息資料 /// Table: /// B=VDS_STM_ROUTE_STORE_TMP /// 條件:[資料型態]=2:錯誤資料、[建立人員]= /// </summary> public DataTable QueryErrorByFind(string V_CREATEUID, DateTime D_CREATEDATE_S, DateTime D_CREATEDATE_E) { try { DBO.STM_STM24_DBO dbo = new STM_STM24_DBO(ref USEDB); return dbo.doQueryRouteStoreTmpError(V_CREATEUID, D_CREATEDATE_S, D_CREATEDATE_E); } catch (Exception ex) { throw ex; } }
/// <summary> /// 目的:將上傳檔案內容,存入暫存檔 /// 傳入參數: /// 〔@啟用日〕 /// 1.先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊。 /// 相關Table: /// B=VDS_STM_ROUTE_STORE_TMP /// 2.讀取匯入檔案到暫存DataSet。 /// B.EFF_START=〔@啟用日〕,其他欄位參照檔案格式。 /// 3.檢查匯入檔案格式內容是否正確,如有任何錯誤,則停止上傳流程,並回傳錯誤訊息。 /// 『XX檔案,檔案內容錯誤:@錯誤說明』 (格式請參考資料庫Table Shcema) /// * 日期:檢查日期格式。 /// * 數字:檢查內容是否為數字。 /// * 文字:檢查長度是否溢位。 /// * 檔案欄位數是否不足。 /// * 兩個工作表匯入內容有任一筆錯,皆視為錯誤,整批放棄。 /// * 匯入表格細節說明請參考:WEB UI SPEC 文件 /// 4. 格式檢查正確無誤後 /// a) 暫存檔中的[狀態]欄位調整為1:FILE TO TMP /// b) 呼叫 [CheckData] ,檢查資料內容邏輯正確性 /// 5. 無論CheckData()檢查結果是否為True, /// 皆將上傳檔案內容新增到資料庫Tmp Table:, /// 並記錄錯誤原因、匯入者、匯入日期、處理檔案名稱=上傳檔名。 /// c)上述匯入需一併Commit,處理期間有任何錯誤,皆視為異常,整批Rollback,並回傳錯誤訊息。 /// 6. 上傳流程完成,回傳處理筆數訊息:上傳總筆數、成功筆數、失敗筆數。 /// 7.如果CheckData()檢查結果=True,呼叫 [ProcessImportRoute.TmpToDB],處理匯入正式表單。 /// * 匯入檔案對應,請參考工作表:STM24 路線路順匯入(檔案格式)。 /// </summary> public void FileToTmp(DataTable dt, DbTransaction RootDBT, string V_DATA_SOURCE, string V_CREATEUID, string V_EFF_START,out string ErrorMsg) { bool IsRootTranscation = false; try { DBO.STM_STM24_DBO dbo = new STM_STM24_DBO(ref USEDB); ErrorMsg = ""; //判斷是否有傳入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_MAIN_TMP dbo.doDeleteRouteStoreTmp(V_CREATEUID, DBT); #endregion #region FileToTmp ArrayList ParameterList = new ArrayList(); string V_RESULT = "1"; 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(V_EFF_START); ParameterList.Add(dt.Rows[i][0].ToString()); ParameterList.Add(V_CREATEUID); ParameterList.Add(System.DateTime.Now); dbo.doCreateRouteStoreTmp(ParameterList, DBT, out V_RESULT); } } } #endregion #region TmpToDB dbo.doCreateRouteStore(V_CREATEUID, DBT, out V_RESULT); if (V_RESULT == "0") ErrorMsg = "轉入正式路線路順失敗,請檢視異常報表!"; #endregion if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } } catch (Exception ex) { #region 交易失敗 DBT.Rollback(); #endregion throw ex; } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } }