示例#1
0
        /// <summary>
        /// 盘点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCheckScan_Click(object sender, EventArgs e)
        {
            object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_195"));

            if (obj == null || obj.ToString() == "0")
            {
                return;
            }
            string strTaskNo = obj.ToString().PadLeft(4, '0');

            if (int.Parse(obj.ToString()) >= 9800 && int.Parse(obj.ToString()) < 9999)  //盘点
            {
                string[] str = new string[3];

                str[0] = "6";


                str[1] = "";
                str[2] = "";
                TaskDal   dal           = new TaskDal(); //更具任务号,获取TaskID及BILL_NO
                string[]  strInfo       = dal.GetTaskInfo(strTaskNo);
                DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
                DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
                //线程停止
                string strValue = "";
                while ((strValue = FormDialog.ShowDialog(str, dtProductInfo)) != "")
                {
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                    string writeItem = "01_2_195_";

                    DataTable dtTask = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));

                    DataRow       dr        = dtTask.Rows[0];
                    SysStationDal sysdal    = new SysStationDal();
                    DataTable     dtstation = sysdal.GetSationInfo(dr["CELL_CODE"].ToString(), "11", "3");

                    if (strValue != "1")
                    {
                        CellDal celldal = new CellDal();
                        celldal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "条码扫描不一致");
                    }


                    int[] ServiceW = new int[3];
                    ServiceW[0] = int.Parse(strInfo[1]);                                 //任务号
                    ServiceW[1] = int.Parse(dtstation.Rows[0]["STATION_NO"].ToString()); //目的地址
                    ServiceW[2] = 1;

                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW);                                                                                                                         //PLC写入任务
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "3", 1);                                                                                                                                //PLC写入任务

                    dal.UpdateTaskDetailStation("195", dtstation.Rows[0]["STATION_NO"].ToString(), "1", string.Format("TASK_ID='{0}' AND ITEM_NO=3", strInfo[0]));                                                              //更新货位到达入库站台,
                    dal.UpdateTaskDetailCrane(dtstation.Rows[0]["STATION_NO"].ToString(), dr["CELL_CODE"].ToString(), "0", dtstation.Rows[0]["CRANE_NO"].ToString(), string.Format("TASK_ID='{0}' AND ITEM_NO=4", strInfo[0])); //更新调度堆垛机的其实位置及目标地址。
                    break;
                }
            }
        }
示例#2
0
        /// <summary>
        ///接收删除指令返回值
        /// </summary>
        /// <param name="state"></param>
        private void DEC(object state)
        {
            Dictionary <string, string> msg = (Dictionary <string, string>)state;

            if (msg["ReturnCode"] == "000") //序列号出错,重新发送报文
            {
                TaskDal   dal = new TaskDal();
                DataTable dt  = dal.CraneTaskIn(string.Format("DETAIL.CRANE_NO='{0}' AND ASSIGNMENT_ID='{1}'", msg["CraneNo"], msg["AssignmenID"]));
                DataRow   dr  = null;
                if (dt.Rows.Count > 0)
                {
                    dr = dt.Rows[0];
                }
                if (dr != null)
                {
                    #region 错误处理

                    if (dr["ERR_CODE"].ToString() == "111") //入库,货位有货,重新分配货位
                    {
                        CellDal cdal = new CellDal();
                        cdal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "货位有货,系统无记录");

                        string[]        strValue = dal.AssignNewCell(string.Format("TASK_ID='{0}'", dr["TASK_ID"].ToString()), dr["CRANE_NO"].ToString()); //货位申请
                        ProductStateDal StateDal = new ProductStateDal();
                        StateDal.UpdateProductCellCode(strValue[0], strValue[1]);                                                                          //更新Product_State 货位

                        SysStationDal sysdal    = new SysStationDal();
                        DataTable     dtstation = sysdal.GetSationInfo(strValue[1], dr["TASK_TYPE"].ToString(), dr["ITEM_NO"].ToString());
                        dal.UpdateTaskDetailCrane(dtstation.Rows[0]["STATION_NO"].ToString(), strValue[1], "1", dtstation.Rows[0]["CRANE_NO"].ToString(), string.Format("TASK_ID='{0}' AND ITEM_NO={1}", strValue[0], dr["ITEM_NO"].ToString()));//更新调度堆垛机的其实位置及目标地址。

                        dr.BeginEdit();
                        dr["CELLSTATION"] = "30" + strValue[1] + "01";
                        dr.EndEdit();
                        SendTelegramARQ(dr, false);
                        //if (dtCrane != null)
                        //{
                        //    DataRow[] drs = dtCrane.Select(string.Format("ASSIGNMENT_ID='{0}'", msg["AssignmenID"]));
                        //    if (drs.Length > 0)
                        //        dtCrane.Rows.Remove(drs[0]);
                        //}
                    }
                    else if (dr["ERR_CODE"].ToString() == "113")//出库,货位无货,
                    {
                        string    ErrMsg = "";
                        DataRow[] drMsgs = dtErrMesage.Select(string.Format("CODE='{0}'", dr["ERR_CODE"].ToString()));
                        if (drMsgs.Length > 0)
                        {
                            ErrMsg = drMsgs[0]["DESCRIPTION"].ToString();
                        }

                        string   strBillNo  = "";
                        string[] strMessage = new string[3];
                        strMessage[0] = "8";
                        strMessage[1] = dr["TASK_ID"].ToString();
                        strMessage[2] = "错误代码:" + dr["ERR_CODE"] + ",错误内容:" + ErrMsg;

                        DataTable dtProductInfo = dal.GetProductInfoByTaskID(dr["TASK_ID"].ToString());

                        while ((strBillNo = FormDialog.ShowDialog(strMessage, dtProductInfo)) != "")
                        {
                            BillDal bdal         = new BillDal();
                            string  strNewBillNo = strBillNo;

                            string strOutTaskID = bdal.CreateCancelBillOutTask(dr["TASK_ID"].ToString(), dr["BILL_NO"].ToString(), strNewBillNo);

                            DataTable dtOutTask = dal.CraneTaskOut(string.Format("TASK_ID='{0}'", strOutTaskID));

                            WriteToProcess("CraneProcess", "CraneInRequest", dtOutTask);
                            CellDal cdal = new CellDal();
                            cdal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "货位无货,系统有记录");
                            break;
                        }
                    }
                }

                #endregion
            }
        }
        /*  处理事项:
         *  抽检,补料,盘点  烟包到达,195
         */
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            try
            {
                object sta = ObjectUtil.GetObject(stateItem.State);

                if (sta == null || sta.ToString() == "0")
                {
                    return;
                }
                string[] str = new string[3];
                if (((short)sta) >= 9000 && ((short)sta) <= 9299) //补料
                {
                    str[0] = "1";
                }
                else if (((short)sta) >= 9300 && ((short)sta) <= 9499)//抽检
                {
                    str[0] = "2";
                }
                else if (((short)sta) >= 9800 && ((short)sta) < 9999) //盘点
                {
                    str[0] = "6";
                }
                str[1] = "";
                str[2] = "";

                //根据任务号,获取TaskID及BILL_NO
                TaskDal   dal           = new TaskDal();
                string[]  strInfo       = dal.GetTaskInfo(sta.ToString().PadLeft(4, '0'));
                DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
                DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
                //线程停止
                string strValue = "";
                while ((strValue = FormDialog.ShowDialog(str, dtProductInfo)) != "")
                {
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                    string writeItem = "01_2_195_";
                    if (str[0] == "1" || str[0] == "2")  //抽检,补料
                    {
                        dal.UpdateTaskState(strInfo[0], "2");

                        BillDal billdal = new BillDal();
                        billdal.UpdateInBillMasterFinished(strInfo[1], "1");

                        int[] ServiceW = new int[3];
                        ServiceW[0] = int.Parse(strInfo[1]); //任务号
                        ServiceW[1] = 131;                   //目的地址
                        ServiceW[2] = 4;

                        WriteToService("StockPLC_01", writeItem + "1", ServiceW); //PLC写入任务

                        WriteToService("StockPLC_01", writeItem + "2", 1);        //PLC写入任务
                    }
                    else  //盘点
                    {
                        DataTable dtTask = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));

                        DataRow       dr        = dtTask.Rows[0];
                        SysStationDal sysdal    = new SysStationDal();
                        DataTable     dtstation = sysdal.GetSationInfo(dr["CELL_CODE"].ToString(), "11", "3");

                        if (strValue != "1")
                        {
                            CellDal celldal = new CellDal();
                            celldal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "条码扫描不一致");
                        }


                        int[] ServiceW = new int[3];
                        ServiceW[0] = int.Parse(strInfo[1]);                                 //任务号
                        ServiceW[1] = int.Parse(dtstation.Rows[0]["STATION_NO"].ToString()); //目的地址
                        ServiceW[2] = 1;

                        WriteToService("StockPLC_01", writeItem + "1", ServiceW);                                                                                      //PLC写入任务
                        WriteToService("StockPLC_01", writeItem + "2", 1);                                                                                             //PLC写入任务

                        dal.UpdateTaskDetailStation("195", dtstation.Rows[0]["STATION_NO"].ToString(), "1", string.Format("TASK_ID='{0}' AND ITEM_NO=3", strInfo[0])); //更新货位到达入库站台,
                    }


                    //线程继续。
                    break;
                }
            }
            catch (Exception ex)
            {
                Logger.Error("THOK.XC.Process.Process_01.CheckOutToStationProcess:" + ex.Message);
            }
        }