| 
					
				 | 
			
			
				@@ -106,47 +106,49 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var pickStation = obj.CurrentStation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //RGV是否在任何一个取货站点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //RGV是否在任何一个站台 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (pickStation != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 检查取货点是否需要取货 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //pickStation.WhetherToExecute(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // 筛选出有任务号和起始及目标地址的设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var devs = pickStation.RGVGetTaskedDevice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //是否需要取货 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (devs != null && devs.Count() > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //是否是取货站台 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (pickStation.Entity.Is(DF.涂布RGV取货设备组)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        //开始下达取货任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        DB.Do(db => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        // 筛选出有任务号和起始及目标地址的设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var devs = pickStation.RGVGetTaskedDevice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //是否需要取货 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (devs != null && devs.Count() > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            var taskids = devs.Select(v => v.Data2.Tasknum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                throw new WarnException("任务组ID不一致"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (!tasks.GroupBy(p => p.TaskGroupKey).Any()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                throw new WarnException("无任务组ID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            var gw1 = pickStation.Items.ToArray()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            var gw2 = pickStation.Items.ToArray()[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (gw1.Data2.Tasknum != 0 && gw2.Data2.Tasknum != 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            //开始下达取货任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            DB.Do(db => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (gw1.Data2.Goodsend != gw2.Data2.Goodsend) throw new WarnException($"{obj.Entity.CODE}目标地址不一致"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            obj.Data.TaskID_1 = gw1.Data2.Tasknum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            obj.Data.TaskID_2 = gw2.Data2.Tasknum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            obj.Data.TaskType_1 = RGVTaskType.取货; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            obj.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                var taskids = devs.Select(v => v.Data2.Tasknum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                var tasks = db.Default.Set<WCS_TASK>().Where(p => taskids.Contains(p.ID)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if (tasks.GroupBy(p => p.TaskGroupKey).Count() > 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    throw new WarnException("任务组ID不一致"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if (!tasks.GroupBy(p => p.TaskGroupKey).Any()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    throw new WarnException("无任务组ID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                var gw1 = pickStation.Items.ToArray()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                var gw2 = pickStation.Items.ToArray()[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if (gw1.Data2.Tasknum != 0 && gw2.Data2.Tasknum != 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    if (gw1.Data2.Goodsend != gw2.Data2.Goodsend) throw new WarnException($"{obj.Entity.CODE}目标地址不一致"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                obj.Data.TaskID_1 = gw1.Data2.Tasknum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                obj.Data.TaskID_2 = gw2.Data2.Tasknum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                obj.Data.TaskType_1 = RGVTaskType.取货; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                obj.Data.DestPosition_1 = pickStation.Entity.CODE.Replace("G", "").ToShort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            obj.Data.Trigger_1++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                obj.Data.Trigger_1++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            foreach (var task in tasks) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var msg = $"下达从{obj.Data.StartPosition_1}移动至{ obj.Data.DestPosition_1}的RGV PLC指令。"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                msg += $"[{ task.ID}][{obj.Data.StartPosition_1}][{obj.Data.DestPosition_1}[{ obj.Data.Trigger_1}]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                foreach (var task in tasks) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    var msg = $"下达从{obj.Data.StartPosition_1}移动至{ obj.Data.DestPosition_1}的RGV PLC指令。"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    msg += $"[{ task.ID}][{obj.Data.StartPosition_1}][{obj.Data.DestPosition_1}[{ obj.Data.Trigger_1}]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                task.CreateStatusLog(db, msg, this.GetType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    task.CreateStatusLog(db, msg, this.GetType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //找到自己的后一个小车 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -170,14 +172,13 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //此时RGV即没有等待执行的放货任务,也不在任何一个取货点,因此需要调往最近的一个取货点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //找到距离这个RGV最近的一个取货点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //必须所有RGV都是空闲状态时才可以进行初始化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //pickStation = obj.BeforeStation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //obj.Move(pickStation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (obj.RGVList.Any(v => v.Data2.SystemStatus != RGVRunStatus.空闲 || v.Data2.WorkMode != RGVMode.自动)) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pickStation = obj.BeforeStation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                obj.Move(pickStation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |