IRobotTaskRepository.cs 1.73 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);
    }
}