桁架.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. using ServiceCenter.Extensions;
  2. using ServiceCenter.Logs;
  3. using ServiceCenter.SqlSugars;
  4. using System.ComponentModel;
  5. using WCS.Core;
  6. using WCS.Entity;
  7. using WCS.Entity.Protocol.Station;
  8. using WCS.Entity.Protocol.Truss;
  9. using WCS.WorkEngineering.Extensions;
  10. using WCS.WorkEngineering.Worlds;
  11. using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
  12. namespace WCS.WorkEngineering.Systems
  13. {
  14. /// <summary>
  15. /// 桁架
  16. /// </summary>
  17. [BelongTo(typeof(SortingPalletizingWorld))]
  18. [Description("桁架")]
  19. public class 桁架 : DeviceSystem<Truss>
  20. {
  21. protected override bool ParallelDo => true;
  22. protected override bool SaveLogsToFile => true;
  23. /// <summary>
  24. /// 取货点设备集合
  25. /// </summary>
  26. private readonly Dictionary<Device<IStation524, IStation523>, List<Device<IStation524, IStation523>>> _pickUpDevices = new();
  27. public override void Do(Truss obj)
  28. {
  29. if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.High);
  30. if (obj.Data2.CmdType == 1)
  31. {
  32. SqlSugarHelper.Do(_db =>
  33. {
  34. var db = _db.Default;
  35. List<int> ids = new List<int>() { obj.Data2.PalletizingRowId1, obj.Data2.PalletizingRowId2 };
  36. var palletizingRow = db.Queryable<WCS_PalletizingRow>().Includes(x => x.CacheLine, c => c.Locations).Includes(x => x.Locs).Where(x => ids.Contains(x.Id)).ToList();
  37. //更新行数据
  38. foreach (var pr in palletizingRow)
  39. {
  40. var cacheLine = db.Queryable<WCS_CacheLine>().Includes(x => x.Locations).Single(x => x.Id == pr.CacheLine.Id);
  41. //先更新对应的位信息
  42. try
  43. {
  44. foreach (var loc in pr.Locs)
  45. {
  46. var cacheLoc = cacheLine.Locations.Single(x => x.XYNo == loc.XYNo);
  47. cacheLoc = db.Queryable<WCS_CacheLineLoc>().Single(x => x.Id == cacheLoc.Id);
  48. loc.TaskId = cacheLoc.TaskId;
  49. loc.Finish = true;
  50. db.Updateable(loc).ExecuteCommand();
  51. db.Deleteable(cacheLoc);
  52. }
  53. }
  54. catch (Exception a)
  55. {
  56. Console.WriteLine(a);
  57. throw;
  58. }
  59. pr.Finish = true;
  60. db.Updateable(pr).ExecuteCommand();
  61. db.Deleteable(cacheLine).ExecuteCommand();
  62. }
  63. //更新层数据
  64. var layerId = palletizingRow.FirstOrDefault().PalletizingLayerId;
  65. var layer = db.Queryable<WCS_PalletizingLayer>().Includes(x => x.Rows).Single(x => x.Id == layerId);
  66. if (!layer.Rows.All(x => x.Finish)) return;
  67. layer.Finish = true;
  68. db.Updateable(layer).ExecuteCommand();
  69. });
  70. obj.Data.CmdType = 1;
  71. obj.Data.DestPosition_1 = 0;
  72. obj.Data.TargetPallte1 = 0;
  73. obj.Data.Task1_1 = 0;
  74. obj.Data.Dest1_1 = 0;
  75. obj.Data.Task1_2 = 0;
  76. obj.Data.Dest1_2 = 0;
  77. obj.Data.Task1_3 = 0;
  78. obj.Data.Dest1_3 = 0;
  79. obj.Data.Task1_4 = 0;
  80. obj.Data.Dest1_4 = 0;
  81. obj.Data.Task1_5 = 0;
  82. obj.Data.Dest1_5 = 0;
  83. obj.Data.TaskSum1 = 0;
  84. obj.Data.PalletizingRowId1 = 0;
  85. obj.Data.DestPosition_2 = 0;
  86. obj.Data.TargetPallte2 = 0;
  87. obj.Data.Task2_1 = 0;
  88. obj.Data.Dest2_1 = 0;
  89. obj.Data.Task2_2 = 0;
  90. obj.Data.Dest2_2 = 0;
  91. obj.Data.Task2_3 = 0;
  92. obj.Data.Dest2_3 = 0;
  93. obj.Data.Task2_4 = 0;
  94. obj.Data.Dest2_4 = 0;
  95. obj.Data.Task2_5 = 0;
  96. obj.Data.Dest2_5 = 0;
  97. obj.Data.TaskSum2 = 0;
  98. obj.Data.PalletizingRowId2 = 0;
  99. }
  100. if (obj.Data2.CmdType == 0) obj.Data.CmdType = 0;
  101. if (obj.Data2.CmdType != 0 || obj.Data.CmdType != 0) return;
  102. if (obj.Data2.Status != TrussStatus.Idle) return;
  103. //查找所有的可用开始搬运的线体
  104. var pickUpDevices = _pickUpDevices.Where(x => x.Key.Data2.Status1.HasFlag(StationStatus1.IsLock)).ToList();
  105. List<WCS_PalletizingRow> palletizingRowList = null;
  106. WCS_Palletizing palletizing = null;
  107. SqlSugarHelper.Do(_db =>
  108. {
  109. var db = _db.Default;
  110. //找到有还有层没结束的码垛记录信息,有对应托盘
  111. var palletizingLsit = db.Queryable<WCS_Palletizing>().Includes(x => x.Layers, r => r.Rows, l => l.Locs)
  112. .Where(x => !x.Finish)
  113. .Where(x => x.Layers.Any(l => !l.Finish) && x.PalletizingStation != null).ToList();
  114. //筛选出目标位置有光电的码垛记录信息
  115. var devCode = palletizingLsit.Select(x => x.PalletizingStation);
  116. var devList = Device.All.Where(x => devCode.Contains(x.Code)).Select(x => new Device<IStation520, IStation521, IStation523>(x, World)).ToList();
  117. devList = devList.Where(x => x.Data3.Status.HasFlag(StationStatus.PH_Status)).ToList();
  118. devCode = devList.Select(x => x.Entity.Code);
  119. palletizingLsit = palletizingLsit.Where(x => devCode.Contains(x.PalletizingStation)).ToList(); //可以放货的目标托盘
  120. //可以取货的码垛信息
  121. var pickUpCode = _pickUpDevices.Select(x => x.Key.Entity.Code);
  122. palletizingLsit = palletizingLsit.Where(x => x.Layers
  123. .Where(w => !w.Finish)
  124. .SelectMany(w => w.Rows)
  125. .Where(v => !v.Finish).Any(w => pickUpCode.Contains(w.LineCode))).ToList();
  126. //var palletizingInfo = palletizingLsit.FirstOrDefault();
  127. //if (palletizingInfo == null) return;
  128. ////筛选出已经预锁的行
  129. //var palletizingRow = palletizingInfo.Layers.SelectMany(x => x.Rows).Where(x => x is { Finish: false, IsEmpty: false, LineCode: not null }).Where(x => pickUpDevices.Select(p => p.Key.Entity.Code).Contains(x.LineCode)).OrderBy(x => x.RowNo).Take(2).ToList();
  130. //if (palletizingRow.Count == 2 && palletizingRow[0].LineCode == palletizingRow[1].LineCode) palletizingRow = palletizingRow!.Take(1).ToList();
  131. //if (palletizingRow.Count == 2 && palletizingRow[0].RowNo + 1 != palletizingRow[1].RowNo) palletizingRow = palletizingRow!.Take(1).ToList();
  132. ////对行对应的缓存信息进行预释放处理
  133. //foreach (var cacheLine in palletizingRow.Select(wcsPalletizingRow => db.Queryable<WCS_CacheLine>().Single(x => x.Id == wcsPalletizingRow.CacheLineId)))
  134. //{
  135. // cacheLine.IsTruss = true;
  136. // db.Updateable(cacheLine).ExecuteCommand();
  137. //}
  138. //palletizingRowList = palletizingRow;
  139. //palletizing = palletizingInfo;
  140. foreach (var palletizingInfo in palletizingLsit)
  141. {
  142. //已分配完成,或无信息。进入下一次迭代
  143. if (palletizingInfo == null || (palletizingRowList != null && palletizing != null)) continue;
  144. //筛选出已经预锁的行
  145. var palletizingRow = palletizingInfo.Layers.Where(x => !x.Finish)
  146. .MinBy(x => x.LayerNo)
  147. .Rows
  148. .Where(x => x is { Finish: false, IsEmpty: false, LineCode: not null })
  149. .Where(x => pickUpDevices.Select(p => p.Key.Entity.Code).Contains(x.LineCode))
  150. .OrderBy(x => x.RowNo)
  151. .Take(2)
  152. .ToList();
  153. //无可用行,进入下一次迭代
  154. if (!palletizingRow.Any()) continue;
  155. //两个任务取货线体号相同时,只执行一个任务
  156. if (palletizingRow.Count == 2 && palletizingRow[0].LineCode == palletizingRow[1].LineCode) palletizingRow = palletizingRow!.Take(1).ToList();
  157. //两个行号,差值大于一时,只执行一个任务
  158. if (palletizingRow.Count == 2 && palletizingRow[0].RowNo + 1 != palletizingRow[1].RowNo) palletizingRow = palletizingRow!.Take(1).ToList();
  159. //对行对应的缓存信息进行预释放处理
  160. foreach (var cacheLine in palletizingRow.Select(wcsPalletizingRow => db.Queryable<WCS_CacheLine>().Single(x => x.Id == wcsPalletizingRow.CacheLineId)))
  161. {
  162. cacheLine.IsTruss = true;
  163. db.Updateable(cacheLine).ExecuteCommand();
  164. }
  165. palletizingRowList = palletizingRow;
  166. palletizing = palletizingInfo;
  167. }
  168. });
  169. if (palletizingRowList == null) return;
  170. if (!palletizingRowList.Any()) return;
  171. for (var i = 0; i < palletizingRowList.Count; i++)
  172. {
  173. var palletizingRow = palletizingRowList[i];
  174. var locs = palletizingRow.Locs.OrderBy(x => x.XYNo.ToInt()).ToArray();
  175. var devs = pickUpDevices.FirstOrDefault(x => x.Key.Entity.Code == palletizingRow.LineCode).Value
  176. .OrderBy(x => x.Entity.Code).ToArray();
  177. switch (i)
  178. {
  179. case 0:
  180. obj.Data.DestPosition_1 = palletizingRow.LineCode!.ToShort();
  181. obj.Data.TargetPallte1 = palletizing.PalletizingStation!.ToShort();
  182. if (locs.Length >= 1)
  183. {
  184. obj.Data.Task1_1 = devs[0].Data.TaskNumber;
  185. obj.Data.Dest1_1 = locs[0].XYNo.ToShort();
  186. }
  187. if (locs.Length >= 2)
  188. {
  189. obj.Data.Task1_2 = devs[1].Data.TaskNumber;
  190. obj.Data.Dest1_2 = locs[1].XYNo.ToShort();
  191. }
  192. if (locs.Length >= 3)
  193. {
  194. obj.Data.Task1_3 = devs[2].Data.TaskNumber;
  195. obj.Data.Dest1_3 = locs[2].XYNo.ToShort();
  196. }
  197. if (locs.Length >= 4)
  198. {
  199. obj.Data.Task1_4 = devs[3].Data.TaskNumber;
  200. obj.Data.Dest1_4 = locs[3].XYNo.ToShort();
  201. }
  202. if (locs.Length == 5)
  203. {
  204. obj.Data.Task1_5 = devs[4].Data.TaskNumber;
  205. obj.Data.Dest1_5 = locs[4].XYNo.ToShort();
  206. }
  207. obj.Data.TaskSum1 = palletizingRow.QtyMaxCount.ToShort();
  208. obj.Data.PalletizingRowId1 = palletizingRow.Id;
  209. break;
  210. case 1:
  211. obj.Data.DestPosition_2 = palletizingRow.LineCode!.ToShort();
  212. obj.Data.TargetPallte2 = palletizing.PalletizingStation!.ToShort();
  213. if (locs.Length >= 1)
  214. {
  215. obj.Data.Task2_1 = devs[0].Data.TaskNumber;
  216. obj.Data.Dest2_1 = locs[0].XYNo.ToShort();
  217. }
  218. if (locs.Length >= 2)
  219. {
  220. obj.Data.Task2_2 = devs[1].Data.TaskNumber;
  221. obj.Data.Dest2_2 = locs[1].XYNo.ToShort();
  222. }
  223. if (locs.Length >= 3)
  224. {
  225. obj.Data.Task2_3 = devs[2].Data.TaskNumber;
  226. obj.Data.Dest2_3 = locs[2].XYNo.ToShort();
  227. }
  228. if (locs.Length >= 4)
  229. {
  230. obj.Data.Task2_4 = devs[3].Data.TaskNumber;
  231. obj.Data.Dest2_4 = locs[3].XYNo.ToShort();
  232. }
  233. if (locs.Length == 5)
  234. {
  235. obj.Data.Task2_5 = devs[4].Data.TaskNumber;
  236. obj.Data.Dest2_5 = locs[4].XYNo.ToShort();
  237. }
  238. obj.Data.TaskSum2 = palletizingRow.QtyMaxCount.ToShort();
  239. obj.Data.PalletizingRowId2 = palletizingRow.Id;
  240. break;
  241. }
  242. }
  243. if (palletizingRowList.Count == 1)
  244. {
  245. }
  246. obj.Data.VoucherNo++;
  247. }
  248. public override bool Select(Device dev)
  249. {
  250. return dev.HasFlag(DeviceFlags.桁架);
  251. }
  252. public 桁架()
  253. {
  254. var trussList = Device.All.Where(x => x.HasFlag(DeviceFlags.桁架));
  255. foreach (var truss in trussList)
  256. {
  257. switch (truss.Code)
  258. {
  259. case "Truss1":
  260. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "461"), World), Device.All.Where(x => x.Code is "461" or "462" or "463" or "464" or "465").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  261. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "475"), World), Device.All.Where(x => x.Code is "475" or "476" or "477" or "478" or "479").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  262. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "489"), World), Device.All.Where(x => x.Code is "490" or "491" or "492" or "493" or "489").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  263. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "503"), World), Device.All.Where(x => x.Code is "503" or "504" or "505" or "506" or "507").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  264. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "517"), World), Device.All.Where(x => x.Code is "517" or "518" or "519" or "520" or "521").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  265. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "531"), World), Device.All.Where(x => x.Code is "532" or "533" or "534" or "535" or "531").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  266. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "545"), World), Device.All.Where(x => x.Code is "546" or "547" or "548" or "549" or "545").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  267. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "559"), World), Device.All.Where(x => x.Code is "559" or "560" or "561" or "562" or "563").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  268. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "573"), World), Device.All.Where(x => x.Code is "573" or "574" or "575" or "576" or "577").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  269. _pickUpDevices.Add(new Device<IStation524, IStation523>(Device.All.First(x => x.Code == "586"), World), Device.All.Where(x => x.Code is "586" or "587" or "588" or "589" or "590").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  270. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  271. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  272. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  273. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  274. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  275. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  276. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  277. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  278. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  279. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  280. break;
  281. case "Truss2":
  282. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  283. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  284. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  285. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  286. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  287. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  288. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  289. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  290. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  291. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  292. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  293. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  294. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  295. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  296. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  297. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  298. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  299. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  300. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  301. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  302. break;
  303. case "Truss3":
  304. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  305. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  306. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  307. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  308. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  309. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  310. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  311. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  312. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  313. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  314. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  315. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  316. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  317. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  318. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  319. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  320. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  321. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  322. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  323. //_pickUpDevices.Add(Device.All.First(x => x.Code == ""), Device.All.Where(x => x.Code is "" or "" or "" or "" or "").Select(x => new Device<IStation524, IStation523>(x, World)).ToList());
  324. break;
  325. }
  326. }
  327. }
  328. }
  329. }