Exemple #1
0
        /// <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;
            }
        }