using ServiceCenter.SqlSugars; using System.ComponentModel; using WCS.Core; using WCS.Entity; using WCS.WorkEngineering.Extensions; using WCS.WorkEngineering.WebApi.Controllers; using WCS.WorkEngineering.Worlds; using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags; namespace WCS.WorkEngineering.Systems { /// /// Agv交互系统 /// [BelongTo(typeof(MainWorld))] [Description("Agv交互系统")] public class AgvSystems : DeviceSystem { protected override bool ParallelDo => true; protected override bool SaveLogsToFile => true; public override void Do(Station obj) { if (obj.Entity.HasFlag(DeviceFlags.出库)) { SqlSugarHelper.Do(db => { //获取所有未结束的AGV任务 var agvTaks = db.Default.Queryable().Where(v => v.Status <= AGVTaskStatus.MissionCompleted && v.Position == obj.Entity.Code).SplitTable(tabs => tabs.Take(3)).ToList(); foreach (var agv in agvTaks) { switch (agv.Status) { case AGVTaskStatus.RequestOrPermission2: //调继续执行任务接口 var res = AgvApi.ContinueTask(agv.AgvID, ""); agv.Status = AGVTaskStatus.Complete2; break; } db.Default.Updateable(agv).AddQueue(); } db.Default.SaveQueues(); }); } else if (obj.Entity.HasFlag(DeviceFlags.入库)) { SqlSugarHelper.Do(db => { //获取所有未结束的AGV任务 var agvTaks = db.Default.Queryable().Where(v => v.Status <= AGVTaskStatus.MissionCompleted && v.Position == obj.Entity.Code).SplitTable(tabs => tabs.Take(3)).ToList(); foreach (var agv in agvTaks) { switch (agv.Status) { case AGVTaskStatus.RequestOrPermission1: //调继续执行任务接口 AgvApi.ContinueTask(agv.AgvID, ""); agv.Status = AGVTaskStatus.Complete1; break; case AGVTaskStatus.RequestOrPermission2: //调继续执行任务接口 AgvApi.ContinueTask(agv.AgvID, ""); agv.Status = AGVTaskStatus.Complete2; break; } db.Default.Updateable(agv).AddQueue(); } db.Default.SaveQueues(); }); } } public override bool Select(Device dev) { return dev.HasFlag(DeviceFlags.巷道口); } } }