public DataTable QuerySwitch(QueryType QT, ArrayList ParameterList) { #region VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB); DataTable Dt; try { switch (QT) { case QueryType.GetCRMOrder_TmpSchema: Dt = CRM_DBO.GetORDER_TmpSchema(ParameterList); break; default: Dt = new DataTable(); break; } return Dt; } catch (Exception ex) { throw GetNewException(ex); } #endregion }
public DataTable CRM04A_QUERRY_TEMP_TABLE(ArrayList ParameterList) { #region try { VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB); return CRM_DBO.DO_CRM04A_QUERRY_TEMP_TABLE(ParameterList); } catch (Exception ex) { throw GetNewException(ex); } #endregion }
/// <summary> /// 刪除該使用者存在於 CRM_ORDER_TMP 的舊資料,並將 EXCEL 中新資料匯入 CRM_ORDER_TMP /// </summary> /// <param name="ParameterList">刪除變數</param> /// <param name="RootDBT">是否有主交易,無主交易輸入null</param> /// <returns>回傳影響筆數</returns> public void DELETE_AND_INSERT_TEMP_TABLE(ArrayList ParameterList, DbTransaction RootDBT, DataTable dt_CRM_IMPORT_TMP) { #region bool IsRootTranscation = false; try { VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_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 //改由檢查前執行 //CRM_DBO.doDelete_ORDER_TMP(ParameterList, DBT); foreach (DataRow dRow in dt_CRM_IMPORT_TMP.Rows) { CRM_DBO.doAdd_ORDER_TMP(dRow, DBT); } #region 交易成功 if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } #endregion } catch (Exception ex) { #region 交易失敗 if (IsRootTranscation) { //獨立呼叫Transcation失敗 DBT.Rollback(); } #endregion throw GetNewException(ex); } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } #endregion }
/// <summary> /// 將資料由 TEMP TABLE 新增至正式 TABLE /// </summary> /// <param name="ParameterList">變數</param> /// <param name="RootDBT">是否有主交易,無主交易輸入null</param> /// <returns>回傳結果</returns> public Int32 TMP_To_ORDER(ArrayList ParameterList, DbTransaction RootDBT, out string strSerialBatchNo, out DataTable dtBatchImportResult) { #region bool IsRootTranscation = false; Int32 iResult = 0; try { VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_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 iResult = CRM_DBO.doTMP_To_ORDER(ParameterList, DBT, out strSerialBatchNo); #region 交易成功 if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } #endregion #region 取得匯入清單 if (strSerialBatchNo.Trim() != "") { dtBatchImportResult = CRM_DBO.doQueryTransResult(ParameterList); } else { dtBatchImportResult = null; } #endregion return iResult; } catch (Exception ex) { #region 交易失敗 if (IsRootTranscation) { //獨立呼叫Transcation失敗 DBT.Rollback(); } #endregion throw GetNewException(ex); } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } #endregion }
/// <summary> /// 檢核暫存檔資料邏輯正確性 /// </summary> /// <param name="s_LoginUser"></param> /// <param name="V_SESSION_ID"></param> /// <param name="iOKConut"></param> /// <param name="iErrConut"></param> /// <returns></returns> public bool Check_TmpData(string s_LoginUser, string V_SESSION_ID, out Int32 iTotalCount, out Int32 iOKCount, out Int32 iErrCount) { #region bool bResult = false; iOKCount = 0; iErrCount = 0; VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB); ArrayList ParameterList = new ArrayList(); ParameterList.Add(s_LoginUser); ParameterList.Add(V_SESSION_ID); CRM_DBO.doCheck_TmpData(ParameterList, out iTotalCount, out iOKCount, out iErrCount); if (iErrCount != 0) bResult = false; else bResult = true; return bResult; #endregion }
/// <summary> /// FileToTmp 效能提升版 /// </summary> /// <param name="ds_Excel"></param> /// <param name="d_CreateDate"></param> /// <param name="s_LoginUser"></param> /// <param name="s_AP_FileName"></param> /// <param name="V_SESSION_ID"></param> /// <returns></returns> public ArrayList FileToTmp2(DataSet ds_Excel, DateTime d_CreateDate, string s_LoginUser, string s_AP_FileName, string V_SESSION_ID) { #region int i_newTable_Count = 0; ArrayList arl_Return = new ArrayList(); ArrayList arr_CheckData_Table = new ArrayList(); ArrayList arr_CheckData = new ArrayList(); int i_FileToTemp_Total_count = 0; int i_FileToTemp_Right_count = 0; int i_FileToTemp_Wrong_count = 0; bool b_Check_Logic = true; ArrayList paramTemp = new ArrayList(); DataTable dtTemp = new DataTable(); string strErrMsg = ""; Int32 iErrCount = 0; Int32 iPKCount = 0; try { ParameterList.Clear(); DataTable dt_CRM_IMPORT_TMP = QuerySwitch(QueryType.GetCRMOrder_TmpSchema, ParameterList); string s_ChanNo = ""; string s_Store = ""; string s_Item = ""; string s_Period = ""; string s_PoSourceNo = ""; string strErrMsgDataFormat = ""; VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB); ParameterList.Clear(); ParameterList.Add(s_LoginUser); ParameterList.Add(V_SESSION_ID); CRM_DBO.doDelete_ORDER_TMP(ParameterList, null); DataTable dtSorted = ds_Excel.Tables[0]; //2010/12/01 added:先進行排序再存入DB //DataView dvSorted = ds_Excel.Tables[0].DefaultView; //dvSorted.Sort = string.Format("{0},{1},{2},{3}", // dvSorted.Table.Columns[3].ColumnName, // dvSorted.Table.Columns[4].ColumnName, // dvSorted.Table.Columns[1].ColumnName, // dvSorted.Table.Columns[2].ColumnName);//ITEM,PERIOD,CHAN_NO,STORE //DataTable dtSorted = dvSorted.ToTable(); foreach (System.Data.DataRow dRow in dtSorted.Rows) { #region iErrCount = 0; iPKCount = 0; strErrMsg = ""; s_ChanNo = dRow[1].ToString().Trim(); s_Store = dRow[2].ToString().Trim(); s_Item = dRow[3].ToString().Trim(); s_Period = dRow[4].ToString().Trim(); s_PoSourceNo = dRow[0].ToString().Trim(); if (!CheckRequiredField(dRow, iAryRequiredColumnsCheck, out strErrMsgDataFormat))//檢查必填欄位 { #region 檢查資料格式正確性 arl_Return.Add("FALSE"); arl_Return.Add(strErrMsgDataFormat); return arl_Return; } else if (!CheckOverFlow(dRow, iAryOverflowColumnsCheck, out strErrMsgDataFormat))//檢查是否為溢位 { arl_Return.Add("FALSE"); arl_Return.Add(strErrMsgDataFormat); return arl_Return; } else if (!CheckInputValueIsInt32(dRow, iAryRequiredColumnsCheck, out strErrMsgDataFormat))//檢查是否為數值 { arl_Return.Add("FALSE"); arl_Return.Add(strErrMsgDataFormat); return arl_Return; #endregion } else { #region 將資料寫入 TEMP TABLE DataRow dRow_Temp = dt_CRM_IMPORT_TMP.NewRow(); dRow_Temp["CREATEDATE"] = d_CreateDate; dRow_Temp["CREATEUID"] = s_LoginUser; dRow_Temp["ID"] = i_newTable_Count; dRow_Temp["UPDATEDATE"] = d_CreateDate; dRow_Temp["UPDATEUID"] = s_LoginUser; dRow_Temp["CHAN_NO"] = dRow[1].ToString().Trim(); dRow_Temp["STORE"] = dRow[2].ToString().Trim(); dRow_Temp["ITEM"] = dRow[3].ToString().Trim(); dRow_Temp["PERIOD"] = dRow[4].ToString().Trim(); dRow_Temp["PO_SOURCE_NO"] = dRow[0].ToString().Trim(); dRow_Temp["REQUEST_QTY"] = dRow[5].ToString().Trim(); dRow_Temp["SESSION_ID"] = V_SESSION_ID; dRow_Temp["DATASOURCE"] = s_AP_FileName; //------------------------------------- #endregion dt_CRM_IMPORT_TMP.Rows.Add(dRow_Temp); i_newTable_Count += 1; } i_FileToTemp_Total_count += 1; #endregion } #region 先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊,並將 Excel 資料匯入 TEMP TABLE ParameterList.Clear(); ParameterList.Add(s_LoginUser); ParameterList.Add(V_SESSION_ID); DELETE_AND_INSERT_TEMP_TABLE(ParameterList, null, dt_CRM_IMPORT_TMP); #endregion //效能提升版的地方---------------------------------------------------------------------------------- #region 檢查資料邏輯正確性 bool bResult = Check_TmpData(s_LoginUser, V_SESSION_ID, out i_FileToTemp_Total_count, out i_FileToTemp_Right_count, out i_FileToTemp_Wrong_count); #endregion //效能提升版的地方---------------------------------------------------------------------------------- arl_Return.Add("TRUE"); arl_Return.Add(b_Check_Logic); arl_Return.Add(i_FileToTemp_Total_count); arl_Return.Add(i_FileToTemp_Right_count); arl_Return.Add(i_FileToTemp_Wrong_count); } catch (Exception ex) { arl_Return.Add("FALSE"); arl_Return.Add(GetNewException(ex).Message); } return arl_Return; #endregion }
public DataTable CheckBookLack(ArrayList ParameterList) { #region try { VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB); return CRM_DBO.doCheckBookLack(ParameterList); } catch (Exception ex) { throw GetNewException(ex); } #endregion }
public DataTable QueryTransResult(ArrayList ParameterList) { #region try { VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB); return CRM_DBO.doQueryTransResult(ParameterList); } catch (Exception ex) { throw GetNewException(ex); } #endregion }