DoubleLineInNode.cs 1.5 KB
using Acc.AgvManager;
using Acc.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// 双层线空料架Node
/// </summary>
namespace Acc.AgvManager.demo
{
    public class DoubleLineInNode : Node
    {
        public override Job GetNewJob(AgvBean currentAgvBean, Dictionary<string, Node> nodeMap, Dictionary<string, AgvBean> agvBeanMap)
        {
            //状态为未放满,且有解绑任务,如果没有其他小车执行回收空料架任务,分配一个任务
            foreach(AgvBean agvBean in agvBeanMap.Values)
            {
                //已经有小车在执行了
                if(agvBean.job is TakeEmptyShelfJob)
                {
                    return null;
                }
            }

            foreach(Node node in nodeMap.Values)
            {
                if(node is LineNode)
                {
                    LineNode lineNode = (LineNode)node;
                    bool hasShelfToTake = lineNode.HasShelfToTake();
                    if (hasShelfToTake)
                    {
                        string nodeName = node.GetNodeName();
                        Job job = new TakeEmptyShelfJob(nodeName, PriorityLevel.MIDDLE);
                    }
                }
            }

            return null;
        }

        public override string GetNodeName()
        {
            return PLACE.DOUBLE_LINE_IN;
        }
    }


}