扫码位分配.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using ServiceCenter.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using WCS.Core;
  9. using WCS.Entity.Protocol.Station;
  10. using WCS.WorkEngineering.Extensions;
  11. using WCS.WorkEngineering.Worlds;
  12. namespace WCS.WorkEngineering.Systems.重绕区
  13. {
  14. /// <summary>
  15. /// 扫码位分配
  16. /// </summary>
  17. [BelongTo(typeof(RewindWorld))]
  18. [Description("扫码位分配")]
  19. public class 扫码位分配 : DeviceSystem<Device<IStation520, IStation521, IStation523>>
  20. {
  21. protected override bool ParallelDo => true;
  22. public override void Do(Device<IStation520, IStation521, IStation523> obj)
  23. {
  24. if (obj.Data.VoucherNo != obj.Data2.VoucherNo)
  25. {
  26. World.Log($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}");
  27. return;
  28. }
  29. if (obj.Data3.Status.HasFlag(StationStatus.Run))
  30. {
  31. World.Log("设备运行中");
  32. return;
  33. }
  34. ;
  35. if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status))
  36. {
  37. World.Log("站台货物信息与实际占用不一致");
  38. return;
  39. }
  40. if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status))
  41. {
  42. World.Log("无光电");
  43. return;
  44. }
  45. ;
  46. if (obj.Data2.Request != 1)
  47. {
  48. World.Log("无请求");
  49. return;
  50. }
  51. List<string> stations = new List<string> {"9119","9120","9121","9122","9123","9124","9125","9130", "9131", "9132", "9133", "9134", "9135", "9136", "9141",
  52. "9142", "9143", "9144", "9145", "9146", "9147"};
  53. List<string> targetStations = new List<string> { "9125", "9136", "9147" };
  54. var devs = Device.All.Where(x => stations.Contains(x.Code)).Select(x =>
  55. new Device<IStation520, IStation521, IStation523>(x, World));
  56. devs = devs.Where(x => targetStations.Contains(x.Data2.GoodsEnd.ToString())).ToList();
  57. short next = 9125;//9147;
  58. var num_9125 = devs.Count(x => x.Data2.GoodsEnd.ToString() == "9125");
  59. var num_9136 = devs.Count(x => x.Data2.GoodsEnd.ToString() == "9136");
  60. var num_9147 = devs.Count(x => x.Data2.GoodsEnd.ToString() == "9147");
  61. //if (devs.Count() == 0)
  62. //{
  63. // next = 9136;
  64. //}
  65. //else
  66. //{
  67. // next = num_9136 <= num_9125 ? num_9136.ToShort() : num_9125.ToShort();//ComputeAddto(num_9125, num_9136, num_9147);
  68. //}
  69. obj.Data.TaskNumber = obj.Entity.Code.ToShort();
  70. obj.Data.TaskNumber = obj.Entity.Code.ToShort();
  71. obj.Data.GoodsStart = obj.Entity.Code.ToShort();
  72. obj.Data.GoodsStart = obj.Entity.Code.ToShort();
  73. obj.Data.GoodsEnd = next;
  74. obj.Data.GoodsEnd = next;
  75. obj.Data.SetVoucherNo();
  76. }
  77. public short ComputeAddto(int num_9125, int num_9136, int num_9147)
  78. {
  79. if (num_9125 < num_9136 && num_9125 < num_9147)
  80. {
  81. return num_9125.ToShort();
  82. }
  83. else if (num_9136 < num_9125 && num_9136 < num_9147)
  84. {
  85. return num_9136.ToShort();
  86. }
  87. else
  88. {
  89. return num_9147.ToShort();
  90. }
  91. }
  92. public override bool Select(Device dev)
  93. {
  94. return dev.Code is "9115" or "9021";
  95. }
  96. }
  97. }