Administrator 3 жил өмнө
parent
commit
3899fe07e7

+ 16 - 11
Projects/永冠OPP/WCS.Service/Extensions/TaskExtension.cs

@@ -111,18 +111,23 @@ namespace WCS.Service.Extensions
             return taskList;
         }
 
-        public static List<WCS_TASK> GetSrmValidTaskList(this IGrouping<string, WCS_TASK>[] taksList, DB db, SRMDevice srm, int index = 0)
+        public static List<WCS_TASK> GetSrmValidTaskList(this IGrouping<string, WCS_TASK>[] taksList,SRMDevice srm, int index = 0)
         {
-            if (!taksList.Any() || index > (taksList.Length - 1)) throw new DoException("无可执行出库任务");
-            var outDepot = taksList[index];
-            var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.TYPE == TaskType.出库 && v.STATUS == TaskStatus.新建 && v.ADDRTO == outDepot.Key && v.Priority > 0 && v.DEVICE != srm.Entity.CODE);
-            if (task == null) return outDepot.ToList(); // 没有优先
-            var dev = Device.Find(task.DEVICE).Create<SRMDevice>();
-            if (dev.Data2.SRMMode == SCMode.远程 && dev.Data2.SRMStatus == SCRunStatus.空闲)
-            {
-                taksList.GetSrmValidTaskList(db, srm, index++);
-            }
-            return outDepot.ToList(); //优先任务对应的堆垛机没有空闲
+            return taksList[index].ToList();
+            //if (!taksList.Any() || index > (taksList.Length - 1)) throw new DoException("无可执行出库任务");
+            //var outDepot = taksList[index];
+            //WCS_TASK task=null;
+            //DB.Do(db =>
+            //{
+            //    task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.TYPE == TaskType.出库 && v.STATUS == TaskStatus.新建 && v.ADDRTO == outDepot.Key && v.Priority > 0 && v.DEVICE != srm.Entity.CODE);
+            //});
+            //if (task == null) return outDepot.ToList(); // 没有优先
+            //var dev = Device.Find(task.DEVICE).Create<SRMDevice>();
+            //if (dev.Data2.SRMMode == SCMode.远程 && dev.Data2.SRMStatus == SCRunStatus.空闲)
+            //{
+            //    taksList.GetSrmValidTaskList(srm, index++);
+            //}
+            //return outDepot.ToList(); //优先任务对应的堆垛机没有空闲
         }
     }
 

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

@@ -191,7 +191,7 @@ namespace WCS.Service.Works.SRM
                         var validDev = devs.Where(v => v.Data2.Tasknum > 10000 && v.Data2.Status.HasFlag(IstationStatus.光电状态) && !v.Data3.Status.HasFlag(StationStatus.运行状态位));
                         if (!validDev.Any()) throw new DoException("无有效入库任务");
                         var tasknum = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.ID == validDev.First().Data2.Tasknum);
-                        var taskList = db.Default.Set<WCS_TASK>().Count(v => v.TaskGroupKey == tasknum.TaskGroupKey&&v.TYPE== TaskType.入库);
+                        var taskList = db.Default.Set<WCS_TASK>().Count(v => v.TaskGroupKey == tasknum.TaskGroupKey && v.TYPE == TaskType.入库);
                         if (validDev.Count() != taskList) throw new WarnException($"任务数量不匹配,设备-{validDev.Count()},WCS-{taskList}");
 
                         foreach (var dev in validDev)
@@ -330,7 +330,7 @@ namespace WCS.Service.Works.SRM
                                 .GroupBy(v => v.ADDRTO).ToArray();
 
                         //获取两个个可执行任务,此时这两个任务的目标地址是一致的
-                        var tasks = outDepotList.GetSrmValidTaskList(db, obj).GetOutTask();
+                        var tasks = outDepotList.GetSrmValidTaskList(obj).GetOutTask();
 
                         #region 校验两个产品是否为同规格
 

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

@@ -6,6 +6,7 @@ using System.Linq;
 using WCS.Core;
 using WCS.Entity;
 using WCS.Entity.Protocol;
+using WCS.Service.Entity;
 using WCS.Service.Extensions;
 using WCS.Service.Handlers;
 using WCS.Service.Helpers;
@@ -385,7 +386,15 @@ namespace WCS.Service.Works.Station
                              if (qty >= 4) continue;
 
                              //涂布叫料默认目标地址G1340,到达G1340后再决定是否要继续前进一步
-                             var res = WMS.GetOutTask(agvtask.Position.Replace("_OUT", ""), "G1340");
+                             List<I_WCS_GetOutTaskResponseSingle> res;
+                             try 
+                             {
+                                  res = WMS.GetOutTask(agvtask.Position.Replace("_OUT", ""), "G1340");
+                             } catch (WarnException ex)
+                             {
+                                 InfoLog.INFO_WarnDb($"{ex.Message}", obj.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
+                                 continue;
+                             };
 
                              res.ForEach(outTask =>
                              {