wanshenmean
3 天以前 7278264f027d62664a0209699d0f66a22fd06a8e
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
@@ -1,7 +1,7 @@
using Microsoft.Extensions.Logging;
using Quartz;
using System.Net;
using WIDESEA_Core;
using WIDESEAWCS_Common;
using WIDESEAWCS_Core.Caches;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.LogHelper;
@@ -29,15 +29,6 @@
    [DisallowConcurrentExecution]
    public class RobotJob : IJob
    {
        /// <summary>
        /// 任务总数上限
        /// </summary>
        /// <remarks>
        /// 当机器人处理的货物数量达到此上限时,不再下发新任务。
        /// 防止机器人过度劳累或系统过载。
        /// </remarks>
        private const int MaxTaskTotalNum = 48;
        /// <summary>
        /// 消息事件订阅标志
        /// </summary>
@@ -131,7 +122,7 @@
            // 初始化命令处理器
            // 简单命令处理器:处理状态更新等简单命令
            var simpleCommandHandler = new RobotSimpleCommandHandler(_taskProcessor);
            var simpleCommandHandler = new RobotSimpleCommandHandler(_taskProcessor, socketGateway);
            // 前缀命令处理器:处理 pickfinished、putfinished 等带参数的命令
            var prefixCommandHandler = new RobotPrefixCommandHandler(robotTaskService, _taskProcessor, _stateManager, socketGateway);
@@ -214,8 +205,19 @@
                    return;
                }
                if (state.CurrentAction == "Picking" || state.CurrentAction == "Puting")
                {
                    return;
                }
                // 轮询获取该设备的待处理任务
                var task = _taskProcessor.GetTask(robotCrane);
                // 如果没有获取到待处理任务,且RobotArmObject为1(有物料),则获取该设备执行中的任务
                if (task == null && state.RobotArmObject == 1)
                {
                    task = _taskProcessor.GetExecutingTask(robotCrane);
                }
                // 如果有待处理任务
                if (task != null)
@@ -229,7 +231,7 @@
                    }
                    // 检查任务总数是否未达到上限
                    if (latestState.RobotTaskTotalNum < MaxTaskTotalNum)
                    if (latestState.RobotTaskTotalNum < RobotConst.MaxTaskTotalNum)
                    {
                        // 调用工作流编排器执行任务
                        // 编排器会根据当前状态决定下一步动作
@@ -246,4 +248,4 @@
            }
        }
    }
}
}