/// <summary> /// 頁籤=資料轉入處理 BUTTON [載入檔案] /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void but_LoadFile_Click(object sender, EventArgs e) { try { #region 將Client端的檔案上傳至AP端 #region 宣告變數 string s_UploadPath = string.Empty; ArrayList arl_Return = new ArrayList(); #endregion #region 將Client端的檔案上傳至AP端 s_UploadPath = Server.MapPath("..\\") + System.Configuration.ConfigurationManager.AppSettings["UploadPath"] + "CAA\\"; BCO.ImportCOLLPO bco = new BCO.ImportCOLLPO(ConntionDB); arl_Return = bco.FileUpload(s_UploadPath, this.fileupload_Path, Session["UID"].ToString()); #endregion #region 檢查回傳結果 if (arl_Return[0].ToString() == "FALSE") { this.ErrorMsgLabel.Text = arl_Return[1].ToString(); return; } #endregion #endregion #region 依據AP端檔案資料匯入TmpTable #region 取得 TempTable VDS_CAA_COLL_TMP 的 SCHEMA BCO.CAACommon CAAComm = new BCO.CAACommon(); DataTable dt_Temp = new DataTable(); ParameterList.Clear(); ParameterList.Add(CAAComm.GetValueSetParameter(Session["UID"].ToString(), "string", false));//V_LOG_UPDATEUID dt_Temp = bco.GET_VDS_CAA_COLL_TMP_SCHEMA(ParameterList); #endregion #region 將資料寫入 TempTable DateTime d_Now = DateTime.Now; string s_FileLine = string.Empty; System.IO.StreamReader str = new System.IO.StreamReader(arl_Return[1].ToString()); DataTable dt_Month_Close = new DataTable(); #region 取得月結的資料 ParameterList.Clear(); ParameterList.Add(CAAComm.GetValueSetParameter(Session["UID"].ToString(), "string", false));//V_LOG_UPDATEUID dt_Month_Close = bco.GET_MONTH_CLOSE_DATA(ParameterList); #endregion int i_SignNum = 0;//沖正筆數 20110210 Rika新增 while ((s_FileLine = str.ReadLine()) != null) { #region 檢查條件 string s_Store = string.Empty;//店號 int i_Charge = 0;//手續費 string s_SIGN = s_FileLine.Substring(73, 1);//正負號資料 ArrayList arl_ConditionReturn = Check_Condition_FileLine(s_FileLine, dt_Month_Close, dt_Temp, out s_Store, out i_Charge); #endregion #region 檢查正確 if (arl_ConditionReturn[1].ToString() == string.Empty && s_SIGN == "+") { DataRow dr_Temp = dt_Temp.NewRow(); dr_Temp["ID"] = dt_Temp.Rows.Count + 1;//ID dr_Temp["STATUS"] = CAAComm.GetValueSetParameter("1", "int", false);//處理狀態(1:正常資料;2:錯誤資料;3:沖正資料) dr_Temp["DATASOURCE"] = CAAComm.GetValueSetParameter(arl_Return[3].ToString(), "string", false);//匯入檔案 dr_Temp["DATATYPE"] = CAAComm.GetValueSetParameter("1", "int", false);//資料類別(1:FILE TO TMP;2:TMP TO DB) dr_Temp["MEMO"] = CAAComm.GetValueSetParameter(string.Empty, "string", false);//說明 dr_Temp["STORE_ID"] = s_Store;//店號 dr_Temp["COLL_DATE"] = DateTime.ParseExact(Convert.ToString(int.Parse(s_FileLine.Substring(49, 7)) + 19110000), "yyyyMMdd", null);//交易日期 dr_Temp["COLL_SEQNO"] = CAAComm.GetValueSetParameter(s_FileLine.Substring(62, 10), "string", false);//交易序號 dr_Temp["COLL_TIME"] = DateTime.ParseExact(s_FileLine.Substring(56, 6), "HHmmss", null).ToString("HHmmss");//交易時間 dr_Temp["COLL_AMT"] = CAAComm.GetValueSetParameter(s_FileLine.Substring(34, 13), "int", false);//交易金額 dr_Temp["CHARGE"] = i_Charge;//手續費 dr_Temp["SAL_DATE"] = DateTime.ParseExact(Convert.ToString(int.Parse(s_FileLine.Substring(13, 7)) + 19110000), "yyyyMMdd", null);//營業日 dr_Temp["PAY_TYPE"] = CAAComm.GetValueSetParameter(s_FileLine.Substring(84, 1), "string", false);//繳款型態 dr_Temp["PAY_CHKNO"] = CAAComm.GetValueSetParameter(s_FileLine.Substring(20, 9), "string", false);//識別碼 dr_Temp["ACCTNO"] = Int64.Parse(s_FileLine.Substring(0, 12));//轉入帳號 dr_Temp["ACCT_CODE"] = CAAComm.GetValueSetParameter(s_FileLine.Substring(12, 1), "string", false);//帳務別 dr_Temp["MEMO_NO"] = CAAComm.GetValueSetParameter(s_FileLine.Substring(20, 14), "string", false);//註記一 dr_Temp["CREATEUID"] = CAAComm.GetValueSetParameter(Session["UID"].ToString(), "string", false); dr_Temp["CREATEDATE"] = CAAComm.GetValueSetParameter(d_Now.ToString(), "datetime", false); dr_Temp["UPDATEUID"] = CAAComm.GetValueSetParameter(string.Empty, "string", false); dr_Temp["UPDATEDATE"] = CAAComm.GetValueSetParameter(string.Empty, "string", false); dt_Temp.Rows.Add(dr_Temp); } #endregion #region 沖正資料處理 20110210 Rika 新增 else if (arl_ConditionReturn[1].ToString() == string.Empty && s_SIGN == "-") { string s_Filter_Expression = string.Empty; string i_COLL_AMT = CAAComm.GetValueSetParameter(s_FileLine.Substring(34, 13), "int", false).ToString();//交易金額 string i_COLL_DATE = DateTime.ParseExact(Convert.ToString(int.Parse(s_FileLine.Substring(49, 7)) + 19110000), "yyyyMMdd", null).ToString("yyyy/MM/dd"); #region 更新上一筆被沖正的資料狀態 // int i_ID = dt_Temp.Rows.Count -1 ; s_Filter_Expression = string.Format("COLL_AMT = '{0}' and COLL_DATE = #{1}# and STORE_ID = '{2}' and STATUS <> '3' ", i_COLL_AMT, i_COLL_DATE, s_Store); DataRow[] dr = dt_Temp.Select(s_Filter_Expression); int ID = dr.Length -1 ; int i_ID = Convert.ToInt32(dr[ID]["ID"].ToString()) -1 ; dt_Temp.Rows[i_ID]["STATUS"] = CAAComm.GetValueSetParameter("3", "int", false);//處理狀態(1:正常資料;2:錯誤資料;3:沖正資料) dt_Temp.Rows[i_ID]["MEMO"] = "此筆為被沖正資料";//說明 #endregion DataRow dr_Temp = dt_Temp.NewRow(); dr_Temp["ID"] = dt_Temp.Rows.Count + 1;//ID dr_Temp["STATUS"] = CAAComm.GetValueSetParameter("3", "int", false);//處理狀態(1:正常資料;2:錯誤資料;3:沖正資料) dr_Temp["DATASOURCE"] = CAAComm.GetValueSetParameter(arl_Return[3].ToString(), "string", false);//匯入檔案 dr_Temp["MEMO"] = "此筆為沖正資料";//說明 dr_Temp["CREATEUID"] = CAAComm.GetValueSetParameter(Session["UID"].ToString(), "string", false); dr_Temp["CREATEDATE"] = CAAComm.GetValueSetParameter(d_Now.ToString(), "datetime", false); dr_Temp["UPDATEUID"] = CAAComm.GetValueSetParameter(string.Empty, "string", false); dr_Temp["UPDATEDATE"] = CAAComm.GetValueSetParameter(string.Empty, "string", false); dt_Temp.Rows.Add(dr_Temp); } #endregion #region 檢查不正確 else { DataRow dr_Temp = dt_Temp.NewRow(); string s_ErrorMsg = string.Empty; s_ErrorMsg = arl_ConditionReturn[1].ToString().Replace("<br/>", string.Empty); dr_Temp["ID"] = dt_Temp.Rows.Count + 1;//ID dr_Temp["STATUS"] = CAAComm.GetValueSetParameter("2", "int", false);//處理狀態(1:正常資料;2:錯誤資料;3:沖正資料) dr_Temp["DATASOURCE"] = CAAComm.GetValueSetParameter(arl_Return[3].ToString(), "string", false);//匯入檔案 dr_Temp["MEMO"] = s_ErrorMsg;//說明 dr_Temp["CREATEUID"] = CAAComm.GetValueSetParameter(Session["UID"].ToString(), "string", false); dr_Temp["CREATEDATE"] = CAAComm.GetValueSetParameter(d_Now.ToString(), "datetime", false); dr_Temp["UPDATEUID"] = CAAComm.GetValueSetParameter(string.Empty, "string", false); dr_Temp["UPDATEDATE"] = CAAComm.GetValueSetParameter(string.Empty, "string", false); dt_Temp.Rows.Add(dr_Temp); } #endregion } str.Close(); str.Dispose(); #endregion #region 連結資料庫 if (dt_Temp.Rows.Count == 0) { this.ErrorMsgLabel.Text = "無匯入資料"; return; } else { #region 將資料寫入TempTable DataTable dt_Return = bco.FileToTmp(null, Session["UID"].ToString(), dt_Temp); #endregion #region 計算[總筆數][正常筆數][錯誤筆數] int i_Total_Count = 0;//總筆數 int i_Success_Count = 0;//正常筆數 int i_Failure_Count = 0;//錯誤筆數 int i_Reverse_Count = 0;//沖正筆數 string s_FilterExpression = string.Empty; s_FilterExpression = "STATUS ='1'";//1:正常資料; DataRow[] dr_Success = dt_Return.Select(s_FilterExpression); if (dr_Success.Length == 1) { i_Success_Count = int.Parse(dr_Success[0]["count"].ToString()) + i_SignNum; //沖正筆數 20110210 Rika新增 } s_FilterExpression = "STATUS ='2'";//2:錯誤資料; DataRow[] dr_Failure = dt_Return.Select(s_FilterExpression); if (dr_Failure.Length == 1) { i_Failure_Count = int.Parse(dr_Failure[0]["count"].ToString()); } s_FilterExpression = "STATUS ='3'";//3:沖正資料; DataRow[] dr_Reverse = dt_Return.Select(s_FilterExpression); if (dr_Reverse.Length == 1) { i_Reverse_Count = int.Parse(dr_Reverse[0]["count"].ToString()); } i_Total_Count = i_Success_Count + i_Failure_Count + i_Reverse_Count; this.UploadStatusPanel1.UploadSum = i_Total_Count;//上傳結果總筆數 this.UploadStatusPanel1.UploadOK = i_Success_Count;//上傳結果正常筆數 this.UploadStatusPanel1.UploadNG = i_Failure_Count;//上傳結果錯誤筆數 this.UploadStatusPanel1.ImportSum = 0;//匯入結果總筆數 this.UploadStatusPanel1.ImportOK = 0;//匯入結果正常筆數 this.UploadStatusPanel1.ImportNG = 0;//匯入結果錯誤筆數 #endregion #region 設定控制項 if ((i_Total_Count == (i_Success_Count + i_Reverse_Count)) && (i_Failure_Count == 0)) { //若沖正筆數=全部筆數則不用匯入 if (i_Reverse_Count != i_Total_Count) { this.but_Import.Enabled = true;//確定匯入 } //若有沖正資料則需要開啟檢視異常 if (i_Reverse_Count > 0) { this.but_Error.Enabled = true;//檢視異常 } else { this.but_Error.Enabled = false;//檢視異常 } } if (i_Failure_Count > 0) { this.but_Import.Enabled = false;//確定匯入 this.but_Error.Enabled = true;//檢視異常 } #endregion } #endregion #endregion } catch (Exception ex) { WaringLogProcess(ex.Message); this.ErrorMsgLabel.Text = ex.Message; } finally { #region 設定 TabContainer 的 ActiveTabIndex this.TabContainer1.ActiveTabIndex = 1; #endregion } }