JobType.cs 2.2 KB
using Common;
using DeviceLibrary.lift;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    public class JobType
    {
        public JobType()
        {
        }
        public virtual Job GetNewJob(AgvInfo agv)
        {
            return null;
        }
        /// <summary>
        /// 目标点是否有小车
        /// </summary>
        /// <param name="agv"></param>
        /// <param name="targetName"></param>
        /// <returns></returns>
        protected bool TargetIsOccupied(AgvInfo agv, string targetName)
        {
            try
            {
                return LiftContext.OtherAGVIsInLift(agv, targetName);
            }
            catch (Exception ex)
            {
                LogUtil.error($"TargetIsOccupied:{agv.Name},{JsonHelper.SerializeObject(AGVManager.agvInfo)}", ex);
                return false;
            }
        }
        /// <summary>
        /// 只有去电梯取料料架使用
        /// </summary>
        /// <param name="agv"></param>
        /// <param name="targetName"></param>
        /// <returns></returns>
        protected bool AgvAtPlace(AgvInfo agv, string targetName)
        {
            try
            {
                if (LiftContext.OtherAGVIsInLift(agv, targetName))
                {
                    return true;
                }
                else
                {
                    AgvInfo agvInfo = AGVManager.agvInfo.Find(s => s.Auto && !s.IP.Equals(agv.IP)
                                && agv.Scope.Workshop.Equals(s.Scope.Workshop));
                    if (agvInfo != null)
                    {
                        if (agvInfo?.TaskRunState?.Task?.Name.Contains(targetName) ?? false)
                        {
                            return true;
                        }
                    }
                    return false;
                }
            }
            catch (Exception ex)
            {
                LogUtil.error($"AgvAtPlace:{agv.Name},{JsonHelper.SerializeObject(AGVManager.agvInfo)}", ex);
                return false;
            }
        }
    }
}