|  | @@ -17,11 +17,11 @@ using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
 | 
	
		
			
				|  |  |  namespace WCS.WorkEngineering.Systems
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      /// <summary>
 | 
	
		
			
				|  |  | -    ///  扫码入库
 | 
	
		
			
				|  |  | +    ///  库尾入库
 | 
	
		
			
				|  |  |      /// </summary>
 | 
	
		
			
				|  |  |      [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;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -30,7 +30,7 @@ namespace WCS.WorkEngineering.Systems
 | 
	
		
			
				|  |  |          private List<Station> devs = new List<Station>();
 | 
	
		
			
				|  |  |          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();
 | 
	
		
			
				|  |  |              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)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              obj.入库站点是否被禁止();
 | 
	
		
			
				|  |  |              obj.入库站点是否满足执行条件();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (obj.Data2.Request != 1.ToShort()) throw new KnownException("无请求", LogLevelEnum.Mid);
 | 
	
		
			
				|  |  |              if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status)) throw new KnownException("无光电", LogLevelEnum.Mid);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              //开始读取条码
 | 
	
		
			
				|  |  |              var bcr = obj.Data5.GetBCRCode();
 | 
	
		
			
				|  |  |              WCS_TaskInfo task = null;
 | 
	
	
		
			
				|  | @@ -77,13 +74,7 @@ namespace WCS.WorkEngineering.Systems
 | 
	
		
			
				|  |  |                      //筛选出可用站台c
 | 
	
		
			
				|  |  |                      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.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)
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  |                          throw new KnownException($"{obj.Entity.Code}无可用放货站台", LogLevelEnum.High);
 | 
	
	
		
			
				|  | @@ -98,7 +89,7 @@ namespace WCS.WorkEngineering.Systems
 | 
	
		
			
				|  |  |                                    .MinBy(v => tunnelNo.IndexOf(v.Entity.Code)); //按照巷道优先级排序
 | 
	
		
			
				|  |  |                      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) //获取所有巷道
 | 
	
	
		
			
				|  | @@ -129,22 +120,15 @@ namespace WCS.WorkEngineering.Systems
 | 
	
		
			
				|  |  |                      taskInfo.AddWCS_TASK_DTL(_db, obj.Entity.Code, taskInfo.AddrNext, $"完成巷道分配,分配至{taskInfo.Device}");
 | 
	
		
			
				|  |  |                      taskInfo.updateRedisHash();
 | 
	
		
			
				|  |  |                      task = taskInfo;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    if (task == null) return;
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | -                }               
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                
 | 
	
		
			
				|  |  | +                    if (task == null) return;                    
 | 
	
		
			
				|  |  | +                }                             
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              obj.Data.TaskNumber = task.ID;
 | 
	
		
			
				|  |  |              obj.Data.GoodsStart = obj.Entity.Code.ToShort();
 | 
	
		
			
				|  |  |              obj.Data.GoodsEnd = task.SrmStation.ToShort();
 | 
	
		
			
				|  |  |              obj.Data.VoucherNo++;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          public override bool Select(Device dev)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              return dev.HasFlag(DeviceFlags.扫码);
 |