|  | @@ -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;
 |