PosInfo.cs 3.7 KB
using log4net.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OnlineStore.Common;
namespace CtuDeviceLib
{
    /// <summary>
    /// 位置信息
    /// </summary>
    public class PosInfo
    {
        /// <summary>
        /// 位置名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 地标码
        /// </summary>
        public uint PointCode { get; set; }
        /// <summary>
        /// 货架码--用于ctu对接
        /// </summary>
        public string ShelveCode { get; set; }
        /// <summary>
        /// 1=左侧
        /// 2=右侧
        /// </summary>
        public byte Dir { get; set; }
        /// <summary>
        /// 巷道编码
        /// </summary>
        public string Lanway { get; set; }
        /// <summary>
        /// 升降高度
        /// </summary>
        public int UpDownHeight { get; set; }
        /// <summary>
        /// 进出深度
        /// </summary>
        public int InoutDepth { get; set; }

        /// <summary>
        /// 料箱码读码偏移距离
        /// </summary>
        public int ScanCodeShift { get; set; }

        /// <summary>
        /// 层数
        /// </summary>
        public int Row { get; set; }


        public string[] ToDataGrid()
        {
            List<string> lst = new List<string>
            {
                Name,
                PointCode.ToString(),
                InoutDepth.ToString(),
                ScanCodeShift.ToString(),
                Dir==1?"左侧":"右侧",
                ShelveCode.ToString()
            };
            return lst.ToArray();
        }

        /// <summary>
        /// 是否是货架
        /// </summary>
        /// <returns></returns>
        public bool IsShelf()
        {
            return Name.Equals(ShelveCode);
        }

        /// <summary>
        /// 是否是入库分拣机构待机点
        /// </summary>
        /// <returns></returns>
        public bool IsInStandby()
        {
            return Name.StartsWith("Standby") && Name.Contains("In");
        }
        public bool IsInChargeStation()
        {
            return Name.StartsWith("ChargeStation");
        }
        /// <summary>
        /// 是否是出库分拣机构待机点
        /// </summary>
        /// <returns></returns>
        public bool IsOutStandby()
        {
            return Name.StartsWith("Standby") && Name.Contains("Out");
        }
        /// <summary>
        /// 是否是入库分拣机构CTU放料箱点
        /// </summary>
        /// <returns></returns>
        public bool IsInletPutPoint()
        {
            return Name.EndsWith("FeedingInlet") && Name.StartsWith("In");
        }

        /// <summary>
        /// 是否是入库分拣机构CTU取料箱点
        /// </summary>
        /// <returns></returns>
        public bool IsInletTakePoint()
        {
            return Name.EndsWith("DischargeHole") && Name.StartsWith("In");
        }

        /// <summary>
        /// 是否在出料分拣
        /// </summary>
        /// <returns></returns>
        public bool IsInOutLine()
        {
            return Name.StartsWith(Setting_Init.outLine) || Setting_Init.Out_FeedingInlet.Equals(Name);
        }
        /// <summary>
        /// 是否在手动线出口
        /// </summary>
        /// <returns></returns>
        public bool IsInRawLineOut()
        {
            return Name.Equals(Setting_Init.rawLine_out);
        }
        /// <summary>
        /// 是否在手动线入口
        /// </summary>
        /// <returns></returns>
        public bool IsInRawLineIn()
        {
            return Name.Equals(Setting_Init.rawLine_in);
        }
    }
}