LineToLiftJobType.cs 2.8 KB
using DeviceLibrary.manager;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary.bean.jobType
{
    /// <summary>
    /// 从线体取料并送入电梯内
    /// </summary>
    public class LineToLiftJobType:JobType
    {
        public override Job GetNewJob(AgvInfo agv)
        {
            if (!agv.IsIdle())
                return null;
            else if (agv.Scope.Floor.Equals(1))
            {
               service.model.MissionInfo missionInfo =  manager.MissionManager.GetF1DeliverMission(agv,out string liftname);
                if(missionInfo!=null)
                {
                    Node src = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node);
                    Node dest = manager.NodeManager.GetNode(liftname, NodeType.Lift);
                    if (src == null)
                    {
                        Common.LogUtil.error($"无法生成任务,起始点不存在:{missionInfo.sourcePoint}");
                        return null;
                    }
                    if (dest == null)
                    {
                        Common.LogUtil.error($"无法生成任务,电梯不存在:{liftname}");
                        return null;
                    }
                    JobParam jobParam = new JobParam(src, dest, null, missionInfo);
                    //任务状态变更
                    MissionManager.SetMissionState(missionInfo.missionId, service.model.MissionState.已分配, out string msg);
                    return new LineToLiftJob(jobParam);
                }
            }
            else
            {
                service.model.MissionInfo missionInfo = manager.MissionManager.GetFinishedDeliverMission(agv, out string liftname);
                if (missionInfo != null)
                {
                    Node src = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node);
                    Node dest = manager.NodeManager.GetNode(liftname, NodeType.Lift);
                    if (src == null)
                    {
                        Common.LogUtil.error($"无法生成任务,起始点不存在:{missionInfo.sourcePoint}");
                        return null;
                    }
                    if (dest == null)
                    {
                        Common.LogUtil.error($"无法生成任务,电梯不存在:{liftname}");
                        return null;
                    }
                    JobParam jobParam = new JobParam(src, dest, null, missionInfo);
                    //任务状态变更
                    MissionManager.SetMissionState(missionInfo.missionId, service.model.MissionState.已分配, out string msg);
                    return new LineToLiftJob(jobParam);
                }
            }
            return null;
        }
    }
}