RobotTask.TaskExecution.cs 591 Bytes
using System.Linq;

namespace Rcs.Domain.Entities;

public partial class RobotTask
{
    /// <summary>
    /// 获取下一条可执行子任务。
    /// 规则:按 <see cref="RobotSubTask.Sequence"/> 升序,取状态为 Pending/Assigned 的第一条。
    /// </summary>
    /// <returns>下一条可执行子任务;不存在返回 null</returns>
    public RobotSubTask? GetNextExecutableSubTask()
    {
        return SubTasks
            .OrderBy(st => st.Sequence)
            .FirstOrDefault(st => st.Status == TaskStatus.Pending || st.Status == TaskStatus.Assigned);
    }
}