| 
														
															@@ -17,11 +17,11 @@ using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 namespace WCS.WorkEngineering.Systems 
														 | 
														
														 | 
														
															 namespace WCS.WorkEngineering.Systems 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     /// <summary> 
														 | 
														
														 | 
														
															     /// <summary> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    ///  扫码入库 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    ///  库尾入库 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     /// </summary> 
														 | 
														
														 | 
														
															     /// </summary> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     [BelongTo(typeof(MainWorld))] 
														 | 
														
														 | 
														
															     [BelongTo(typeof(MainWorld))] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    [Description("扫码入库")] 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    public class 扫码入库 : DeviceSystem<Device<IStation520, IStation521, IStation523, IStation91, IBCR81>> 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    [Description("库尾入库")] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public class 库尾入库 : DeviceSystem<Device<IStation520, IStation521, IStation523, IStation91, IBCR81>> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     { 
														 | 
														
														 | 
														
															     { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         protected override bool ParallelDo => true; 
														 | 
														
														 | 
														
															         protected override bool ParallelDo => true; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -30,7 +30,7 @@ namespace WCS.WorkEngineering.Systems 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private List<Station> devs = new List<Station>(); 
														 | 
														
														 | 
														
															         private List<Station> devs = new List<Station>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         private List<SRM> srms = new List<SRM>(); 
														 | 
														
														 | 
														
															         private List<SRM> srms = new List<SRM>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        public 扫码入库() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        public 库尾入库() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             devs = Device.All.Where(v => v.HasFlag(DeviceFlags.入库)).Select(v => new Station(v, this.World)).ToList(); 
														 | 
														
														 | 
														
															             devs = Device.All.Where(v => v.HasFlag(DeviceFlags.入库)).Select(v => new Station(v, this.World)).ToList(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             srms = Device.All.Where(v => v.HasProtocol(typeof(ISRM520))).Select(v => new SRM(v, this.World)).ToList(); 
														 | 
														
														 | 
														
															             srms = Device.All.Where(v => v.HasProtocol(typeof(ISRM520))).Select(v => new SRM(v, this.World)).ToList(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -38,15 +38,12 @@ namespace WCS.WorkEngineering.Systems 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         public override void Do(Device<IStation520, IStation521, IStation523, IStation91, IBCR81> obj) 
														 | 
														
														 | 
														
															         public override void Do(Device<IStation520, IStation521, IStation523, IStation91, IBCR81> obj) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             obj.入库站点是否被禁止(); 
														 | 
														
														 | 
														
															             obj.入库站点是否被禁止(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             obj.入库站点是否满足执行条件(); 
														 | 
														
														 | 
														
															             obj.入库站点是否满足执行条件(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (obj.Data2.Request != 1.ToShort()) throw new KnownException("无请求", LogLevelEnum.Mid); 
														 | 
														
														 | 
														
															             if (obj.Data2.Request != 1.ToShort()) throw new KnownException("无请求", LogLevelEnum.Mid); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status)) throw new KnownException("无光电", LogLevelEnum.Mid); 
														 | 
														
														 | 
														
															             if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status)) throw new KnownException("无光电", LogLevelEnum.Mid); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             //开始读取条码 
														 | 
														
														 | 
														
															             //开始读取条码 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             var bcr = obj.Data5.GetBCRCode(); 
														 | 
														
														 | 
														
															             var bcr = obj.Data5.GetBCRCode(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             WCS_TaskInfo task = null; 
														 | 
														
														 | 
														
															             WCS_TaskInfo task = null; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -77,13 +74,7 @@ namespace WCS.WorkEngineering.Systems 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     //筛选出可用站台c 
														 | 
														
														 | 
														
															                     //筛选出可用站台c 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     stations = stations.Where(v => v.Data.VoucherNo == v.Data2.VoucherNo && v.Data3.Status.HasFlag(StationStatus.Auto)) 
														 | 
														
														 | 
														
															                     stations = stations.Where(v => v.Data.VoucherNo == v.Data2.VoucherNo && v.Data3.Status.HasFlag(StationStatus.Auto)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                        .Where(v => !v.Data3.Status.HasFlag(StationStatus.PH_Status) && !v.Data3.Status.HasFlag(StationStatus.OT_Status)) 
														 | 
														
														 | 
														
															                                        .Where(v => !v.Data3.Status.HasFlag(StationStatus.PH_Status) && !v.Data3.Status.HasFlag(StationStatus.OT_Status)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                                       .Where(v => !v.Data3.Status.HasFlag(StationStatus.Run)).ToList(); // 筛选出可用站台 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    var count = stations.Where(v => v.Data.VoucherNo == v.Data2.VoucherNo && v.Data3.Status.HasFlag(StationStatus.Auto)) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                                       .Where(v => !v.Data3.Status.HasFlag(StationStatus.PH_Status) && !v.Data3.Status.HasFlag(StationStatus.OT_Status)) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                                       .Where(v => !v.Data3.Status.HasFlag(StationStatus.Run)).Count(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    var count1 = stations.Where(v => v.Data.VoucherNo == v.Data2.VoucherNo && v.Data3.Status.HasFlag(StationStatus.Auto)) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                                       .Where(v => !v.Data3.Status.HasFlag(StationStatus.PH_Status) && !v.Data3.Status.HasFlag(StationStatus.OT_Status)) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                                       .Where(v => !v.Data3.Status.HasFlag(StationStatus.Run)).ToArray(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                       .Where(v => !v.Data3.Status.HasFlag(StationStatus.Run)).ToList(); // 筛选出可用站台                     
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     if (stations == null) 
														 | 
														
														 | 
														
															                     if (stations == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     { 
														 | 
														
														 | 
														
															                     { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         throw new KnownException($"{obj.Entity.Code}无可用放货站台", LogLevelEnum.High); 
														 | 
														
														 | 
														
															                         throw new KnownException($"{obj.Entity.Code}无可用放货站台", LogLevelEnum.High); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -98,7 +89,7 @@ namespace WCS.WorkEngineering.Systems 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                   .MinBy(v => tunnelNo.IndexOf(v.Entity.Code)); //按照巷道优先级排序 
														 | 
														
														 | 
														
															                                   .MinBy(v => tunnelNo.IndexOf(v.Entity.Code)); //按照巷道优先级排序 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     if (srm == null) 
														 | 
														
														 | 
														
															                     if (srm == null) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     {                         
														 | 
														
														 | 
														
															                     {                         
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        throw new Exception($"任务{taskInfo.ID}无可用堆垛机{count}{count1[0].Entity.Code}"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        throw new Exception($"任务{taskInfo.ID}无可用堆垛机"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     }                         
														 | 
														
														 | 
														
															                     }                         
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     //筛选出堆垛机的取货站台 
														 | 
														
														 | 
														
															                     //筛选出堆垛机的取货站台 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     var nextPos = stations.FirstOrDefault(v => v.Entity.Sources.Where(t => t.IsTunnel()).Select(t => t.Sources).SelectMany(v => v) //获取所有巷道 
														 | 
														
														 | 
														
															                     var nextPos = stations.FirstOrDefault(v => v.Entity.Sources.Where(t => t.IsTunnel()).Select(t => t.Sources).SelectMany(v => v) //获取所有巷道 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -129,22 +120,15 @@ namespace WCS.WorkEngineering.Systems 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     taskInfo.AddWCS_TASK_DTL(_db, obj.Entity.Code, taskInfo.AddrNext, $"完成巷道分配,分配至{taskInfo.Device}"); 
														 | 
														
														 | 
														
															                     taskInfo.AddWCS_TASK_DTL(_db, obj.Entity.Code, taskInfo.AddrNext, $"完成巷道分配,分配至{taskInfo.Device}"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     taskInfo.updateRedisHash(); 
														 | 
														
														 | 
														
															                     taskInfo.updateRedisHash(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     task = taskInfo; 
														 | 
														
														 | 
														
															                     task = taskInfo; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    if (task == null) return; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                     
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                }                
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    if (task == null) return;                     
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                }                              
														 | 
													
												
											
												
													
														| 
														 | 
														
															             }); 
														 | 
														
														 | 
														
															             }); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             obj.Data.TaskNumber = task.ID; 
														 | 
														
														 | 
														
															             obj.Data.TaskNumber = task.ID; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             obj.Data.GoodsStart = obj.Entity.Code.ToShort(); 
														 | 
														
														 | 
														
															             obj.Data.GoodsStart = obj.Entity.Code.ToShort(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             obj.Data.GoodsEnd = task.SrmStation.ToShort(); 
														 | 
														
														 | 
														
															             obj.Data.GoodsEnd = task.SrmStation.ToShort(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             obj.Data.VoucherNo++; 
														 | 
														
														 | 
														
															             obj.Data.VoucherNo++; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         public override bool Select(Device dev) 
														 | 
														
														 | 
														
															         public override bool Select(Device dev) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         { 
														 | 
														
														 | 
														
															         { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             return dev.HasFlag(DeviceFlags.扫码); 
														 | 
														
														 | 
														
															             return dev.HasFlag(DeviceFlags.扫码); 
														 |