| 
					
				 | 
			
			
				@@ -43,10 +43,9 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //筛选出有任务号和起始及目标地址的设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var dev = obj.RGVGetTaskedDevice() ?? throw new WarnException("无可用任务"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var taskids = dev.Select(v => v.Data2.Tasknum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 DB.Do(db => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var taskids = dev.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不一致"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -80,11 +79,9 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     foreach (var task in tasks) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        var msg = $"下达从{rgv.Data.StartPosition_1}移动至{rgv.Data.DestPosition_1}的RGV PLC指令。"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        msg += $"[{task.ID}][{rgv.Data.StartPosition_1}][{rgv.Data.DestPosition_1}[{rgv.Data.Trigger_1}]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        task.CreateStatusLog(db, msg, this.GetType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        task.CreateStatusLog(db, "RGV开始执行", this.GetType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    db.Default.SaveChanges(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -112,10 +109,10 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (rgvDevice.IsPut()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV无光电,无法放货,请检查实际情况"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var taskids = new List<int>() { rgvDevice.Data2.TaskID_1, rgvDevice.Data2.TaskID_2 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //取小车上的任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     DB.Do(db => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        var taskids = new List<int>() { rgvDevice.Data2.TaskID_1, rgvDevice.Data2.TaskID_2 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         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不一致"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -140,15 +137,15 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //是否需要取货 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (devise is { Count: > 0 } && pickStation.IsPickUp(rgvDevice)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (rgvDevice.Data.TaskID_1 != pickStation.Entity.CODE.Replace("G", "").ToShort()) throw new WarnException($"目标站台{rgvDevice.Data.TaskID_1}与当前站台{pickStation.Entity.CODE.Replace("G", "").ToShort()}不一致"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (rgvDevice.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{rgvDevice.Data2.TaskType_1}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            var taskids = devise.Select(v => v.Data2.Tasknum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             //开始下达取货任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             DB.Do(db => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (rgvDevice.Data.TaskID_1 != pickStation.Entity.CODE.Replace("G","").ToShort()) throw new WarnException($"目标站台{rgvDevice.Data.TaskID_1}与当前站台{pickStation.Entity.CODE.Replace("G", "").ToShort()}不一致"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (rgvDevice.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{rgvDevice.Data2.TaskType_1}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (!rgvDevice.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var taskids = devise.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不一致"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -172,11 +169,9 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 foreach (var task in tasks) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    var msg = $"下达从{rgvDevice.Data.StartPosition_1}移动至{rgvDevice.Data.DestPosition_1}的RGV PLC指令。"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    msg += $"[{task.ID}][{rgvDevice.Data.StartPosition_1}][{rgvDevice.Data.DestPosition_1}[{rgvDevice.Data.Trigger_1}]"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    task.CreateStatusLog(db, msg, this.GetType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    task.CreateStatusLog(db, $"取货任务下达至{rgvDevice.Entity.CODE}", this.GetType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                db.Default.SaveChanges(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -215,7 +210,7 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //找到自己的后一个小车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var afterRgv = rgvDevice.After(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        //自己是否阻挡了该小车  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //自己是否阻挡了该小车 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (afterRgv.Data2.WorkMode == RGVMode.自动 && afterRgv.Data2.SystemStatus != RGVRunStatus.空闲 && rgvDevice.StopedByMe(afterRgv)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             switch (pickStation.Entity.CODE) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -320,14 +315,13 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //是否需要取货 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (devs != null && devs.Count() > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (obj.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{obj.Data2.TaskType_1}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (!obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            var taskids = devs.Select(v => v.Data2.Tasknum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             //开始下达取货任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             DB.Do(db => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (obj.Data2.TaskType_1 != RGVTaskType.移动) throw new WarnException($"RGV正在执行{obj.Data2.TaskType_1}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.光电)) throw new WarnException("RGV有光电,无法取货,请检查实际情况"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (!obj.Data2.Status_1.HasFlag(WCS.Entity.Protocol.RGVStatus.RGV到站)) throw new WarnException("RGV无到站状态,请检查RGV实际状态"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                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不一致"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -343,10 +337,7 @@ namespace WCS.Service.Works.RGV 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    task.CreateStatusLog(db, $"取货任务下达至{obj.Entity.CODE}", this.GetType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             return; 
			 |