#region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2026 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:Mr.Wen's MacBook Pro * 命名空间:Sln.Wcs.HikRoBotDispatcher * 唯一标识:6AC4C0D5-77AA-4910-A11B-6F2E1A242AAF * * 创建者:WenJY * 电子邮箱: * 创建时间:2026-06-06 11:33:24 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using Sln.Wcs.HikRoBotAdapter.Domain.Dto.GbContinueTask; using Sln.Wcs.HikRoBotAdapter.Domain.Dto.GbTaskSubmit; using Sln.Wcs.HikRoBotAdapter.Domain.Dto.QueryTask; using Sln.Wcs.HikRoBotAdapter.Enum; using Sln.Wcs.HikRoBotAdapter.Service; using Sln.Wcs.Model.Domain; using Sln.Wcs.Serilog; using TargetRoute = Sln.Wcs.HikRoBotAdapter.Domain.Dto.GbTaskSubmit.TargetRoute; namespace Sln.Wcs.HikRoBotDispatcher; public class HikRoBotDispatchHub { private readonly SerilogHelper _logger; private readonly IHikRoBotService _hikRobotAdapter; public HikRoBotDispatchHub(SerilogHelper logger, IHikRoBotService hikRobotAdapter) { _logger = logger; _hikRobotAdapter = hikRobotAdapter; } /// /// 接收调度任务=> 下发至AGVS /// /// public bool ReciveTask(LiveTaskDetail taskDetail) { string startType = taskDetail.startPoint.Length > 12 ? "SITE" : "STORAGE"; string endType = taskDetail.endPoint.Length > 12 ? "SITE" : "STORAGE"; GbTaskSubmitResultDto submitResultDto = _hikRobotAdapter.GbTaskSubmit(new GbTaskSubmitDto() { RobotTaskCode = taskDetail.taskCode, TaskType = taskDetail.endPoint.Length > 12 ? "F07" : "PF-FMR-COMMON", TargetRoute = new List() { new TargetRoute() { Type = startType, Code = taskDetail.startPoint }, new TargetRoute() { Type = endType, Code = taskDetail.endPoint } } }); if (submitResultDto.code == HikRoBotStatusEnum.成功 && submitResultDto.data.code == "SUCCESS") { _logger.Info($"调度任务{taskDetail.taskCode}下发成功"); return true; } else { _logger.Info($"调度任务{taskDetail.taskCode}下发失败:{submitResultDto.msg}"); return false; } } /// /// 继续执行任务=> 通知AGVS继续执行 /// /// public bool ContinueTask(LiveTaskDetail taskDetail) { GbContinueTaskResultDto result = _hikRobotAdapter.GbContinueTask(new GbContinueTaskDto() { TriggerType = "TASK", TriggerCode = taskDetail.taskCode, TargetRoute = new HikRoBotAdapter.Domain.Dto.GbContinueTask.TargetRoute() { Type = "SITE", Code = taskDetail.execDevice } }); if (result.code == HikRoBotStatusEnum.成功) { _logger.Info($"调度任务{taskDetail.taskCode}继续执行成功"); return true; } else { _logger.Info($"调度任务{taskDetail.taskCode}继续执行失败:{result.msg}"); return false; } } /// /// 获取任务状态 /// /// /// public string GetTaskStatus(string taskCode) { string result = string.Empty; QueryTaskResultDto taskStatus = _hikRobotAdapter.QueryTaskStatus(new QueryTaskDto() { RobotTaskCode = taskCode, }); if (taskStatus.code == HikRoBotStatusEnum.成功) { _logger.Info($"调度任务{taskCode}状态获取成功:{taskStatus.data.TaskStatus}"); result = taskStatus.data.TaskStatus; } else { _logger.Info($"调度任务{taskCode}状态获取失败:{taskStatus.msg}"); } return result; } }