Kaynağa Gözat

更新环形库是否有可用出库任务的处理方式

林豪 左 10 ay önce
ebeveyn
işleme
180331a3b0

+ 3 - 18
业务工程/分拣库/WCS.WorkEngineering/Systems/环形库/机械臂cs.cs

@@ -25,11 +25,6 @@ namespace WCS.WorkEngineering.Systems
     {
         protected override bool ParallelDo => true;
 
-        /// <summary>
-        ///  是否有出库任务可执行
-        /// </summary>
-        private static Dictionary<string, bool> isOut = null;
-
         /// <summary>
         /// 取货点设备集合
         /// </summary>
@@ -52,16 +47,6 @@ namespace WCS.WorkEngineering.Systems
                 PickUpDevices.Add(robot.Code, robot.Sources.Where(v => v.HasFlag(DeviceFlags.输送机)).Select(v => v).ToList());
                 PutDevices.Add(robot.Code, robot.Targets.Where(v => v.HasFlag(DeviceFlags.输送机)).Select(v => new Device<IStation520, IStation521, IStation523, IRobot530>(v, World)).ToList());
             }
-
-            if (isOut.IsEmpty())
-            {
-                isOut.Add("Robot1", true);
-                isOut.Add("Robot2", true);
-                isOut.Add("Robot3", true);
-                isOut.Add("Robot4", true);
-                isOut.Add("Robot5", true);
-                isOut.Add("Robot6", true);
-            }
         }
 
         public override void Do(Device<IRobot520, IRobot521, IRobot522> obj)
@@ -197,7 +182,7 @@ namespace WCS.WorkEngineering.Systems
                     .ThenBy(x => x.Item1.Data2.TaskNumber).First().Item2
                     .Where(x => x.Data2.TaskNumber > 0 && x.Data.Status.HasFlag(StationStatus.PH_Status));
                 //可用取货位数量为1,且出库任务有优先
-                if (devGroup.Count() == 1 && isOut.Any(x => x.Key == obj.Entity.Code && x.Value))
+                if (devGroup.Count() == 1 && obj.Entity.GetFlag<bool>($"isOut-{obj.Entity.Code}"))
                 {
                     obj.Entity.SetFlag("InQuantity", 4); //跳过入库任务执行出库任务,下次直接查询是否有出库任务,避免无效检查周期的产生
                     return;
@@ -426,8 +411,8 @@ namespace WCS.WorkEngineering.Systems
 
                     //如果有两个任务,且只有一个任务可以执行,剩余任务数+1
                     if (exTaskNumber == 2 && taskInfoList.Count == 1) surplusTaskNumber += 1;
-                    if (surplusTaskNumber >= 1) isOut[obj.Entity.Code] = true; //剩余任务数大于或等于1,下次满足条件时可以优先执行出库任务
-                    else isOut[obj.Entity.Code] = false; //剩余任务数等于或小于0,下次满足条件时不可以优先执行出库任务
+                    if (surplusTaskNumber >= 1) obj.Entity.SetFlag($"isOut-{obj.Entity.Code}", true); //剩余任务数大于或等于1,下次满足条件时可以优先执行出库任务
+                    else obj.Entity.SetFlag($"isOut-{obj.Entity.Code}", false); //剩余任务数等于或小于0,下次满足条件时不可以优先执行出库任务
 
                     #endregion 计算剩余可执行任务数