protected override string WcsOnItemDischarged(CSorterItemData itemData) { try { List <OracleParameter> listPara = new List <OracleParameter> { new OracleParameter("P_CENTER_CD", OracleDbType.Varchar2, CENTER_CD, ParameterDirection.Input), new OracleParameter("P_EQP_ID", OracleDbType.Varchar2, MODULEID, ParameterDirection.Input), new OracleParameter("P_DATE", OracleDbType.Varchar2, itemData.INDUCTEDTIME_UK, ParameterDirection.Input), new OracleParameter("P_PID", OracleDbType.Varchar2, itemData.PID, ParameterDirection.Input), new OracleParameter("P_INDT_ID", OracleDbType.Varchar2, itemData.InductionNo, ParameterDirection.Input), new OracleParameter("P_CART_NO", OracleDbType.Varchar2, itemData.CartNo, ParameterDirection.Input), new OracleParameter("P_CHUTE_ID", OracleDbType.Varchar2, itemData.Discharge_ChuteNumber, ParameterDirection.Input), new OracleParameter("P_INPUT_MODE", OracleDbType.Varchar2, itemData.Mode, ParameterDirection.Input), new OracleParameter("P_CIRCU_CNT", OracleDbType.Varchar2, itemData.RecirculationCount, ParameterDirection.Input), new OracleParameter("P_USER_ID", OracleDbType.Varchar2, string.Empty, ParameterDirection.Input), new OracleParameter("O_RTN_CD", OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter("O_RTN_MSG", OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), }; string[] outpara = new string[2] { "O_RTN_CD", "O_RTN_MSG" }; string[] retVal = dbinterface.WcsProcedureCallGetValue(SP_DISCHARED, listPara, outpara); return(retVal[0]); } catch (Exception ex) { SystemLogger.Log(Level.Exception, string.Format("[{0}]{1} : {2}", this.Name, ex.StackTrace, ex.Message)); return(null); } }
protected override string[] WcsIPS_OnIPSResult(CSorterItemData itemData) { try { List <OracleParameter> listPara = new List <OracleParameter> { new OracleParameter("P_CENTER_CD", OracleDbType.Varchar2, CENTER_CD, ParameterDirection.Input), new OracleParameter("P_EQP_ID", OracleDbType.Varchar2, MODULEID, ParameterDirection.Input), new OracleParameter("P_DATE", OracleDbType.Varchar2, itemData.INDUCTEDTIME_UK, ParameterDirection.Input), new OracleParameter("P_PID", OracleDbType.Varchar2, itemData.PID, ParameterDirection.Input), new OracleParameter("P_INDT_ID", OracleDbType.Varchar2, itemData.InductionNo, ParameterDirection.Input), new OracleParameter("P_CART_NO", OracleDbType.Varchar2, itemData.CartNo, ParameterDirection.Input), new OracleParameter("P_BCR_NO", OracleDbType.Varchar2, itemData.IPSData, ParameterDirection.Input), new OracleParameter("P_USER_ID", OracleDbType.Varchar2, string.Empty, ParameterDirection.Input), new OracleParameter("P_IPS_NO", OracleDbType.Varchar2, itemData.IPSID, ParameterDirection.Input), new OracleParameter("O_DEST_CHUTE_NO", OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter("O_RTN_CD", OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter("O_RTN_MSG", OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), }; string[] outpara = new string[3] { "O_DEST_CHUTE_NO", "O_RTN_CD", "O_RTN_MSG" }; return(dbinterface.WcsProcedureCallGetValue(SP_IPS_SCAN, listPara, outpara)); } catch (Exception ex) { SystemLogger.Log(Level.Exception, string.Format("[{0}]{1} : {2}", this.Name, ex.StackTrace, ex.Message)); return(null); } }
protected virtual string WcsOnItemSortedConfirm(CSorterItemData itemData) { try { List <OracleParameter> listPara = new List <OracleParameter> { new OracleParameter(CConstant.ProcPnm.COMPANY_CD, OracleDbType.Varchar2, COMPANY_CD, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.CENTER_CD, OracleDbType.Varchar2, CENTER_CD, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.EQUIPMENT_ID, OracleDbType.Varchar2, EQP_ID, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.INPUT_TIME, OracleDbType.Varchar2, itemData.inductedTime, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.PARCEL_ID, OracleDbType.Varchar2, itemData.pid, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.CHUTE_NO, OracleDbType.Varchar2, itemData.sortedConfirmedChuteNumber, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.REASON_CD, OracleDbType.Varchar2, itemData.reasonCode, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.SENSOR_YN, OracleDbType.Varchar2, itemData.sensorYN, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.USER_ID, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter(CConstant.ProcPnm.SP_RESULT_CD, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter(CConstant.ProcPnm.SP_RESULT_MSG, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), }; return(dbinterface.WcsProcedureCall(SP_SORTED_CFM, listPara)); } catch (Exception ex) { SystemLogger.Log(Level.Exception, string.Format("[{0}]{1} : {2}", this.Name, ex.StackTrace, ex.Message)); return(null); } }
private void OnItemSortedConfirm(List <short> Message) { try { WheelSorterTelegram.ItemSortedConfirm item = new WheelSorterTelegram.ItemSortedConfirm(Message); CSorterItemData itemData = itemDataMgr.GetItem(item.ParcelID); if (itemData == null) //ItemData가 없으면 Dictionary에 새로 생성해준다. { itemData = new CSorterItemData() { inductedTime = DateTime.Now.ToString(CConstant.DATEFORMAT + CConstant.TIMEFORMAT), eqpId = __EQP_ID.AsString, pid = item.ParcelID, sortedConfirmedChuteNumber = item.ChuteNumber, reasonCode = item.ReasCode, sensorYN = item.SensorYN }; itemDataMgr.Add(itemData, itemData.pid); SystemLogger.Log(Level.Exception, string.Format("[OnItemSortedConfirm 새로 생성] UK={0} parcelID = {1}", itemData.inductedTime, itemData.pid), systemLogNm); } else { itemData.sortedConfirmedChuteNumber = item.ChuteNumber; itemData.reasonCode = item.ReasCode; itemData.sensorYN = item.SensorYN; } string result = WcsOnItemSortedConfirm(itemData); itemDataMgr.Remove(itemData, itemData.pid); //Sorted Confirm 후 Dictionary에서 제거 SystemLogger.Log(Level.Debug, String.Format("<OnItemSortedConfirm> [UK={0}] [PID={1}][CHUTE={2}][REASON={3}][SENSOR={4}] -> [RESULT={5}]", itemData.inductedTime, itemData.pid, itemData.sortedConfirmedChuteNumber, itemData.reasonCode, itemData.sensorYN, result == null ? "null" : result), systemLogNm); } catch (Exception ex) { SystemLogger.Log(Level.Exception, string.Format("[{0}]{1} : {2}", this.Name, ex.StackTrace, ex.Message)); } }
protected virtual string[] WcsIPS_OnIPSResult(CSorterItemData itemData) { try { DataSet dsRegEx = GetRegEx(); // 쿠팡의 정규식을 테이블에서 가져온다. Regex regInvNo = new Regex(string.Format(@"{0}", dsRegEx.Tables[0].Rows[0]["INV_NO_REGEX"])); Regex regBoxCd = new Regex(string.Format(@"{0}", dsRegEx.Tables[0].Rows[0]["BOX_BCD_REGEX"])); Regex regRgnCd = new Regex(string.Format(@"{0}", dsRegEx.Tables[0].Rows[0]["RGN_BCD_REGEX"])); char[] charSeparators = { ';' }; string[] arrBCRData = itemData.ipsData.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries); // 바코드 개수만큼 string 배열에 담는다. string sInvNo = string.Empty; string sBoxCd = string.Empty; string sRgnCd = string.Empty; foreach (string strBcrdata in arrBCRData) // 바코드 개수만큼 돌면서 정규식 체크하여 바코드를 추출한다. { foreach (Match match in regInvNo.Matches(strBcrdata)) { sInvNo += match.Value + ";"; } foreach (Match match in regBoxCd.Matches(strBcrdata)) { sBoxCd += match.Value + ";"; } foreach (Match match in regRgnCd.Matches(strBcrdata)) { sRgnCd += match.Value + ";"; } } sInvNo = sInvNo.Length > 0 ? sInvNo.Remove(sInvNo.Length - 1) : sInvNo; //마지막의 ";"은 제거 한다. sBoxCd = sBoxCd.Length > 0 ? sBoxCd.Remove(sBoxCd.Length - 1) : sBoxCd; sRgnCd = sRgnCd.Length > 0 ? sRgnCd.Remove(sRgnCd.Length - 1) : sRgnCd; List <OracleParameter> listPara = new List <OracleParameter> { new OracleParameter(CConstant.ProcPnm.COMPANY_CD, OracleDbType.Varchar2, COMPANY_CD, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.CENTER_CD, OracleDbType.Varchar2, CENTER_CD, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.EQUIPMENT_ID, OracleDbType.Varchar2, EQP_ID, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.INPUT_TIME, OracleDbType.Varchar2, itemData.inductedTime, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.PARCEL_ID, OracleDbType.Varchar2, itemData.pid, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.BARCODE, OracleDbType.Varchar2, itemData.ipsData.ToString(), ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.INV_BCD, OracleDbType.Varchar2, sInvNo, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.BOX_BCD, OracleDbType.Varchar2, sBoxCd, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.RGN_BCD, OracleDbType.Varchar2, sRgnCd, ParameterDirection.Input), new OracleParameter(CConstant.ProcPnm.USER_ID, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter(CConstant.ProcPnm.O_CHUTE_NO1, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter(CConstant.ProcPnm.O_CHUTE_NO2, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter(CConstant.ProcPnm.O_CHUTE_NO3, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter(CConstant.ProcPnm.SP_RESULT_CD, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), new OracleParameter(CConstant.ProcPnm.SP_RESULT_MSG, OracleDbType.Varchar2, 32767, string.Empty, ParameterDirection.Output), }; string[] outpara = new string[5] { CConstant.ProcPnm.O_CHUTE_NO1, CConstant.ProcPnm.O_CHUTE_NO2, CConstant.ProcPnm.O_CHUTE_NO3, CConstant.ProcPnm.SP_RESULT_CD, CConstant.ProcPnm.SP_RESULT_MSG }; return(dbinterface.WcsProcedureCallGetValue(SP_IPS_SCAN, listPara, outpara)); } catch (Exception ex) { SystemLogger.Log(Level.Exception, string.Format("[{0}]{1} : {2}", this.Name, ex.StackTrace, ex.Message)); return(null); } }
void IPS_OnIPSResult(IpsTelegram.IPSResult Result) { try { CSorterItemData itemData; lock (lockObj) { itemData = new CSorterItemData() // 최초 Pid 및 데이터를 생성하여 Dictionary에 담는다. { inductedTime = DateTime.Now.ToString(CConstant.DATEFORMAT + CConstant.TIMEFORMAT), eqpId = __EQP_ID.AsString, pid = CUtil.GetShortNumber(Result.parcelID), }; itemData.ipsData = Result.IPSData; itemDataMgr.OldDataProcess(itemData.pid); itemDataMgr.Add(itemData, itemData.pid); } SystemLogger.Log(Level.Info, String.Format("<IPS_READ> INPUT VALUES [UK={0}] [PID={1}][IPS={2}]", itemData.inductedTime, itemData.pid, itemData.ipsData), systemLogNm); System.Threading.ThreadPool.QueueUserWorkItem(delegate { if (itemData.pid != 0) { string[] scanResult = new string[5]; scanResult = WcsIPS_OnIPSResult(itemData); // Procedure를 호출하여 목적지를 받는다. if (scanResult != null && scanResult[0] != null && scanResult[0] != "null") { itemData.Ldestination[0] = CUtil.GetShortNumber(scanResult[0]); itemData.Ldestination[1] = CUtil.GetShortNumber(scanResult[1]); itemData.Ldestination[2] = CUtil.GetShortNumber(scanResult[2]); } SystemLogger.Log(Level.Debug, String.Format("<IPS_PROC_READ> [UK={0}] [PID={1}][IPS={2}] PROC_CALL= [CHUTE={3}][RTN={4}] [ERR={5}]", itemData.inductedTime, itemData.pid, itemData.ipsData, itemData.Ldestination[0] + ";" + itemData.Ldestination[1] + ";" + itemData.Ldestination[2], scanResult == null ? "null" : scanResult[3], scanResult == null ? "null" : scanResult[4]), systemLogNm); } else { SystemLogger.Log(Level.Info, String.Format("<PID is Zero. Destination Don't Send>")); itemData.destination1 = CUtil.GetShortNumber(CConstant.PROCEDURE_RESULT.REWORK); } WheelSorterTelegram.DestinationSend send = new WheelSorterTelegram.DestinationSend() //Telegram에 담는다. { ParcelID = itemData.pid, Destination = itemData.Ldestination, }; drvSocket.SendData(send.MakePacket(EQP_ID), sorterDestinationSendPort); //Socket 전송 SystemLogger.Log(Level.Debug, String.Format("<Destination Send OK> [PID={0}][CHUTE={1}]", send.ParcelID, send.Destination[0] + ";" + send.Destination[1] + ";" + send.Destination[2])); }); } catch (Exception ex) { SystemLogger.Log(Level.Exception, string.Format("[{0}]{1} : {2}", this.Name, ex.StackTrace, ex.Message)); } }