using AutoMapper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Communicator; using WIDESEAWCS_Core; using WIDESEAWCS_DTO.AGVInfo; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_Tasks.ConveyorLineJob.ConveyorLineExtend; namespace WIDESEAWCS_Tasks { public partial class AGVsignal { /// /// AGV与输送线交互 /// /// /// public static WebResponseContent AGVRequestin(ConveyorLineDTO conveyor) { WebResponseContent content = new WebResponseContent(); try { if (conveyor == null) throw new Exception("请求数据为空"); if (string.IsNullOrEmpty(conveyor.Station)) throw new Exception("站点编号为空"); CommonConveyorLine conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "输送线") as CommonConveyorLine; if (!conveyorLine.IsConnected) throw new Exception($"通讯连接错误,请检查网络"); switch (conveyor.Type) { case 1: content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, true, conveyor.Station); if (content.Status) content.Status = conveyorLine.GetValue(ConveyorLine_AGV.ConveyorLinePermitPut, conveyor.Station); break; case 2: content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station); break; case 3: content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, true, conveyor.Station); if (content.Status) content.Status = conveyorLine.GetValue(ConveyorLine_AGV.ConveyorLinePermitTake, conveyor.Station); break; case 4: content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station); break; default: throw new Exception($"类型有误[Type:{conveyor.Type}]"); } content = content.Status ? content.OK() : content.Error(); } catch (Exception ex) { content.Error(ex.Message); } return content; } public static WebResponseContent AGVRequestin(T conveyor) where T : ConveyorLineDTO, new() { WebResponseContent content = new WebResponseContent(); try { if (conveyor == null) throw new Exception("请求数据为空"); if (string.IsNullOrEmpty(conveyor.Station)) throw new Exception("站点编号为空"); CommonConveyorLine conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "输送线") as CommonConveyorLine; if (!conveyorLine.IsConnected) throw new Exception($"通讯连接错误,请检查网络"); switch (conveyor.Type) { case 1: content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, true, conveyor.Station); if (content.Status) content.Status = conveyorLine.GetValue(ConveyorLine_AGV.ConveyorLinePermitPut, conveyor.Station); break; case 2: content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station); break; case 3: content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, true, conveyor.Station); if (content.Status) content.Status = conveyorLine.GetValue(ConveyorLine_AGV.ConveyorLinePermitTake, conveyor.Station); break; case 4: content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station); break; default: throw new Exception($"类型有误[Type:{conveyor.Type}]"); } content = content.Status ? content.OK() : content.Error(); } catch (Exception ex) { content.Error(ex.Message); } return content; } } }