|
@@ -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 计算剩余可执行任务数
|
|
|
|