StorageSysyem.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.ComponentModel;
  2. using WCS.Core;
  3. using WCS.Entity.Protocol.BCR;
  4. using WCS.WorkEngineering.Extensions;
  5. using WCS.WorkEngineering.WebApi.Controllers;
  6. using WCS.WorkEngineering.Worlds;
  7. using WCS.WorkEngineering.Worlds.Logs;
  8. namespace WCS.WorkEngineering.Systems
  9. {
  10. /// <summary>
  11. /// </summary>
  12. [BelongTo(typeof(SortingMainLineWorld))]
  13. [Description("主线扫码")]
  14. public class StorageSysyem : DeviceSystem<Station>
  15. {
  16. protected override bool ParallelDo => true;
  17. protected override bool SaveLogsToFile => true;
  18. private BCRList BCRS = new BCRList();
  19. public StorageSysyem()
  20. {
  21. BCRS = Device.All.Where(v => v.HasProtocol(typeof(IBCR81))).Select(v => new BCR(v, World)).ToList() as BCRList;
  22. }
  23. public override void Do(Station obj)
  24. {
  25. obj.StorageStationIsForbid();
  26. //判断凭证号是否一致
  27. if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521{obj.Data2.VoucherNo}", LogLevelEnum.High);
  28. //设备是否停止运行
  29. if (obj.Data3.Status.HasFlag(Entity.Protocol.Station.StatusEunm.Run)) throw new KnownException("设备运行中", LogLevelEnum.Low);
  30. //获取条码
  31. var barcode = BCRS.GetBCRCode(obj.Entity.Code);
  32. //获取入库任务
  33. var info = WmsApi.I_WCS_GetInTask(barcode, obj.Entity.Code, true);
  34. }
  35. public override bool Select(Device dev)
  36. {
  37. return new int[] { 1701, 2101, 1717, 2117 }.Contains(int.Parse(dev.Code));
  38. }
  39. }
  40. }