| 
					
				 | 
			
			
				@@ -91,6 +91,9 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         protected override void Do(RGVDevice obj) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //11号站台是取货点,但不是待命点,如需取货,从九号站台调车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //2号站台是一个待命点,但是为了保证入库取货效率,所有后面会跟一个车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //如果3号站台的小车拦住了后一个小车的放货任务,检测一次最近的空车距离值,如果大于或等于618500并且小于再进行调车,用于避免无效空跑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             obj.EX(obj => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (obj.Data2.Trigger_1 != obj.Data.Trigger_1) throw new WarnException($"等待执行任务{obj.Data2.TaskID_1}--{obj.Data2.TaskID_2}"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -169,8 +172,21 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var afterRgv = obj.After(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //自己是否阻挡了该小车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (afterRgv.Data2.WorkMode == RGVMode.自动 && afterRgv.Data2.SystemStatus != RGVRunStatus.空闲 && obj.StopedByMe(afterRgv)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (afterRgv.Data2.SystemStatus != RGVRunStatus.空闲 && obj.StopedByMe(afterRgv)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (pickStation.Entity.CODE == "G2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //此站台因需要进行排队,因此是否需要赶车取决于是否拦住了两个小车的任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                var afterRgv1 = afterRgv.After(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //如果是空闲或者没有拦住他,就不执行赶车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if (afterRgv1.Data2.SystemStatus == RGVRunStatus.空闲 || !afterRgv.StopedByMe(afterRgv1)) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            else if (pickStation.Entity.CODE == "G3") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //为了减少空跑,需要被阻拦的小车后面的小车任务类型为移动并且位置值要大于618500小于被阻拦小车的位置值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                var afterRgv1 = afterRgv.After(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if (afterRgv1.Data2.TaskType_1 != RGVTaskType.移动 || !(afterRgv1.Position < afterRgv.Position && afterRgv1.Position > 618500)) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             //找到当前所在站台的下一个取货点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             var beforeStation = Device.Where(v => v.Is(DF.涂布RGV取货设备组) && v.CODE != pickStation.Entity.CODE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                           .Select(v => v.Create<StationDeviceGroup>()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -181,16 +197,9 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             obj.Move(beforeStation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        else if (pickStation.Entity.CODE == "G11") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            //取前一个取货点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            pickStation = obj.BeforeStation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            //前一个取货点的小车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            var rgv = pickStation.CurrentRGV(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (rgv == null) //没有小车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                obj.Move(pickStation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            obj.Move(Device.Find("G2").Create<StationDeviceGroup>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -206,7 +215,7 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //此时RGV即没有等待执行的放货任务,也不在任何一个取货点,因此需要调往最近的一个取货点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //找到距离这个RGV最近的一个取货点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //必须所有RGV都是空闲状态时才可以进行初始化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲)) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pickStation = obj.BeforeStation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 obj.Move(pickStation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 |