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);
            }
        }
Esempio n. 3
0
 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);
     }
 }
Esempio n. 4
0
        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));
            }
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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));
            }
        }