TmpPlaceJob.cs 1.7 KB
using DeviceLib.Model.AGV;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLib.BLL
{
    internal class TmpPlaceJob : ImpJob
    {
        public TmpPlaceJob(JobParam jobParam) : base(jobParam)
        {
            JobName = "去临时点任务";
        }
        public override Job Run(Robot robot)
        {
            Job job = this;
            switch (JobRunStep.CurStep)
            {
                case RunStep.None:
                    ToNextStep(RunStep.TmpPlace_01_Start, "去临时点任务开始");
                    MoveToNode(robot, NodeManager.GetTmpPlace(JobParam.LineNode));
                    break;
                case RunStep.TmpPlace_01_Start:
                    if (MissionIsOk())
                        ToNextStep(RunStep.TmpPlace_04_WaitDstIdle, "检查目标点是否空闲");
                    break;
                case RunStep.TmpPlace_04_WaitDstIdle:
                    if (!NodeManager.CheckNodeIsOccupied(JobParam.LineNode))
                        ToNextStep(RunStep.TmpPlace_05_End, "目标点空闲,无需去临时点");
                    else if (JobRunStep.IsTimeOut(60, out double timeOut))
                    {
                        SetWarnMsg($"等待其他车离开{JobParam?.LineNode?.name}超时");
                    }
                    break;

                case RunStep.TmpPlace_05_End:
                    job = GetCallBackJob();//new DeliverShelfJob(JobParam);
                    job.ToNextStep(GetCallBackStep(), "去临时点任务结束");
                    break;
            }
            return job;
        }
    }
}