TakeBoxBase.cs 5.7 KB
using AGVLib;
using CtuDeviceLib;
using log4net.Util;
using Mushiny;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary.CtuService
{
    /// <summary>
    /// 取箱类
    /// </summary>
    public class TakeBoxBase : CtuTaskBase
    {

        public TakeBoxBase(CTU ctu, RobotTask robotTask) : base(ctu, robotTask)
        {
            setBoxCode(robotTask.BoxCode);
            setDstName(robotTask.SrcPoint);
        }
        public TakeBoxBase(CTU ctu) : base(ctu)
        {

        }
        public override void Excute() { }

        /// <summary>
        /// 对接完成-线体收到finishleave回复
        /// </summary>
        protected bool Complete()
        {
            return RobotManager.loadContainerFinish(new ESS.EssModel()
            {
                containerAttribute = DateTime.Now,
                containerCode = boxCode,
                slotCode = DstName
            });
            //var clientNodes = RobotManager.AllClientNodes;
            //if (clientNodes != null)
            //{
            //    var node = clientNodes.Find(s => s.name.Equals(DstName));
            //    if (node == null)
            //    {
            //        Msg.add($"未查询到【{DstName}】,无法检查{NodeStatus.Complete}", MsgLevel.warning);
            //    }
            //    else
            //    {
            //        return node.status == NodeStatus.Complete;
            //    }
            //}
            //else
            //{
            //    Msg.add($"无法获取节点信息,请检查AGV调度软件是否开启", MsgLevel.warning);
            //}
            //return false;
        }
        /// <summary>
        /// 设备允许出料箱
        /// </summary>
        /// <returns></returns>
        protected bool MayLeave()
        {
            var clientNodes = RobotManager.AllClientNodes;
            if (clientNodes != null)
            {
                var node = clientNodes.Find(s => s.name.Equals(DstName));
                if (node == null)
                {
                    Msg.add($"未查询到【{DstName}】,无法检查{NodeStatus.MayLeave}", MsgLevel.warning);
                }
                else
                {
                    return node.status == NodeStatus.MayLeave;
                }
            }
            else
            {
                Msg.add($"无法获取节点信息,请检查AGV调度软件是否开启", MsgLevel.warning);
            }
            return false;
        }
        protected bool RejectLeave()
        {
            var clientNodes = RobotManager.AllClientNodes;
            if (clientNodes != null)
            {
                var node = clientNodes.Find(s => s.name.Equals(DstName));
                if (node == null)
                {
                    Msg.add($"未查询到【{DstName}】,无法检查{NodeStatus.RejectLeave}", MsgLevel.warning);
                }
                else
                {
                    return node.status == NodeStatus.RejectLeave;
                }
            }
            else
            {
                Msg.add($"无法获取节点信息,请检查AGV调度软件是否开启", MsgLevel.warning);
            }
            return false;
        }
        /// <summary>
        /// CTU接收到料箱发送完成
        /// </summary>
        protected void FinishLeave()
        {
            //var clientNodes = RobotManager.AllClientNodes;
            //if (clientNodes != null)
            //{
            //    var node = clientNodes.Find(s => s.name.Equals(DstName));
            //    if (node == null)
            //    {
            //        Msg.add($"未查询到【{DstName}】,无法发送{NodeStatus.FinishLeave}", MsgLevel.warning);
            //    }
            //    else
            //    {
            //        node.status = NodeStatus.FinishLeave;
            //        node.shelf_id = boxCode;
            //        RobotManager.SendToClientWitAPI(node);
            //    }
            //}
            //else
            //{
            //    Msg.add($"无法获取节点信息,请检查AGV调度软件是否开启", MsgLevel.warning);
            //}
        }
        /// <summary>
        /// 向设备请求出料箱
        /// </summary>
        protected void RequestLeave()
        {
            //var clientNodes = RobotManager.AllClientNodes;
            //if (clientNodes != null)
            //{
            //    var node = clientNodes.Find(s => s.name.Equals(DstName));
            //    if (node == null)
            //    {
            //        Msg.add($"未查询到【{DstName}】,无法发送{NodeStatus.RequestLeave}", MsgLevel.warning);
            //    }
            //    else
            //    {
            //        node.status = NodeStatus.RequestLeave;
            //        node.shelf_id = boxCode;
            //        RobotManager.SendToClientWitAPI(node);
            //    }
            //}
            //else
            //{
            //    Msg.add($"无法获取节点信息,请检查AGV调度软件是否开启", MsgLevel.warning);
            //}
        }
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        //protected bool Outlet_FindNearWaitSendBoxInBasket(out Tuple<string, string> dstBox)
        //{
        //    dstBox = null;
        //    var dstMap = outlet_getNearDstInBaskets();
        //    if(dstMap == null ||  dstMap.Count == 0)
        //    {
        //        return false;
        //    }
        //    var minDis = int.MaxValue;
        //    var dstKey = dstMap.Keys.ToList()[0];
        //    foreach (var dst in dstMap)
        //    {

        //        PathManger.GetPToPDis(ctu.CurLandMark,)
        //    }
        //}
    }
}