LineToLineJobType.cs 1.9 KB

using Common;
using DeviceLibrary.bean.job;
using System.Collections.Generic;
using System.Linq;
namespace DeviceLibrary.bean.jobType
{
    public class LineToLineJobType: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.GetLineToLineMission(agv);
                if (missionInfo != null)
                {
                    Node src = manager.NodeManager.GetNode(missionInfo.sourcePoint, NodeType.Node);
                    //Node dest = manager.NodeManager.GetNode(missionInfo.destinationPoint, NodeType.Node);
                    //JobParam jobParam = new JobParam(src, dest, null, missionInfo);
                    List<string> destTmp = new List<string>(missionInfo.destinationPoint.Split(','));
                    string[] dests = destTmp.Distinct().ToArray();
                    Node dest = manager.NodeManager.GetNode(dests.Length > 1 ? dests[0] : dests[0], NodeType.Node);
                    JobParam jobParam = new JobParam(src, dest, null, missionInfo);
                    if (dests.Length > 1)
                    {
                        for (int i = 1; i < dests.Length; i++)
                        {
                            Node node = manager.NodeManager.GetNode(dests[i], NodeType.Node);
                            if (node != null)
                                jobParam.TargetNodes.Add(node);
                            else
                            {
                                LogUtil.error($"无法生成任务,因不存在的节点:{dests[i]}");
                                return null;
                            }

                        }
                    }
                    return new LineToLineJob(jobParam);
                }
            }
            return null;
        }
    }
}