/// <summary> /// 재처리 버튼 클릭 이벤트 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnReProcess_First_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { try { // 그리드 내 체크박스 선택 여부 체크 if (this.CheckGridRowSelected() == false) { return; } // ASK_REPROS - 재처리를 수행하시겠습니까? this.BaseClass.MsgQuestion("ASK_REPROS"); if (this.BaseClass.BUTTON_CONFIRM_YN == false) { return; } var selectedItems = this.ScanResultMgmtList.Where(p => p.IsSelected).ToList(); // 부천 URL string strPostSortingUrl_BC = "https://api-gateway.coupang.net/v2/providers/hub_api/apis/api/v1/sorters/BCSMS-2/sorting"; // 양산 URL string strPostSortingUrl_YS = "https://api-gateway.coupang.net/v2/providers/hub_api/apis/api/v1/sorters/YSSMS-1/sorting"; string strSendURL = this.BaseClass.CenterCD.Equals("BC") ? strPostSortingUrl_BC : strPostSortingUrl_YS; foreach (var item in selectedItems) { try { #region 라메터 변수 선언 및 값 할당 DataSet dsRtnValue = null; var strProcedureName = "PK_IF_SRT_RSLT_HUB_S.SP_IF_SRT_RSLT_INQ"; Dictionary <string, object> dicInputParam = new Dictionary <string, object>(); string[] arrOutputParam = { "O_IF_SND_LIST", "O_RSLT" }; var strCntrCd = this.BaseClass.CenterCD; // 센터코드 string strEqpID = this.BaseClass.ComboBoxSelectedKeyValue(this.cboEqpId); // 설비 ID var strIndtYmdHms = item.INDT_YMD_HMS; var strPID = item.PID; #endregion #region Input 파라메터 Dictionary <string, object> dicInputType = new Dictionary <string, object>(); dicInputParam.Add("P_CNTR_CD", strCntrCd); dicInputParam.Add("P_EQP_ID", strEqpID); dicInputParam.Add("P_INDT_YMD_HMS", strIndtYmdHms); dicInputParam.Add("P_PID", strPID); #endregion using (BaseDataAccess da = new BaseDataAccess()) { dsRtnValue = da.GetSpDataSet(strProcedureName, dicInputParam, arrOutputParam); foreach (DataRow drRow in dsRtnValue.Tables[0].Rows) { ReProcess model = new ReProcess(); model.sortingId = drRow["EQP_ID"].ToString(); model.trayCode = drRow["CART_NO"].ToString(); model.invoiceNumber = drRow["INV_BCD"].ToString(); model.boxCode = drRow["BOX_BCD"].ToString(); model.sortingCode = drRow["RGN_BCD"].ToString(); model.scanTime = drRow["SCAN_DT"].ToString(); model.sortTime = drRow["SRT_WRK_CMPT_DT"].ToString(); model.chuteNumber = drRow["RSLT_CHUTE_ID"].ToString(); model.turnNumber = Convert.ToInt32(drRow["RECIRC_CNT"]); model.errorCode = drRow["STR_ERR_CD"].ToString(); model.imagePath = string.Empty; var strJsonData = JsonConvert.SerializeObject(model); var strResult = this.PostSendJson(strSendURL, strJsonData); JsonWebServiceSendResult enumSendResult = strResult.ToUpper().Equals("OK") == true ? JsonWebServiceSendResult.SEND : JsonWebServiceSendResult.NOT_SEND; this.SaveSP_IF_SRT_RSLT_SND_UPD(enumSendResult, item.PID, item.INDT_YMD_HMS); } } } catch (Exception err) { this.BaseClass.Error(err); this.BaseClass.Info("오류발생:Update 구문 수행"); this.SaveSP_IF_SRT_RSLT_SND_UPD(JsonWebServiceSendResult.ERROR, item.PID, item.INDT_YMD_HMS); } } // CMPT_SEND : 재처리가 완료되었습니다. this.BaseClass.MsgInfo("CMPT_RESEND_PROC"); // 셀 유형관리 데이터 조회 DataSet dsSearch = this.GetSP_SCAN_RSLT_INQ(SearchedEQPId); if (dsSearch == null) { return; } var strErrCode = string.Empty; var strErrMsg = string.Empty; if (this.BaseClass.CheckResultDataProcess(dsSearch, ref strErrCode, ref strErrMsg) == true) { // 정상 처리된 경우 this.ScanResultMgmtList = new ObservableCollection <ScanResultMgmt>(); // 오라클인 경우 TableName = TB_SRT_BOX_RSLT this.ScanResultMgmtList.ToObservableCollection(dsSearch.Tables[0]); } else { // 오류가 발생한 경우 this.ScanResultMgmtList.ToObservableCollection(null); BaseClass.MsgError(strErrMsg, BaseEnumClass.CodeMessage.MESSAGE); } // PLAN_CHUTE 처리하기 (PLAN_CHUTE_ID1 + ';' + PLAN_CHUTE_ID2 + ';' + PLAN_CHUTE_ID3) // 소터오류코드 == "20" 인 경우 Row 색상 변경 this.ScanResultMgmtList.Where(p => p.SRT_RSN_CD == "20").ToList().ForEach(f => f.ForegroundBrush = new SolidColorBrush(Colors.Red)); // 조회 데이터를 그리드에 바인딩한다. this.gridMaster.ItemsSource = this.ScanResultMgmtList; // 데이터 조회 결과를 그리드 카운트 및 메인창 상태바에 설정한다. this.SetResultText(); } catch (Exception err) { this.BaseClass.MsgError($"재처리 중 오류가 발생했습니다.\r\n{err.ToString()}"); this.BaseClass.Error(err); } }
private async Task PostResultUploadAPI() { try { // 설비 ID 콤보박스 선택 여부 체크 // 재처리 리스트 조회 DataSet dsRtnValue = await this.GetSP_IF_SRT_RSLT_INQ(); if (dsRtnValue == null) { return; } var strErrCode = string.Empty; // 오류 코드 var strErrMsg = string.Empty; // 오류 메세지 if (this.BaseClass.CheckResultDataProcess(dsRtnValue, ref strErrCode, ref strErrMsg) == true) { // 정상 조회된 경우 // 결과 업로드 I/F 호출 foreach (DataRow drRow in dsRtnValue.Tables[1].Rows) { //var strEqpID = drRow["EQP_ID"].ToString(); // 설비 ID (sorterId) ReProcess modelReProcess = new ReProcess(); modelReProcess.sortingId = string.Empty; modelReProcess.trayCode = drRow["CART_NO"].ToString(); modelReProcess.invoiceNumber = drRow["INV_BCD"].ToString(); modelReProcess.boxCode = drRow["BOX_BCD"].ToString(); modelReProcess.scanTime = Convert.ToDateTime(drRow["SCAN_DT"]).ToString("yyyyMMddHHmmss"); modelReProcess.sortTime = Convert.ToDateTime(drRow["SRT_WRK_CMPT_DT"]).ToString("yyyyMMddHHmmss"); modelReProcess.chuteNumber = drRow["RSLT_CHUTE_ID"].ToString(); modelReProcess.turnNumber = 0; // Convert.ToInt32(drRow["RECIRC_CNT"]); modelReProcess.errorCode = drRow["STR_ERR_CD"].ToString(); modelReProcess.imagePath = string.Empty; //var strURL = $"https://api-gateway.coupang.net/v2/providers/hub_api/apis/api/v1/sorters/{ strEqpID}/sorting"; //var strJsonData = JsonConvert.SerializeObject(modelReProcess); //var strRtnValue = this.BaseClass.PostSendJson(strURL, strJsonData); //BaseResponse resp = JsonConvert.DeserializeObject<BaseResponse>(strRtnValue); //#region 샘플 //var strCode = resp.code; //var strDesc = resp.descryption; //#endregion var strJsonData = JsonConvert.SerializeObject(modelReProcess); HttpWebResponse response = SMART.WCS.UI.COMMON.Utility.HelperClass.PostSendJson(URL_POST_SORTING, strJsonData); var strResult = response.StatusCode.ToString(); JsonWebServiceSendResult enumSendRsult = strResult.ToUpper().Equals("OK") == true ? JsonWebServiceSendResult.SEND : JsonWebServiceSendResult.NOT_SEND; await this.SaveSP_IF_SRT_RSLT_SND_UPD(enumSendRsult); } } else { // 오류가 발생한 경우 this.BaseClass.MsgError(strErrMsg, BaseEnumClass.CodeMessage.MESSAGE); } } catch { await this.SaveSP_IF_SRT_RSLT_SND_UPD(JsonWebServiceSendResult.NOT_SEND); throw; } }
/// <summary> /// 전송 결과 업데이트 /// </summary> /// <param name="_enumSendResult">Json 웹서비스 호출 후 수신 결과</param> /// <param name="_strPid">PID</param> /// <returns></returns> private void SaveSP_IF_SRT_RSLT_SND_UPD(JsonWebServiceSendResult _enumSendResult, string _strPid, string _strIndtYmdHms) { try { string strSendResult = string.Empty; switch (_enumSendResult) { case JsonWebServiceSendResult.NOT_SEND: // 미전송 strSendResult = "N"; //// ERR_SEND_FAIL : 데이터 전송이 실패했습니다. //this.BaseClass.MsgError("ERR_SEND_FAIL"); break; case JsonWebServiceSendResult.ERROR: // 오류 strSendResult = "E"; //// 데이터 수신측에서 오류를 반환했습니다. //this.BaseClass.MsgError("ERR_RECEIVE_PART_ERR"); break; case JsonWebServiceSendResult.SEND: // 전송 (성공) strSendResult = "Y"; break; } this.BaseClass.Info("ERROR : " + strSendResult); #region 라메터 변수 선언 및 값 할당 DataTable dtRtnValue = null; var strProcedureName = "PK_IF_SRT_RSLT_HUB_S.SP_IF_SRT_RSLT_SND_UPD"; Dictionary <string, object> dicInputParam = new Dictionary <string, object>(); string[] arrOutputParam = { "O_RSLT" }; var strCntrCd = this.BaseClass.CenterCD; // 센터코드 var strEqpID = this.BaseClass.ComboBoxSelectedKeyValue(this.cboEqpId); // 설비 ID #endregion #region Input 파라메터 dicInputParam.Add("P_CNTR_CD", strCntrCd); // 센터코드 dicInputParam.Add("P_EQP_ID", strEqpID); // 설비 ID dicInputParam.Add("P_INDT_YMD_HMS", _strIndtYmdHms); dicInputParam.Add("P_PID", _strPid); // PID dicInputParam.Add("P_SND_YN", strSendResult); // 전송결과 dicInputParam.Add("P_USER_ID", this.BaseClass.UserID); // 사용자 ID #endregion #region 데이터 저장 using (BaseDataAccess dataAccess = new BaseDataAccess()) { dtRtnValue = dataAccess.GetSpDataTable(strProcedureName, dicInputParam, arrOutputParam); } #endregion if (dtRtnValue != null) { if (dtRtnValue.Rows.Count > 0) { if (dtRtnValue.Rows[0]["CODE"].ToString().Equals("0") == false) { // CMPT_SEND : 재처리가 완료되었습니다. //this.BaseClass.MsgInfo("CMPT_RESEND_PROC"); var strMessage = this.BaseClass.GetResourceValue("CMPT_RESEND_PROC"); this.BaseClass.Info($"{strMessage}"); } } else { //this.BaseClass.MsgInfo("ERR_SAVE"); //CMPT_SAVE : 저장 중 오류가 발생했습니다. var strErrMessage = this.BaseClass.GetResourceValue("ERR_SAVE"); this.BaseClass.Info($"{strErrMessage}"); } } } catch { throw; } }
/// <summary> /// 전송 결과 업데이트 /// </summary> /// <param name="_enumSendResult">Json 웹서비스 호출 후 수신 결과</param> /// <returns></returns> private async Task SaveSP_IF_SRT_RSLT_SND_UPD(JsonWebServiceSendResult _enumSendResult) { try { string strSendResult = string.Empty; switch (_enumSendResult) { case JsonWebServiceSendResult.NOT_SEND: // 미전송 strSendResult = "N"; // ERR_SEND_FAIL : 데이터 전송이 실패했습니다. this.BaseClass.MsgError("ERR_SEND_FAIL"); break; case JsonWebServiceSendResult.ERROR: // 오류 strSendResult = "E"; // 데이터 수신측에서 오류를 반환했습니다. this.BaseClass.MsgError("ERR_RECEIVE_PART_ERR"); break; case JsonWebServiceSendResult.SEND: // 전송 (성공) strSendResult = "Y"; break; } #region 라메터 변수 선언 및 값 할당 DataTable dtRtnValue = null; var strProcedureName = "PK_IF_SRT_RSLT_HUB_S.SP_IF_RSLT_SND_UPD"; Dictionary <string, object> dicInputParam = new Dictionary <string, object>(); string[] arrOutputParam = { "O_IF_SND_LIST", "O_RSLT" }; var strCntrCd = this.BaseClass.CenterCD; // 센터코드 var strEqpID = this.BaseClass.ComboBoxSelectedKeyValue(this.CboEqpId); // 설비 ID var strCurrentDate = DateTime.Now.ToString("yyyyMMdd"); // 현재일자 #endregion #region Input 파라메터 dicInputParam.Add("P_CNTR_CD", strCntrCd); // 센터코드 dicInputParam.Add("P_EQP_ID", strEqpID); // 설비 ID dicInputParam.Add("P_INDT_YMD_HMS", strCurrentDate); // 현재일자 dicInputParam.Add("P_PID", string.Empty); // PID dicInputParam.Add("P_SND_YN", strSendResult); // 전송결과 dicInputParam.Add("P_USER_ID", this.BaseClass.UserID); // 사용자 ID #endregion #region 데이터 저장 using (BaseDataAccess dataAccess = new BaseDataAccess()) { await System.Threading.Tasks.Task.Run(() => { dtRtnValue = dataAccess.GetSpDataTable(strProcedureName, dicInputParam, arrOutputParam); }).ConfigureAwait(true); } #endregion if (dtRtnValue != null) { if (dtRtnValue.Rows.Count > 0) { if (dtRtnValue.Rows[0]["CODE"].ToString().Equals("0") == false) { // CMPT_SEND : 재처리가 완료되었습니다. this.BaseClass.MsgInfo("CMPT_RESEND_PROC"); } } else { this.BaseClass.MsgInfo("ERR_SAVE"); //CMPT_SAVE : 저장 중 오류가 발생했습니다. } } } catch { throw; } }