IRobotTaskRepository.cs 1.59 KB
using Rcs.Domain.Entities;
using TaskStatus = Rcs.Domain.Entities.TaskStatus;

namespace Rcs.Domain.Repositories;

/// <summary>
/// 主任务仓储接口
/// @author zzy
/// </summary>
public interface IRobotTaskRepository : IRepository<RobotTask>
{
    /// <summary>
    /// 根据任务编码获取任务
    /// </summary>
    Task<RobotTask?> GetByTaskCodeAsync(string taskCode, CancellationToken cancellationToken = default);

    /// <summary>
    /// 根据机器人ID获取任务列表
    /// </summary>
    Task<IEnumerable<RobotTask>> GetByRobotIdAsync(Guid robotId, CancellationToken cancellationToken = default);

    /// <summary>
    /// 根据状态获取任务列表
    /// </summary>
    Task<IEnumerable<RobotTask>> GetByStatusAsync(TaskStatus status, CancellationToken cancellationToken = default);
    /// <summary>
    /// 根据状态获取任务列表
    /// </summary>
    Task<IEnumerable<RobotTask>> GetnProgressByRobotIdAsync(Guid robotId, CancellationToken cancellationToken = default);

    /// <summary>
    /// 获取待分配任务列表(按优先级排序)
    /// </summary>
    Task<IEnumerable<RobotTask>> GetPendingTasksAsync(CancellationToken cancellationToken = default);

    /// <summary>
    /// 根据任务ID获取完整数据(含导航属性)
    /// </summary>
    Task<RobotTask?> GetByIdWithDetailsAsync(Guid taskId, CancellationToken cancellationToken = default);

    /// <summary>
    /// 根据关联单据获取任务
    /// @author zzy
    /// </summary>
    Task<RobotTask?> GetByRelationAsync(string relation, CancellationToken cancellationToken = default);
}