| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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
- {
- /// <summary>
- /// Agv交互系统
- /// </summary>
- [BelongTo(typeof(MainWorld))]
- [Description("Agv交互系统")]
- public class AgvSystems : DeviceSystem<Station>
- {
- 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<WCS_AgvTaskInfo>().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<WCS_AgvTaskInfo>().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.巷道口);
- }
- }
- }
|