Administrator vor 3 Jahren
Ursprung
Commit
c8359a5ac0

+ 1 - 0
Projects/永冠OPP/WCS.Service/Extensions/DeviceExtension.cs

@@ -527,6 +527,7 @@ namespace WCS.Service.Extensions
         /// <returns></returns>
         public float Distance(StationDeviceGroup after)
         {
+            if (after == null) throw new WarnException($"不是一个有效的StationDeviceGroup,{Entity.CODE}");
             return DevEX.Distance(Position, after.Position, Length);
         }
 

+ 15 - 9
Projects/永冠OPP/WCS.Service/Works/SRM/SRMWork.cs

@@ -304,15 +304,21 @@ namespace WCS.Service.Works.SRM
                         //同时对结果进行排序,分组
                         var maxnum = ProtocolProxy.YGWMS150Redis.Get("SaleTaskGroupCount").ToInt();
                         //所有 有优先级任务的出货口
-                        var priorityADDRTO = db.Default.Set<WCS_TASK>().Where(v => v.Priority > 0 && v.STATUS == TaskStatus.新建 && v.DEVICE != obj.Entity.CODE).ToList()
-                                                                       .GroupBy(v => v.ADDRTO).Select(v => new { v.Key, List = v.Select(p => p.DEVICE).Distinct().ToList() })
-                                                                       .Where(v => v.List.Where(p =>
-                                                                        {
-                                                                            var dev = Device.Find(p).Create<SRMDevice>();
-                                                                            return dev.Data2.SRMMode == SCMode.远程 && dev.Data2.SRMStatus == SCRunStatus.空闲;
-                                                                        }).Any())
-                                                                       .Select(v => v.Key)
-                                                                       .ToList();
+                        List<string> priorityADDRTO = new List<string>();
+
+                        var t = db.Default.Set<WCS_TASK>().Where(v => v.Priority > 0 && v.STATUS == TaskStatus.新建 && v.DEVICE != obj.Entity.CODE).ToList()
+                                                                       .GroupBy(v => v.ADDRTO);
+                        if (t.Any()) //用于避免t为空时报错
+                        {
+                            priorityADDRTO = t.Select(v => new { v.Key, List = v.Select(p => p.DEVICE).Distinct().ToList() })
+                                              .Where(v => v.List.Where(p =>
+                                              {
+                                                  var dev = Device.Find(p).Create<SRMDevice>();
+                                                  return dev.Data2.SRMMode == SCMode.远程 && dev.Data2.SRMStatus == SCRunStatus.空闲;
+                                              }).Any())
+                                              .Select(v => v.Key)
+                                              .ToList();
+                        }
                         var outDepotList = waitTask.Where(v =>
                                                     {
                                                         var max = v.ADDRTO == "G1340" ? 4 : maxnum;