ManualConfirmJob.cs 3.3 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 ManualConfirmJob : ImpJob
    {
        public ManualConfirmJob(JobParam jobParam) : base(jobParam)
        {
            JobName = $"手动确认任务";
        }
        public override Job Run(Robot robot)
        {
            Job job = this;
            switch (JobRunStep.CurStep)
            {
                case RunStep.None:
                    ToNextStep(RunStep.ManualConfirm_01_ReadyToConfirm, "开始手动确认流程");
                    //播放音乐
                    PlaySound(robot);
                    break;
                case RunStep.ManualConfirm_01_ReadyToConfirm:
                    ToNextStep(RunStep.ManualConfirm_02_WaitConfirm, "等待手动确认");
                    break;
                case RunStep.ManualConfirm_02_WaitConfirm:
                    if (IsConfirmed(robot))
                    {
                        ToNextStep(RunStep.ManualConfirm_04_ConfirmSuccess, "手动确认完成");
                        StopSound(robot);
                    }
                    else if (JobRunStep.IsTimeOut(60))
                    {
                        ToNextStep(RunStep.ManualConfirm_03_ConfirmTimeOut, "等待手动确认超时");
                    }
                    break;
                case RunStep.ManualConfirm_03_ConfirmTimeOut:
                    if (IsConfirmed(robot))
                    {
                        ToNextStep(RunStep.ManualConfirm_04_ConfirmSuccess, "手动确认完成");
                        StopSound(robot);
                    }                
                    break;
                case RunStep.ManualConfirm_04_ConfirmSuccess:
                    job = GetCallBackJob();
                    job.ToNextStep(GetCallBackStep(), "手动确认流程结束");
                    //ToNextStep(RunStep.ManualConfirm_05_CheckAction, "查询下一步动作");
                    break;
                //case RunStep.ManualConfirm_05_CheckAction:
                //    checkNextAction();
                //    break;
                //case RunStep.ManualConfirm_06_NoAction:
                //    job = new DeliverShelfJob(JobParam);
                //    job.ToNextStep(RunStep.DeliveryShelf_15_ActionSuccess, "线体确认完成");
                //    break;
                //case RunStep.ManualConfirm_07_PickAction:
                //    job = new PickShelfJob(JobParam);
                //    break;
                //case RunStep.ManualConfirm_08_PutAction:
                //    job = new PutShelfJob(JobParam);
                //    break;
            }

            return job;
        }
        void checkNextAction()
        {
            switch (JobParam?.CurAction?.SubActionType ?? ActionType.None)
            {
                case ActionType.None:
                    ToNextStep(RunStep.ManualConfirm_06_NoAction, "无动作");
                    break;

                case ActionType.PickShelf:
                    ToNextStep(RunStep.ManualConfirm_07_PickAction, "拾取料架任务");
                    break;

                case ActionType.PutShelf:
                    ToNextStep(RunStep.ManualConfirm_08_PutAction, "放下料架任务");
                    break;
            }

        }
    }
}