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.巷道口);
}
}
}