ソースを参照

堆垛机出库任务排序:先层再列。同时为避免出现重复下任务,在开始下达任务前新增堆垛机状态判断

Administrator 3 年 前
コミット
9f2a26311a

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

@@ -22,8 +22,8 @@ namespace WCS.Service.Extensions
         /// <returns></returns>
         public static List<WCS_TASK> GetOutTask(this List<WCS_TASK> tasks)
         {
-            var taskids = tasks.Select(v => Create<Task>(v)).OrderBy(v => v.Line).ThenBy(v => v.Col).ThenBy(v => v.Layer).Take(2).DistinctBy(v => v.SRMSTATION).Select(v => v.ID);
-            return tasks.Where(v => taskids.Contains(v.ID)).ToList();
+            var taskids = tasks.Select(v => Create<Task>(v)).OrderBy(v => v.Line).ThenBy(v => v.Layer).ThenBy(v => v.Col).Take(2).DistinctBy(v => v.SRMSTATION).Select(v => v.ID);
+            return tasks.Where(v => taskids.Contains(v.ID)).DistinctBy(v => v.SRMSTATION).ToList();
         }
     }
 

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

@@ -362,7 +362,9 @@ namespace WCS.Service.Works.SRM
                     var devs = Device.Find($"{tasks.OrderBy(v => v.ADDRTO).FirstOrDefault().ADDRTO}").Create<StationDeviceGroup>().Items.OrderByDescending(v => v.Entity.CODE).ToArray();
                     var dev1 = devs[0];
                     var dev2 = devs[1];
+                    if (obj.Data2.Mode_1 != SCMode.远程) return;
 
+                    if (obj.Data2.Status_1 != SCRunStatus.空闲) return;
                     foreach (var task in tasks)
                     {
                         //判断当前任务为二工位还是一工位