public ActionResult Edit(int id) { TaskDal taskDal = new TaskDal(); Task task = taskDal.GetTaskById(id); return(View(task)); }
/// <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])); //更新货位到达入库站台, //更新单据开始 } } }
public bool Stop(long taskid) { NodeTaskRuntimeInfo nodetask = TaskPool.Instance().Get(taskid.ToString()); if (nodetask == null) { LogHelper.WriteInfo("" + taskid + "任务没有在运行"); return(false); } if (Dispose(taskid, nodetask)) { try { TaskDal taskdal = new TaskDal(); TaskModel model = taskdal.GetById(GlobalConfig.TaskDataBaseConnectString, taskid.ToString()); model.TaskState = 0; model.TaskStopTime = DateTime.Now; taskdal.EditTask(GlobalConfig.TaskDataBaseConnectString, model); return(true); } catch (Exception ex) { LogHelper.WriteError(ex); return(false); } } return(false); }
public ActionResult Index() { TaskDal taskDal = new TaskDal(); List <Task> tasks = taskDal.List(); return(View(tasks)); }
private bool FinishPut() { try { if (CurrentTask != null) { if (CurrentTask.NextPositionID == CurrentTask.EndPositionID) { WriteFinishPutState(CurrentTask.NextPositionName, "0"); } else { TaskDal taskDal = new TaskDal(); string nextPositionName = taskDal.GetTaskNextTwoPosition(CurrentTask.ID); WriteFinishPutState(CurrentTask.NextPositionName, nextPositionName); } return(true); } return(false); } catch (Exception ex) { Logger.Error("SRM.FinishPut 出错,原因:" + ex.Message + "/n" + ex.StackTrace); } return(false); }
/// <summary> /// 生成装车任务 /// </summary> private void btnCreateTask_Click(object sender, EventArgs e) { try { object obj = null; if ((obj = this.InvokeScript(M_SUB_BILL)) == null) { MsgBox.Warn("未找到已排序订单!"); return; } List <SortMapReceiveDataEntity> list = JsonConvert.DeserializeObject <List <SortMapReceiveDataEntity> >(obj.ToString()); if (list == null || list.Count == 0) { MsgBox.Warn("未找到已排序订单"); return; } if (list.Count == this._list.Count || MsgBox.AskOK("还有未排序的订单,是否继续提交?") == DialogResult.OK) { string billIDs = string.Empty; List <OrderSortEntity> sortList = new List <OrderSortEntity>(); foreach (SortMapReceiveDataEntity data in list) { SOHeaderEntity header = this._list.Find(new Predicate <SOHeaderEntity>( (item) => { return(item.BillNO == data.orderId); })); if (header == null) { continue; } sortList.Add(new OrderSortEntity() { VehicleNo = ConvertUtil.ToString(this._vehicle.ID), BillNo = data.orderId, InVehicleSort = ConvertUtil.ToInt(data.paixu), PiecesQty = data.boxNum, Attri1 = 10 }); } // 存储排序记录 OrderSortDal.Insert(sortList); string selectedBillIDs = StringUtil.JoinBySign <SOHeaderEntity>(this._list, "BillID"); string errMsg = TaskDal.CreateLoadingTask(selectedBillIDs, ConvertUtil.ToString(this._vehicle.ID)); if (!string.IsNullOrEmpty(errMsg)) { throw new Exception(errMsg); } this.DialogResult = DialogResult.OK; } } catch (Exception ex) { MsgBox.Err("错误:" + ex.Message); } }
/// <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; } } }
public JsonResult JsonResult() { TaskDal task = new TaskDal(); List <Task> tasks = task.List(); JsonResult result = new JsonResult(); result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; result.Data = tasks; return(result); }
public void LoadDataAndBindGrid() { try { bindingSource1.DataSource = TaskDal.GetCurrentTask(); } catch (Exception ex) { MsgBox.Warn(ex.Message); } }
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); } }
public ActionResult Delete(int id) { TaskDal taskDal = new TaskDal(); if (taskDal.DelUser(id) > 0) { return(View("Index", taskDal.List())); } else { return(Content("删除失败")); } }
public ActionResult UpModel(Task task) { TaskDal taskDal = new TaskDal(); if (taskDal.UpUser(task) > 0) { return(RedirectToAction("Index")); } else { return(RedirectToAction("Edit")); } }
public ActionResult CreateModel(Task task) { TaskDal taskDal = new TaskDal(); if (taskDal.AddUser(task) > 0) { return(RedirectToAction("Index")); } else { return(RedirectToAction("Create")); } }
private bool CheckPositionTask() { TaskDal taskDal = new TaskDal(); if (CurrentTask != null && taskDal.CheckPositionTask(CurrentTask.CurrentPositionID)) { return(true); } else { Logger.Error(string.Format("{0}取货时检查到当前位置同时存在多个任务或无任务,而当前任务可能是错误或无效任务!", Name)); return(false); } }
internal void Read() { if (!ScanManagerView.InitCigaretteScanInfoStack()) { return; } TaskDal task = new TaskDal(); var table = task.FindStockInProduct(); if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { ProductDal productDal = new ProductDal(); CigaretteScanInfo info = productDal.FindProductForScan(Convert.ToString(row["product_code"])); if (info != null && !CigaretteScanInfoStack.Keys.Contains(Convert.ToString(row["product_code"]))) { info.ProductCode = Convert.ToString(row["product_code"]); info.ProductName = Convert.ToString(row["product_name"]); info.Quantity = Convert.ToInt32(row["task_quantity"]); info.Index = 0; info.State = "0"; lock (CigaretteScanInfoStack) { CigaretteScanInfoStack.Add(info.ProductCode, info); } } else if (info == null) { XtraMessageBox.Show(string.Format("当前卷烟 {0} : {1} 没有尺寸信息,请先行进行维护!", Convert.ToString(row["product_code"]), Convert.ToString(row["product_name"])) , "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { XtraMessageBox.Show(string.Format("当前卷烟 {0} : {1} 已有扫码任务!", Convert.ToString(row["product_code"]), Convert.ToString(row["product_name"])) , "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } AutomationContext.Write(memoryServiceName, memoryItemName, CigaretteScanInfoStack); } else { XtraMessageBox.Show("当前没有卷烟入库任务!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } Refresh(); }
/* 处理事项: * 倒库烟包 122 */ 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]; str[0] = "4"; str[1] = ""; str[2] = ""; TaskDal dal = new TaskDal(); //更具任务号,获取TaskID及BILL_NO 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]); //线程停止 while (FormDialog.ShowDialog(str, dtProductInfo) != "") { dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2"); dal.UpdateTaskState(strInfo[0], "2"); BillDal billdal = new BillDal(); billdal.UpdateInBillMasterFinished(strInfo[1], "1"); string writeItem = "01_2_122_"; 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写入任务 break; } ;//线程继续。 } catch (Exception ex) { Logger.Error("THOK.XC.Process.Process_01.MoveOutToStationProcess:" + ex.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 { object obj = ObjectUtil.GetObjects(stateItem.State); if (obj == null || obj.ToString() == "0") { return; } string TaskNo = obj.ToString().PadLeft(4, '0'); TaskDal dal = new TaskDal(); string[] strValue = dal.GetTaskInfo(TaskNo); string WriteItem = ""; string ReadItem = ""; switch (stateItem.ItemName) { case "02_1_340_1": WriteItem = "02_2_340"; ReadItem = "02_1_340_"; break; case "02_1_360_1": WriteItem = "02_2_360"; ReadItem = "02_1_360_"; break; } object objCheck = ObjectUtil.GetObject(WriteToService("StockPLC_02", ReadItem + "2")); if (objCheck.ToString() == "0") { string BarCode = Common.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService("StockPLC_02", ReadItem + "3"))); dal.UpdateTaskCheckBarCode(strValue[0], BarCode); } WriteToService("StockPLC_02", WriteItem + "_3", 1); } catch (Exception e) { Logger.Error("THOK.XC.Process.Process_02.CheckProcess,原因:" + e.Message); } }
/// <summary> /// 抽检,补料托盘入库; /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSpotCheck_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'); string[] str = new string[3]; if (int.Parse(strTaskNo) >= 9000 && int.Parse(strTaskNo) <= 9299) //补料 { str[0] = "1"; } else if (int.Parse(strTaskNo) >= 9300 && int.Parse(strTaskNo) <= 9499)//抽检 { str[0] = "2"; } 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_"; if (str[0] == "1" || str[0] == "2") //抽检,补料 { dal.UpdateTaskState(strInfo[0], "2"); BillDal billdal = new BillDal(); billdal.UpdateInBillMasterFinished(strInfo[1], "1"); Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", 1); //PLC写入任务 } break; } }
internal void New() { if (!ScanManagerView.InitCigaretteScanInfoStack()) { return; } TaskDal task = new TaskDal(); var table = task.FindStockInProduct(); if (table.Rows.Count > 0) { CreateScanTaskDialog createScanTaskDialog = new CreateScanTaskDialog(table); if (createScanTaskDialog.ShowDialog() == DialogResult.OK && createScanTaskDialog.Quantity > 0) { ProductDal productDal = new ProductDal(); CigaretteScanInfo info = productDal.FindProductForScan(createScanTaskDialog.SelectedCigaretteCode); if (info != null && !CigaretteScanInfoStack.Keys.Contains(createScanTaskDialog.SelectedCigaretteCode)) { info.ProductCode = createScanTaskDialog.SelectedCigaretteCode; info.ProductName = createScanTaskDialog.SelectedCigaretteName; info.Quantity = createScanTaskDialog.Quantity; info.Index = 0; info.State = "0"; lock (CigaretteScanInfoStack) { CigaretteScanInfoStack.Add(info.ProductCode, info); } AutomationContext.Write(memoryServiceName, memoryItemName, CigaretteScanInfoStack); } else if (info == null) { XtraMessageBox.Show("当前卷烟没有尺寸信息,请先行进行维护!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { XtraMessageBox.Show("当前卷烟已有扫码任务!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } else { XtraMessageBox.Show("当卷烟没有入库任务!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } Refresh(); }
/* 处理事项: * 空托盘组出库到达158,200 */ protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { try { object obj = ObjectUtil.GetObject(stateItem.State); if (obj == null || obj.ToString() == "0") { return; } string writeItem = ""; switch (stateItem.ItemName) { case "01_1_158_2": writeItem = "01_1_158_3"; break; case "01_1_200_2": writeItem = "01_1_200_3"; break; } string TaskNo = ((short)obj).ToString().PadLeft(4, '0'); //根据任务号,获取TaskID及BILL_NO TaskDal dal = new TaskDal(); string[] strInfo = dal.GetTaskInfo(TaskNo); if (!string.IsNullOrEmpty(strInfo[0])) { //更新路线状态 dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2"); dal.UpdateTaskState(strInfo[0], "2"); //更新BillMaster状态完成 BillDal billdal = new BillDal(); billdal.UpdateInBillMasterFinished(strInfo[1], "0"); //通知电控,空托盘组到达158,200 WriteToService("StockPLC_01", writeItem, 1); } } catch (Exception e) { Logger.Error("THOK.XC.Process.Process_01.PalletOutToStationProcess:" + e.Message); } }
/// <summary> /// 倒库出库 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnMoveOut_Click(object sender, EventArgs e) { object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_122")); if (obj == null || obj.ToString() == "0") { return; } string[] str = new string[3]; str[0] = "4"; str[1] = ""; str[2] = ""; TaskDal dal = new TaskDal(); //更具任务号,获取TaskID及BILL_NO string[] strInfo = dal.GetTaskInfo(obj.ToString().PadLeft(4, '0')); DataTable dt = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0])); DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]); ; //线程停止 while (FormDialog.ShowDialog(str, dtProductInfo) != "") { dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2"); dal.UpdateTaskState(strInfo[0], "2"); BillDal billdal = new BillDal(); billdal.UpdateInBillMasterFinished(strInfo[1], "1"); string writeItem = "01_2_122_"; int[] ServiceW = new int[3]; ServiceW[0] = int.Parse(strInfo[1]); //任务号 ServiceW[1] = 131; //目的地址 ServiceW[2] = 4; Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW); //PLC写入任务 Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "2", 1); //PLC写入任务 break; } }
public JsonResult LoginIn(string name, int pwd) { TaskDal dal = new TaskDal(); List <Task> tasks = dal.LoginSel(name, pwd); JsonResult jsonResult = new JsonResult(); if (tasks != null && tasks.Count >= 1) { string json = JsonConvert.SerializeObject(tasks.FirstOrDefault()); HttpCookie cookie = new HttpCookie("Login", Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(json))); Response.Cookies.Add(cookie); jsonResult.Data = new { data = json, state = "200" }; jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet; return(jsonResult); } else { jsonResult.Data = new { data = "未找到用户!", state = "403" }; return(jsonResult); } }
private void timer1_Tick(object sender, EventArgs e) { TaskDal taskDal = new TaskDal(); DataTable dt = taskDal.TaskOutToDetail(); DataTable dt2 = null; //if (IndexStar == 0) //{ // string strWhere = string.Format("TASK_TYPE IN ({0}) AND DETAIL.STATE IN ({1}) AND DETAIL.CRANE_NO IS NOT NULL ", "11,21,12,13,14", "0,1"); // dt2 = taskDal.CraneTaskIn(strWhere); // strWhere = string.Format("TASK_TYPE IN ({0}) AND DETAIL.STATE IN ({1}) AND DETAIL.CRANE_NO IS NOT NULL ", "22", "0,1,2"); // DataTable dtout = taskDal.CraneTaskIn(strWhere); // dt2.Merge(dtout); //} DataTable[] dtSend = new DataTable[2]; dtSend[0] = dt; dtSend[1] = dt2; Context.Processes["CraneProcess"].Start(); Context.ProcessDispatcher.WriteToProcess("CraneProcess", "StockOutRequest", dtSend); IndexStar++; }
/// <summary> /// 任务开启 /// </summary> /// <param name="taskid"></param> /// <returns></returns> public bool Start(long taskid) { LogHelper.WriteInfo("启动" + taskid + "任务"); try { NodeTaskRuntimeInfo nodetask = TaskPool.Instance().Get(taskid.ToString()); if (nodetask != null) { LogHelper.WriteInfo("" + taskid + "任务已经开启"); return(false); } TaskDal taskdal = new TaskDal(); nodetask = new NodeTaskRuntimeInfo(); nodetask.Tasklock = new TaskLock(); nodetask.TaskModel = taskdal.GetById(GlobalConfig.TaskDataBaseConnectString, taskid.ToString()); string filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, GlobalConfig.TaskDLL, nodetask.TaskModel.Id.ToString()); //任务dll在节点service存放地址 string srcpath = Path.Combine(nodetask.TaskModel.TaskClassPath, nodetask.TaskModel.TaskFileName); DeCompressionHelper.UnCompress(srcpath, filepath); AppDomainSetup setup = new AppDomainSetup(); setup.ShadowCopyFiles = "true"; setup.ApplicationBase = System.IO.Path.GetDirectoryName(filepath); var appdomain = AppDomain.CreateDomain(Path.Combine(filepath, nodetask.TaskModel.TaskClassNamespace), null, setup); BaseTaskDLL taskdll = (BaseTaskDLL)appdomain.CreateInstanceFromAndUnwrap(Path.Combine(filepath, nodetask.TaskModel.TaskFileName), nodetask.TaskModel.TaskClassNamespace); nodetask.TaskDLL = taskdll; TaskPool.Instance().Add(taskid.ToString(), nodetask); LogHelper.WriteInfo("节点开启成功"); return(true); } catch (Exception ex) { LogHelper.WriteError(ex); return(false); } }
private void btnStart_Click(object sender, EventArgs e) { try { this.btnStart.Enabled = false; this.btnStop.Enabled = true; TaskDal taskDal = new TaskDal(); //获取出1楼跟2楼的状态为0还未执行的堆垛机的出入库任务信息=dt DataTable dt = taskDal.TaskOutToDetail(); //获取出1楼跟2楼的状态为1正在执行的堆垛机的出入库任务信息=dt2 DataTable dt2 = null; if (IndexStar == 0) { //获取堆垛机的要执行或正在执行的所有任务 string strWhere = string.Format("TASK_TYPE IN ({0}) AND DETAIL.STATE IN ({1}) AND DETAIL.CRANE_NO IS NOT NULL ", "11,21,12,13,14", "0,1"); dt2 = taskDal.CraneTaskIn(strWhere); strWhere = string.Format("TASK_TYPE IN ({0}) AND DETAIL.STATE IN ({1}) AND DETAIL.CRANE_NO IS NOT NULL ", "22", "1"); DataTable dtout = taskDal.CraneTaskIn(strWhere); dt2.Merge(dtout); } DataTable[] dtSend = new DataTable[2]; dtSend[0] = dt; dtSend[1] = dt2; Context.Processes["CraneProcess"].Start(); Context.ProcessDispatcher.WriteToProcess("CraneProcess", "StockOutRequest", dtSend); IndexStar++; timer1.Enabled = true; timer1.Start(); timer1.Interval = 3000000; timer1.Tick += new EventHandler(timer1_Tick); } catch (Exception ex) { Logger.Error(ex.Message); } }
public void CancelTask() { if (ConnectState == true) { lock (this) { if (CurrentTask != null && !CurrentTask.GetFinish) { if (Write("b_O_Get_Permit", false) && Write("b_O_Put_Permit", false) && Write("b_I_Get_Finish", false) && Write("b_I_Put_Finish", false) && Write("b_O_Cancel_Task", true) && WriteCancelTaskState()) { TaskDal taskDal = new TaskDal(); taskDal.UpdateTaskStateToWaiting(CurrentTask.ID); CurrentTask = null; CurrentTaskFactory = null; XtraMessageBox.Show("当前任务已取消!"); } else { XtraMessageBox.Show("当前任务取消失败,可能无法连接到堆垛机或密集库PLC!"); } } else if (CurrentTask != null && CurrentTask.GetFinish) { XtraMessageBox.Show("当前任务已取货完成,请处理完故障后选择重发任务!"); } else { XtraMessageBox.Show("当前任务不存在,或不可取消!"); } } } }
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); } }
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); } }
private void CarStateChange(string Objstate, string CarNO, string CarItem, string WriteItem) { string CarNo = ""; if (Objstate == "2") //送货完成 { TaskDal dal = new TaskDal(); #region 送货完成,写入站台 object[] obj1 = ObjectUtil.GetObjects(WriteToService("StockPLC_02", CarItem + "_1")); //小车任务号,状态 object[] obj2 = ObjectUtil.GetObjects(WriteToService("StockPLC_02", CarItem + "_2")); //读取小车位置,目标地址 DataRow[] drsAddress = dtCarAddress.Select(string.Format("CAR_ADDRESS >'{0}' and CAR_ADDRESS<'{1}'", long.Parse(obj2[1].ToString()) - MaxDifferenceValue, long.Parse(obj2[1].ToString()) + MaxDifferenceValue)); if (drsAddress.Length > 0) { string strStationNo = drsAddress[0]["STATION_NO"].ToString(); string strItemName = ""; string strItemState = "02_1_" + strStationNo; if (strStationNo == "340" || strStationNo == "360") { strItemName = "StockOutCarFinishProcess"; } else { if (strStationNo == "301" || strStationNo == "305" || strStationNo == "309" || strStationNo == "313" || strStationNo == "317" || strStationNo == "323") { strItemName = "PalletToCarStationProcess"; } } if (strItemName != "") { WriteToProcess(strItemName, strItemState, obj1[0].ToString()); } } string FinshedTaskType = ""; if (dtCar == null) { return; } DataRow[] drexist = dtCar.Select(string.Format("CAR_NO='{0}' and STATE=1", CarNo));//获取小车开始执行完毕之后 if (drexist.Length > 0) { FinshedTaskType = drexist[0]["TASK_TYPE"].ToString(); dtCar.Rows.Remove(drexist[0]); } #endregion DataRow[] drs = dtCar.Select(string.Format("CAR_NO='{0}' and STATE=0", CarNo)); //有待分配的任务 if (drs.Length > 0) { #region 待分配的任务 DataRow dr = drs[0]; dr.BeginEdit(); dr["STATE"] = 1; dr.EndEdit(); int CurPostion = 0; int ToPostion = 0; string FromStation = ""; string ToStation = ""; string TargetCode = ""; if (dr["TASK_TYPE"].ToString() == "21") { CurPostion = int.Parse(dr["IN_STATION_ADDRESS"].ToString()); ToPostion = int.Parse(dr["STATION_NO_ADDRESS"].ToString()); FromStation = dr["IN_STATION"].ToString(); ToStation = dr["STATION_NO"].ToString(); } else { CurPostion = int.Parse(dr["STATION_NO_ADDRESS"].ToString()); ToPostion = int.Parse(dr["OUT_STATION_1_ADDRESS"].ToString()); FromStation = dr["STATION_NO"].ToString(); ToStation = dr["OUT_STATION_1"].ToString(); if (!dBillUseTarget.ContainsKey(dr["FORDERBILLNO"].ToString())) { dBillUseTarget.Add(dr["FORDERBILLNO"].ToString(), false); dBillTargetCode.Add(dr["FORDERBILLNO"].ToString(), ""); } if (dBillUseTarget[dr["FORDERBILLNO"].ToString()]) //已经使用过两次 { if (dBillTargetCode[dr["FORDERBILLNO"].ToString()] == "370") { ToPostion = int.Parse(dr["OUT_STATION_1_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_1"].ToString(); } else { ToPostion = int.Parse(dr["OUT_STATION_2_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_2"].ToString(); } } else { //制丝线1 正常走360,390拆盘有故障的时候,走340 if (dr["TARGET_CODE"].ToString().Trim() == "01") { int objstate = int.Parse(ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_390")).ToString()); if (objstate == 0) { ToPostion = int.Parse(dr["OUT_STATION_2_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_2"].ToString(); TargetCode = "390"; } else { objstate = int.Parse(ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_370")).ToString()); if (objstate == 0) { ToPostion = int.Parse(dr["OUT_STATION_1_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_1"].ToString(); TargetCode = "370"; } } } else //制丝线02,03 走340 如果370拆盘坏掉,走360至390处拆盘 { int objstate = int.Parse(ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_370")).ToString()); if (objstate == 0) { ToPostion = int.Parse(dr["OUT_STATION_1_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_1"].ToString(); TargetCode = "370"; } else { objstate = int.Parse(ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_390")).ToString()); if (objstate == 0) { ToStation = dr["OUT_STATION_2"].ToString(); ToPostion = int.Parse(dr["OUT_STATION_2_ADDRESS"].ToString()); TargetCode = "390"; } } } if (dBillTargetCode[dr["FORDERBILLNO"].ToString()] != "" && dBillTargetCode[dr["FORDERBILLNO"].ToString()] != TargetCode) { dBillUseTarget[dr["FORDERBILLNO"].ToString()] = true; dBillTargetCode[dr["FORDERBILLNO"].ToString()] = TargetCode; } else { dBillTargetCode[dr["FORDERBILLNO"].ToString()] = TargetCode; } } } int[] WriteValue = new int[2]; WriteValue[0] = CurPostion; WriteValue[1] = ToPostion; int TaskNo = int.Parse(dr["TASK_NO"].ToString()); int ProductType = int.Parse(dr["PRODUCT_TYPE"].ToString()); int[] WriteTaskValue = new int[2]; WriteTaskValue[0] = TaskNo; WriteTaskValue[1] = ProductType; string barcode = ""; string palletcode = ""; if (dr["PRODUCT_CODE"].ToString() != "0000") // { barcode = dr["PRODUCT_BARCODE"].ToString(); palletcode = dr["PALLET_CODE"].ToString(); } byte[] b = new byte[190]; Common.ConvertStringChar.stringToByte(barcode, 80).CopyTo(b, 0); Common.ConvertStringChar.stringToByte(palletcode, 110).CopyTo(b, 80); WriteToService("StockPLC_02", dr["WriteItem"].ToString() + "_1", WriteTaskValue); //任务号。 WriteToService("StockPLC_02", dr["WriteItem"].ToString() + "_2", WriteValue); //地址。 WriteToService("StockPLC_02", dr["WriteItem"].ToString() + "_3", b); WriteToService("StockPLC_02", dr["WriteItem"].ToString() + "_4", 1); dal.UpdateTaskDetailCar(FromStation, ToStation, "1", dr["CAR_NO"].ToString(), string.Format("TASK_ID='{0}' and ITEM_NO='{1}'", dr["TASK_ID"], dr["ITEM_NO"])); #endregion } else //小车空闲,且没任务。 { #region 小车空闲,且没任务。 按顺序查找任务 long CurPostion = 0; long ToPostion = -1; string FromStation = ""; string ToStation = ""; string TargetCode = ""; DataRow[] drsNotCar = dtCar.Select("CAR_NO='' and STATE=0", "Index"); if (drsNotCar.Length > 0) { for (int i = 0; i < drs.Length; i++) { DataRow dr = drs[i]; if (dr["TASK_TYPE"].ToString() == "21") { CurPostion = long.Parse(dr["IN_STATION_ADDRESS"].ToString()); ToPostion = long.Parse(dr["STATION_NO_ADDRESS"].ToString()); FromStation = dr["IN_STATION"].ToString(); ToStation = dr["STATION_NO"].ToString(); } else { CurPostion = long.Parse(dr["STATION_NO_ADDRESS"].ToString()); //判断使用哪个出口? ToPostion = long.Parse(dr["OUT_STATION_1_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_1"].ToString(); FromStation = dr["STATION_NO"].ToString(); ToPostion = -1; //判断二楼能否出库 bool blnCan = false; blnCan = dal.ProductCanToCar(dr["FORDERBILLNO"].ToString(), dr["FORDER"].ToString(), dr["IS_MIX"].ToString(), true, blnOutOrder); if (blnCan) { if (!dBillUseTarget.ContainsKey(dr["FORDERBILLNO"].ToString())) { dBillUseTarget.Add(dr["FORDERBILLNO"].ToString(), false); dBillTargetCode.Add(dr["FORDERBILLNO"].ToString(), ""); } if (dBillUseTarget[dr["FORDERBILLNO"].ToString()]) //已经使用过两次 { if (dBillTargetCode[dr["FORDERBILLNO"].ToString()] == "370") { ToPostion = long.Parse(dr["OUT_STATION_1_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_1"].ToString(); } else { ToPostion = long.Parse(dr["OUT_STATION_2_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_2"].ToString(); } } else { if (dr["TARGET_CODE"].ToString().Trim() == "01") { //读取370拆盘有无故障 int objstate = int.Parse(ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_390")).ToString()); if (objstate == 0) { ToPostion = long.Parse(dr["OUT_STATION_2_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_2"].ToString(); TargetCode = "390"; } else { //读取390拆盘有无故障 objstate = int.Parse(ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_370")).ToString()); if (objstate == 0) { ToPostion = long.Parse(dr["OUT_STATION_2_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_2"].ToString(); TargetCode = "370"; } } } else { int objstate = int.Parse(ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_370")).ToString()); if (objstate == 0) { ToPostion = long.Parse(dr["OUT_STATION_1_ADDRESS"].ToString()); ToStation = dr["OUT_STATION_1"].ToString(); TargetCode = "370"; } else { objstate = int.Parse(ObjectUtil.GetObject(WriteToService("StockPLC_02", "02_1_390")).ToString()); if (objstate == 0) { ToStation = dr["OUT_STATION_2"].ToString(); ToPostion = long.Parse(dr["OUT_STATION_2_ADDRESS"].ToString()); TargetCode = "390"; } } } if (dBillTargetCode[dr["FORDERBILLNO"].ToString()] != "" && dBillTargetCode[dr["FORDERBILLNO"].ToString()] != TargetCode) { dBillUseTarget[dr["FORDERBILLNO"].ToString()] = true; dBillTargetCode[dr["FORDERBILLNO"].ToString()] = TargetCode; } else { dBillTargetCode[dr["FORDERBILLNO"].ToString()] = TargetCode; } } } } if (ToPostion != -1) { long[] WriteValue = new long[2]; WriteValue[0] = CurPostion; WriteValue[1] = ToPostion; int TaskNo = int.Parse(dr["TASK_NO"].ToString()); int ProductType = int.Parse(dr["PRODUCT_TYPE"].ToString()); int[] WriteTaskValue = new int[2]; WriteTaskValue[0] = TaskNo; WriteTaskValue[1] = ProductType; string barcode = ""; string palletcode = ""; if (dr["PRODUCT_CODE"].ToString() != "0000") // { barcode = dr["PRODUCT_BARCODE"].ToString(); palletcode = dr["PALLET_CODE"].ToString(); } byte[] b = new byte[190]; Common.ConvertStringChar.stringToByte(barcode, 80).CopyTo(b, 0); Common.ConvertStringChar.stringToByte(palletcode, 110).CopyTo(b, 80); WriteToService("StockPLC_02", WriteItem + "_1", WriteTaskValue); //任务号。 WriteToService("StockPLC_02", WriteItem + "_2", WriteValue); //地址。 WriteToService("StockPLC_02", WriteItem + "_3", b); WriteToService("StockPLC_02", WriteItem + "_4", 1); dal.UpdateTaskDetailCar(FromStation, ToStation, "1", dr["CAR_NO"].ToString(), string.Format("TASK_ID='{0}' and ITEM_NO='{1}'", dr["TASK_ID"], dr["ITEM_NO"])); break; } } } #endregion #region 小车空闲,且找不到任务,则移动到最大目的地址的下一个工位 if (ToPostion == -1) { obj2 = ObjectUtil.GetObjects(WriteToService("StockPLC_02", CarItem + "_2"));//读取小车位置 //判断当前位 DataTable dtOrder = GetCarOrder(int.Parse(obj2[0].ToString())); DataRow[] drMax = dtOrder.Select("state=1", "ToStationOrder desc"); //按照最大目的地址倒排。最大目的地址大于当前位置,则下任务给小车移动到最大目的地址+1个工位。 if (drMax.Length > 0) { if ((int)drMax[0]["ToStation"] > int.Parse(obj2[1].ToString())) { string strNextStation = GetNextStation(obj2[1].ToString()); long[] WriteValue = new long[2]; WriteValue[0] = long.Parse(obj2[0].ToString());; WriteValue[1] = long.Parse(strNextStation);//下任务给小车移动到最大目的地址+1个工位。; int TaskNo = 9999; int ProductType = 5; int[] WriteTaskValue = new int[2]; WriteTaskValue[0] = TaskNo; WriteTaskValue[1] = ProductType; string barcode = ""; string palletcode = ""; byte[] b = new byte[190]; Common.ConvertStringChar.stringToByte(barcode, 80).CopyTo(b, 0); Common.ConvertStringChar.stringToByte(palletcode, 110).CopyTo(b, 80); WriteToService("StockPLC_02", WriteItem + "_1", WriteTaskValue); //任务号。 WriteToService("StockPLC_02", WriteItem + "_2", WriteValue); //地址。 WriteToService("StockPLC_02", WriteItem + "_3", b); WriteToService("StockPLC_02", WriteItem + "_4", 1); } } } #endregion } } else { #region 烟包接货完成,处理目前位置与目的地之间的空闲小车 if (Objstate == "1") // { object[] obj = ObjectUtil.GetObjects(WriteToService("StockPLC_02", CarItem + "_2")); //读取小车位置 //判断当前位置 DataTable dtOrder = GetCarOrder(int.Parse(obj[0].ToString())); DataRow[] drMax = dtOrder.Select(string.Format("state=0 and CurStation>={0} and CurStation<={1}", obj[1], obj[2]), "orderNo desc"); //按照最大目的地址倒排。最大目的地址大于当前位置,则下任务给小车移动到最大目的地址+1个工位。 if (drMax.Length > 0) { for (int i = 0; i < drMax.Length; i++) { string strNextStation = GetNextStation(obj[2].ToString()); long[] WriteValue = new long[2]; WriteValue[0] = long.Parse(drMax[i]["CurStation"].ToString()); WriteValue[1] = long.Parse(strNextStation);//下任务给小车移动到最大目的地址+1个工位。; int TaskNo = 9999; int ProductType = 5; int[] WriteTaskValue = new int[2]; WriteTaskValue[0] = TaskNo; WriteTaskValue[1] = ProductType; string barcode = ""; string palletcode = ""; byte[] b = new byte[190]; Common.ConvertStringChar.stringToBytes(barcode, 80).CopyTo(b, 0); Common.ConvertStringChar.stringToBytes(palletcode, 110).CopyTo(b, 80); WriteToService("StockPLC_02", drMax[i]["WriteItem"].ToString() + "_1", WriteTaskValue); //任务号。 WriteToService("StockPLC_02", drMax[i]["WriteItem"].ToString() + "_2", WriteValue); //地址。 WriteToService("StockPLC_02", drMax[i]["WriteItem"].ToString() + "_3", b); WriteToService("StockPLC_02", drMax[i]["WriteItem"].ToString() + "_4", 1); } } } #endregion } }