OutboundSiteInteractionSystems.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using ServiceCenter.SqlSugars;
  2. using System.ComponentModel;
  3. using WCS.Core;
  4. using WCS.Entity;
  5. using WCS.WorkEngineering.Extensions;
  6. using WCS.WorkEngineering.WebApi.Controllers;
  7. using WCS.WorkEngineering.Worlds;
  8. using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
  9. namespace WCS.WorkEngineering.Systems
  10. {
  11. /// <summary>
  12. /// 出库站台交互
  13. /// </summary>
  14. [BelongTo(typeof(MainWorld))]
  15. [Description("出站站点交互系统")]
  16. public class OutboundSiteInteractionSystems : DeviceSystem<Station>
  17. {
  18. protected override bool ParallelDo => true;
  19. protected override bool SaveLogsToFile => true;
  20. public override void Do(Station obj)
  21. {
  22. var IsThereATask = false; //无任务
  23. #region 判断站点是否有任务
  24. //光电有货或有任务有货
  25. if (obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.PH_Status) || obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.OT_Status))
  26. {
  27. if (!obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.PH_Status))
  28. IsThereATask = true;
  29. }
  30. #endregion 判断站点是否有任务
  31. if (IsThereATask)
  32. {
  33. }
  34. else
  35. {
  36. if (obj.Entity.HasFlag(DeviceFlags.一楼出库口))
  37. {
  38. var any = false;
  39. SqlSugarHelper.Do(db =>
  40. {
  41. any = db.Default.Queryable<WCS_TaskInfo>().Any(v => v.AddrTo == obj.Entity.Code && v.Status <= Entity.TaskStatus.AGVExecution);
  42. });
  43. if (!any) WmsApi.ApplyStockOutTask(obj.Entity.Code);
  44. }
  45. }
  46. }
  47. public override bool Select(Device dev)
  48. {
  49. //return dev.Code == "1016";
  50. return dev.HasFlag(DeviceFlags.巷道口) && dev.HasFlag(DeviceFlags.出库);
  51. }
  52. }
  53. }