You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
4.4 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;
}
/// <summary>
/// 接收调度任务=> 下发至AGVS
/// </summary>
/// <param name="taskDetail"></param>
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<TargetRoute>()
{
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;
}
}
/// <summary>
/// 继续执行任务=> 通知AGVS继续执行
/// </summary>
/// <param name="taskDetail"></param>
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;
}
}
/// <summary>
/// 获取任务状态
/// </summary>
/// <param name="taskDetail"></param>
/// <returns></returns>
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;
}
}