Example #1
0
        /// <summary>
        /// 托盘入库方式
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPalletIn_Click(object sender, EventArgs e)
        {
            PalletSelect frm = new PalletSelect();



            if (frm.ShowDialog() == DialogResult.OK)
            {
                object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_122_1"));
                if (obj == null || obj.ToString() != "0")
                {
                    return;
                }
                if (frm.Flag == 1)  //单托盘入库
                {
                    string writeItem = "01_2_122_";
                    int[]  ServiceW  = new int[3];
                    ServiceW[0] = 9999; //任务号
                    ServiceW[1] = 131;  //目的地址
                    ServiceW[2] = 4;


                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW); //PLC写入任务
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "2", 1);        //PLC写入任务
                }
                else if (frm.Flag == 2)
                {
                    PalletBillDal Billdal     = new PalletBillDal();
                    string        TaskID      = Billdal.CreatePalletInBillTask(true); //空托盘组入库单,生成Task.
                    string        FromStation = "122";
                    string        ToStation   = "122";
                    string        writeItem   = "01_2_122_";

                    string   strWhere  = string.Format("TASK_ID='{0}'", TaskID);
                    TaskDal  dal       = new TaskDal();
                    string[] CellValue = dal.AssignCell(strWhere, ToStation); //货位申请

                    string        TaskNo = dal.InsertTaskDetail(CellValue[0]);
                    SysStationDal sysDal = new SysStationDal();
                    DataTable     dt     = sysDal.GetSationInfo(CellValue[1], "11", "3");


                    dal.UpdateTaskState(CellValue[0], "1");                                                                               //更新任务开始执行
                    ProductStateDal StateDal = new ProductStateDal();
                    StateDal.UpdateProductCellCode(CellValue[0], CellValue[1]);                                                           //更新Product_State 货位

                    dal.UpdateTaskDetailStation(FromStation, ToStation, "2", string.Format("TASK_ID='{0}' AND ITEM_NO=1", CellValue[0])); //更新货位申请起始地址及目标地址。
                    int[] ServiceW = new int[3];
                    ServiceW[0] = int.Parse(TaskNo);                                                                                      //任务号
                    ServiceW[1] = int.Parse(dt.Rows[0]["STATION_NO"].ToString());                                                         //目的地址
                    ServiceW[2] = 2;

                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW);                                                           //PLC写入任务
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "2", 1);                                                                  //PLC写入任务
                    dal.UpdateTaskDetailStation(ToStation, dt.Rows[0]["STATION_NO"].ToString(), "1", string.Format("TASK_ID='{0}' AND ITEM_NO=2", CellValue[0])); //更新货位到达入库站台,

                    //更新单据开始
                }
            }
        }
Example #2
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 二楼空托盘组入库
             * 生成入库单,入库作业。
             */
            try
            {
                object[] obj = ObjectUtil.GetObjects(stateItem.State);
                if (obj[0] == null || obj[0].ToString() == "0")
                {
                    return;
                }

                int    PalletCount = int.Parse(obj[1].ToString());
                string TaskID      = "";

                //判断是否还有出库任务
                TaskDal dal          = new TaskDal();
                int     TaskOutCount = dal.CarTaskInfo();

                if (PalletCount >= 4 || TaskOutCount <= 4)
                {
                    //获取托盘组入库下达排程任务而小车未接货的任务号,防止托盘组数量变化引起触发
                    TaskID = dal.GetPalletInTask();
                    string strWhere = "";
                    if (TaskID == "")
                    {
                        PalletBillDal Billdal = new PalletBillDal();
                        TaskID = Billdal.CreatePalletInBillTask(false);

                        strWhere = string.Format("TASK_ID='{0}'", TaskID);
                        string[] CellValue = dal.AssignCellTwo(strWhere);//货位申请
                        string   TaskNo    = dal.InsertTaskDetail(CellValue[0]);

                        dal.UpdateTaskState(CellValue[0], "1");//更新任务开始执行

                        ProductStateDal StateDal = new ProductStateDal();
                        //更新Product_State 货位
                        StateDal.UpdateProductCellCode(CellValue[0], CellValue[1]);

                        //更新货位申请起始地址及目标地址。
                        dal.UpdateTaskDetailStation("357", "359", "2", string.Format("TASK_ID='{0}' AND ITEM_NO=1", CellValue[0]));
                    }
                    strWhere = string.Format("WCS_TASK.TASK_ID='{0}' AND ITEM_NO=2 AND DETAIL.STATE=0 ", TaskID);
                    DataTable dt = dal.TaskCarDetail(strWhere);
                    WriteToProcess("CarProcess", "CarInRequest", dt);
                }
            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_02.PalletInRequestProcess:" + e.Message);
            }
        }
Example #3
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 空托盘组出库申请,
             * 空托盘组到达指定出库位置。
             *
             */


            try
            {
                object obj = ObjectUtil.GetObject(stateItem.State);
                if (obj == null || obj.ToString() == "0")
                {
                    return;
                }

                string TARGET_CODE = "";
                switch (stateItem.ItemName)
                {
                case "01_1_158_1":
                    TARGET_CODE = "158";
                    break;

                case "01_1_200_1":
                    TARGET_CODE = "200";
                    break;

                default:
                    break;
                }
                PalletBillDal dal    = new PalletBillDal();
                string        Taskid = dal.CreatePalletOutBillTask(TARGET_CODE);
                TaskDal       task   = new TaskDal();
                DataTable     dt     = task.CraneTaskOut(string.Format("TASK_ID='{0}'", Taskid));
                if (dt.Rows.Count > 0)
                {
                    WriteToProcess("CraneProcess", "CraneInRequest", dt);
                }
            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_01.PalletOutRequestProcess:" + e.Message);
            }
        }
Example #4
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*
             * 一楼入库货位申请
             */
            try
            {
                string FromStation = "";
                string writeItem   = "";

                string ToStation = "";
                string TaskID    = "";
                object obj       = ObjectUtil.GetObject(stateItem.State);
                if (obj == null || obj.ToString() == "0")
                {
                    return;
                }


                string BarCode = ""; //读取PLC,获得产品编码
                switch (stateItem.ItemName)
                {
                case "01_1_218_1":
                    FromStation = "210";
                    ToStation   = "218";
                    writeItem   = "01_2_218_";
                    BarCode     = Common.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService("StockPLC_01", "01_1_218_2")));
                    break;

                case "01_1_110_1":
                    FromStation = "101";
                    ToStation   = "110";
                    writeItem   = "01_2_110_";
                    BarCode     = Common.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService("StockPLC_01", "01_1_110_2")));
                    break;

                case "01_1_126_1":
                    FromStation = "124";
                    ToStation   = "126";
                    writeItem   = "01_2_126_";
                    BarCode     = Common.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService("StockPLC_01", "01_1_126_2")));
                    break;

                case "01_1_131":                                        //空托盘组盘入
                    PalletBillDal Billdal = new PalletBillDal();
                    TaskID      = Billdal.CreatePalletInBillTask(true); //空托盘组入库单,生成Task.
                    FromStation = "124";
                    ToStation   = "131";
                    writeItem   = "01_2_131_";
                    break;

                case "PllateInRequest":
                    break;
                }

                string strWhere = "";
                if (TaskID == "")
                {
                    strWhere = string.Format("PRODUCT_BARCODE='{0}'", BarCode);
                }
                else
                {
                    strWhere = string.Format("TASK_ID='{0}'", TaskID);
                }

                TaskDal dal = new TaskDal();
                //分配货位,返回 0:TaskID,1:货位
                string[] CellValue = dal.AssignCell(strWhere, ToStation);//货位申请
                //返回任务号9999
                string        TaskNo = dal.InsertTaskDetail(CellValue[0]);
                SysStationDal sysDal = new SysStationDal();
                //获取task_detail行走路线item_no=3的信息,也就是堆垛机取货入库的动作
                DataTable dt = sysDal.GetSationInfo(CellValue[1], "11", "3");

                DataTable dtTask = dal.TaskInfo(string.Format("TASK_ID='{0}'", CellValue[0]));
                //更新任务开始执行
                dal.UpdateTaskState(CellValue[0], "1");
                //更新Product_State 货位
                ProductStateDal StateDal = new ProductStateDal();
                StateDal.UpdateProductCellCode(CellValue[0], CellValue[1]);
                //更新货位申请起始地址及目标地址。
                dal.UpdateTaskDetailStation(FromStation, ToStation, "2", string.Format("TASK_ID='{0}' AND ITEM_NO=1", CellValue[0]));

                //0:任务号 1:目标地址 2:货物类型
                int[] ServiceW = new int[3];
                ServiceW[0] = int.Parse(TaskNo); //
                ServiceW[1] = int.Parse(dt.Rows[0]["STATION_NO"].ToString());
                if (stateItem.ItemName == "01_1_131")
                {
                    ServiceW[2] = 2;
                }
                else
                {
                    ServiceW[2] = 1;
                }

                //PLC写入任务
                WriteToService("StockPLC_01", writeItem + "1", ServiceW);
                if (stateItem.ItemName == "01_1_131")
                {
                    WriteToService("StockPLC_01", writeItem + "2", 1);
                }
                else
                {
                    byte[] b = new byte[110];
                    Common.ConvertStringChar.stringToByte(dtTask.Rows[0]["PALLET_CODE"].ToString(), 110).CopyTo(b, 0);
                    //写入RFID
                    WriteToService("StockPLC_01", writeItem + "2", b);
                    //标识位置1
                    WriteToService("StockPLC_01", writeItem + "3", 1);
                }
                BillDal Bdal = new BillDal();
                Bdal.UpdateBillMasterStart(dtTask.Rows[0]["BILL_NO"].ToString(), ServiceW[2] == 1 ? true : false);
                dal.UpdateTaskDetailStation(ToStation, dt.Rows[0]["STATION_NO"].ToString(), "1", string.Format("TASK_ID='{0}' AND ITEM_NO=2", CellValue[0]));//更新货位到达入库站台,
            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_01.StockInRequestProcess:" + e.Message);
            }
        }