/// <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])); //更新货位到达入库站台, //更新单据开始 } } }
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); } }
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); } }
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); } }