protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 二层小车进入缓存站台
            */
            object obj = ObjectUtil.GetObject(stateItem.State);

            if (obj == null || obj.ToString() == "0")
                return;
            string WriteItem = "";
            try
            {
                switch (stateItem.ItemName)
                {

                    case "02_1_475":
                        WriteItem = "02_2_475";
                        break;
                    case "02_1_440":
                        WriteItem = "02_2_440";
                        break;
                    case "02_1_412":
                        WriteItem = "02_2_412";
                        break;
                }
                string TaskNo = obj.ToString().PadLeft(4, '0');
                TaskDal dal = new TaskDal();
                string[] strValue = dal.GetTaskInfo(TaskNo);
                if (!string.IsNullOrEmpty(strValue[0]))
                {
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=5", strValue[0]), "2"); //更新
                    ChannelDal cDal = new ChannelDal();
                    cDal.UpdateOutChannelTime(strValue[0]);

                    WriteToService("StockPLC_02", WriteItem, 1);
                }

                //读取码盘机是否处于,申请位;
                string SeparateItem = "";
                object objSeparate = ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_372_1"));
                if (objSeparate.ToString() != "0")
                    SeparateItem = "02_1_372_1";
                else
                {

                    objSeparate = ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_392_1"));
                    if (objSeparate.ToString() != "0")
                        SeparateItem = "02_1_392_1";
                }
                if (SeparateItem != "")
                {
                    WriteToProcess("StockOutSeparateProcess", SeparateItem, 1);
                }

            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_02.StockOutCacheProcess,原因:" + e.Message);
            }
        }
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 二层小车进入缓存站台
            */

            object obj = ObjectUtil.GetObject(stateItem.State);

            if (obj == null || obj.ToString() == "0")
                return;

            string WriteItem = "";
            string ChannelNo = "";
            object objChannel;
            string strReadItem = "";
            try
            {
                switch (stateItem.ItemName)
                {

                    case "02_1_378_1":
                        WriteItem = "02_2_378";
                        ChannelNo = "415";
                        strReadItem = "02_1_378_2";
                        break;
                    case "02_1_381_1":
                        WriteItem = "02_2_381";
                        ChannelNo = "431";
                        strReadItem = "02_1_381_2";
                        break;
                    case "02_1_383_1":
                        WriteItem = "02_2_383";
                        ChannelNo = "438";
                        strReadItem = "02_1_383_2";
                        break;
                    case "02_1_385_1":
                        WriteItem = "02_2_385";
                        ChannelNo = "461";
                        strReadItem = "02_1_385_2";
                        break;
                    case "02_1_387_1":
                        WriteItem = "02_2_387";
                        ChannelNo = "465";
                        strReadItem = "02_1_387_2";
                        break;
                    case "02_1_389_1":
                        WriteItem = "02_2_389";
                        ChannelNo = "471";
                        strReadItem = "02_1_389_2";
                        break;
                }
                string TaskNo = obj.ToString().PadLeft(4, '0');
                objChannel = ObjectUtil.GetObject(WriteToService("StockPLC_02", strReadItem));

                TaskDal dal = new TaskDal();
                string[] strValue = dal.GetTaskInfo(TaskNo);

                if (!string.IsNullOrEmpty(strValue[0]))
                {
                     ChannelDal Cdal = new ChannelDal();

                     ChannelNo = Cdal.GetChannelFromTask(TaskNo, strValue[1]);

                     dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=5", strValue[0]), "2"); //更新
                     if (objChannel.ToString() == ChannelNo) //返回正确的缓存道。
                     {
                         int value = Cdal.UpdateInChannelTime(strValue[0], strValue[1], ChannelNo);
                         WriteToService("StockPLC_02", WriteItem + "_1", value);
                         WriteToService("StockPLC_02", WriteItem + "_2", 1);
                     }
                     else
                     {
                         int value = Cdal.UpdateInChannelAndTime(strValue[0], strValue[1], objChannel.ToString());
                         WriteToService("StockPLC_02", WriteItem + "_1", value);
                         WriteToService("StockPLC_02", WriteItem + "_2", 2);
                     }
                }

            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_02.StockOutInCacheProcess,原因:" + e.Message);
            }
        }
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 二层出库拆盘完成
             *  stateItem.State :参数 - 请求的卷烟编码。
            */

            object obj = ObjectUtil.GetObject(stateItem.State);

            if (obj == null || obj.ToString() == "0")
                return;

            string WriteItem="";
            string FromStation = "";
            string strTaskItem = "";
            object objTaskNo;
            try
            {
                switch (stateItem.ItemName)
                {
                    case "02_1_372_1":
                        FromStation = "372";
                        WriteItem = "02_2_372";
                        strTaskItem = "02_1_372_2";

                        break;
                    case "02_1_392_1":
                        FromStation = "392";
                        WriteItem = "02_2_392";
                        strTaskItem = "02_1_392_2";
                        break;
                }
                objTaskNo = ObjectUtil.GetObject(WriteToService("StockPLC_02", strTaskItem));
                string TaskNo = objTaskNo.ToString().PadLeft(4, '0');
                TaskDal dal = new TaskDal();
                string[] strValue = dal.GetTaskInfo(TaskNo);
                if (!string.IsNullOrEmpty(strValue[0]))
                {

                    bool blnvalue = dal.SeparateTaskDetailStart(strValue[0]); //判断该任务是否开始执行
                    if (!blnvalue)
                    {
                        ChannelDal cdal = new ChannelDal();
                        string strChannelNo = cdal.InsertChannel(strValue[0], strValue[1]);//分配缓存道
                        if (strChannelNo != "")
                        {
                            dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=4", strValue[0]), "2");
                            WriteToService("StockPLC_02", WriteItem + "_1", int.Parse(strChannelNo));
                            WriteToService("StockPLC_02", WriteItem + "_2", 1);
                            dal.UpdateTaskDetailStation(FromStation, strChannelNo, "1", string.Format("TASK_ID='{0}' AND ITEM_NO=5", strValue[0]));
                        }
                    }

                }

            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_02.StockOutSeparateProcess,原因:" + e.Message);
            }
        }