Administrator před 3 roky
rodič
revize
43bd220eeb

+ 4 - 2
Projects/永冠OPP/WCS.Service/Works/Station/涂布出库.cs

@@ -277,16 +277,17 @@ namespace WCS.Service.Works.Station
                  if (obj.Items.Any(v => v.Data2.VoucherNo != v.Data.VoucherNo)) throw new WarnException("等待执行任务");
                  if (obj.Items.Any(v => !v.Data3.Status.HasFlag(StationStatus.自动))) return;
                  if (obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new WarnException("设备运行中");
-                 if (obj.Items.Any(v => !v.Data2.Status.HasFlag(IstationStatus.光电状态))) throw new DoException("没有光电");
 
                  var taskIds = new List<int>();
                  obj.Items.ToList().ForEach(dev => taskIds.Add(dev.Data2.Tasknum));
                  DB.Do(db =>
                  {
                      var taskList = db.Default.Set<WCS_TASK>().Where(v => taskIds.Contains(v.ID));
+                     if (taskList.Count() == 0) return;
                      if (taskList == null) throw new WarnException($"WCS任务号{JsonConvert.SerializeObject(taskIds)}不存在");
                      if (taskList.Any(v => v.TYPE != TaskType.出库)) throw new WarnException("有任务的类型不是出库");
                      if (taskList.Any(v => v.AgvTask == 0)) throw new WarnException("人工出库任务,请手动搬走");
+
                      var agvtask = db.Default.Set<WCS_AGVTask>().Find(taskList.FirstOrDefault().AgvTask);
                      if (agvtask == null) throw new WarnException($"AGV任务号{taskList.FirstOrDefault().AgvTask}不存在");
                      if (taskList.Count() != db.Default.Set<WCS_TASK>().Count(v => v.TaskGroupKey == taskList.FirstOrDefault().TaskGroupKey && v.TYPE == TaskType.出库)) throw new WarnException("可执行任务数与实际任务数不符");
@@ -316,6 +317,7 @@ namespace WCS.Service.Works.Station
                              if (!obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.高位))) throw new WarnException("不在高位");
                              if (agvtask.Status < AGVTaskStatus.执行) throw new WarnException($"AGV状态错误-{agvtask.Status}");
                              if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.AGV取货完成信号))) throw new WarnException("任务清零信号未清除");
+                             if (obj.Items.Any(v => !v.Data2.Status.HasFlag(IstationStatus.光电状态))) throw new DoException("没有光电");
 
                              agvtask.Status = agvtask.AGVStatus;
                              agvtask.UpdateTime = DateTime.Now;
@@ -324,7 +326,7 @@ namespace WCS.Service.Works.Station
                          else if (agvtask.AGVStatus == AGVTaskStatus.取放完成)
                          {
                              if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.AGV取货完成信号))) throw new WarnException("任务清零信号未清除");
-                             if (obj.Items.Any(v => !v.Data2.Status.HasFlag(IstationStatus.光电状态))) throw new WarnException("AGV取货完成后依然有光电信号");
+                             if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.光电状态))) throw new WarnException("AGV取货完成后依然有光电信号");
                              if (agvtask.Status < AGVTaskStatus.请求_允许) throw new WarnException("AGV任务状态有误");
 
                              agvtask.Status = agvtask.AGVStatus;