ILanYinService.cs 4.3 KB
using Rcs.Application.Common;
using Rcs.Cyaninetech.Models;

namespace Rcs.Cyaninetech.Services;

/// <summary>
/// LanYin外挂服务接口
/// </summary>
public interface ILanYinService
{
    /// <summary>
    /// 用户登录获取token
    /// </summary>
    /// <param name="request">登录请求</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>登录响应</returns>
    Task<bool> LoginAsync(LanYinLoginRequest request, CancellationToken cancellationToken = default);

    /// <summary>
    /// 获取库位信息
    /// </summary>
    /// <param name="request">库位查询请求</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>库位信息响应</returns>
    Task<List<LanYinLocationData>> GetLocationsAsync(string url, CancellationToken cancellationToken = default);

    /// <summary>
    /// 任务下发 - 将搬运任务信息下发给车体控制系统进行执行
    /// </summary>
    /// <param name="request">任务下发请求</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>是否下发成功</returns>
    Task<ApiResponse<LanYinTaskData>> DispatchTaskAsync(LanYinDispatchTaskRequest request, CancellationToken cancellationToken = default);
    /// <summary>
    /// 同步地图
    /// </summary>
    Task<LanYinMapInfoData> SyncMapResource(string url, CancellationToken cancellationToken = default);

    /// <summary>
    /// 确认工况异常
    /// @author zzy
    /// </summary>
    Task<ApiResponse> ConfirmExceptionAsync(string robotId, CancellationToken cancellationToken = default);

    /// <summary>
    /// 取消任务
    /// @author zzy
    /// </summary>
    Task<ApiResponse> CancelTaskAsync(CancellationToken cancellationToken = default);

    /// <summary>
    /// 取消指定机器人的任务
    /// @author zzy 
    /// </summary>
    /// <param name="robotId">机器人ID</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>操作结果</returns>
    Task<ApiResponse> CancelTaskByRobotAsync(string robotId, CancellationToken cancellationToken = default);

    /// <summary>
    /// 复位指定机器人
    /// @author zzy
    /// </summary>
    /// <param name="robotId">机器人ID</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>操作结果</returns>
    Task<ApiResponse> ResetRobotAsync(string robotId, CancellationToken cancellationToken = default);
    /// <summary>
    /// 机器人暂停
    /// @author zzy
    /// </summary>
    /// <param name="robotId">机器人ID</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>操作结果</returns>
    Task<ApiResponse> PauseRobotAsync(string robotId, CancellationToken cancellationToken = default);
    /// <summary>
    /// 机器人取消暂停
    /// @author zzy
    /// </summary>
    /// <param name="robotId">机器人ID</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>操作结果</returns>
    Task<ApiResponse> UnPauseRobotAsync(string robotId, CancellationToken cancellationToken = default);

    /// <summary>
    /// 新增或修改库位类型
    /// @author zzy
    /// </summary>
    /// <param name="request">新增库位类型请求</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>操作结果</returns>
    Task<ApiResponse> AddOrEditLocationTypeAsync(LanYinAddLocationTypeRequest request, CancellationToken cancellationToken = default);

    /// <summary>
    /// 查询库位类型列表
    /// @author zzy
    /// </summary>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>库位类型列表</returns>
    Task<List<LanYinLocationTypeData>> GetLocationTypesAsync(CancellationToken cancellationToken = default);

    /// <summary>
    /// 重定位机器人
    /// @author zzy
    /// </summary>
    /// <param name="robotId">机器人ID</param>
    /// <param name="x">X坐标</param>
    /// <param name="y">Y坐标</param>
    /// <param name="theta">角度(弧度)</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>操作结果</returns>
    Task<ApiResponse> RelocateRobotAsync(string robotId,int scene_id, double x, double y, double theta, CancellationToken cancellationToken = default);
}