/// <summary> /// 事务处理 /// </summary> public void DoWork() { if (_isSuc) { return; } _taskDispatch = JTWcfHelper.WcfMainHelper.GetDispatch(Id); if (_taskDispatch == null) { DispatchOrderObj dis = new DispatchOrderObj(); dis.DisGuid = Id; dis.EndSite = _endSite; if (!string.IsNullOrEmpty(_startSite)) { dis.StartSiteList.Add(_startSite); } string back = ""; JTWcfHelper.WcfMainHelper.StartDispatch(dis, out back); } else { ///确定此时任务的AGV if (_agv == null) { _agv = new F_AGV(_taskDispatch.DisDevId); } ///此次调度任务已经完成 if (_taskDispatch.OrderStatue == ResultTypeEnum.Suc) { if (_operType == EnumOper.取货) { ///当前AGV的到达的地标 与 棍台绑定地标一致 if (_agv.Site == _plc.Site) { if (_plc.Sta_Material == EnumSta_Material.货 && _agv.Sta_Material == EnumSta_Material.无货) { _agv.SendOrdr(EnumType.料操作, EnumPara.反向启动); _plc.SendOrdr(EnumType.料操作, EnumPara.正向启动); } if (_plc.Sta_Material == EnumSta_Material.无货 && _agv.Sta_Material == EnumSta_Material.货) { _agv.SendOrdr(EnumType.料操作, EnumPara.辊台停止); _plc.SendOrdr(EnumType.料操作, EnumPara.辊台停止); if (_plc.Sta_Monitor == EnumSta_Monitor.停止) { ISetTaskSuc(); } } } } else if (_operType == EnumOper.放货) { ///当前AGV的到达的地标 与 棍台绑定地标一致 if (_agv.Site == _plc.Site) { } } else if (_operType == EnumOper.无动作) { ISetTaskSuc(); } } } }