InOutParam.cs 4.8 KB
using log4net;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;


namespace OnlineStore.DeviceLibrary
{
    public class InOutParam
    {
        /// <summary>
        /// 创建新出入库信息
        /// </summary>
        /// <param name="type">出入库类型</param>
        /// <param name="wareNo">二维码内容</param>
        /// <param name="posId">库位号</param>
        /// <param name="platew">宽度</param>
        /// <param name="plateh">高度</param>
        /// <param name="targetP">出入库目标位置, 0=出库表示批量出料,入库表示目标库位 。 1=紧急出料到NG口,入库NG送到NG口</param>
        /// <param name="shefNum">料架编号</param>
        /// <param name="IsNg">是否是入库NG料</param>
        /// <param name="ngMsg">NG消息</param>
        public InOutParam(MoveType type, string wareNo = "", string posId = "", int platew = 0, int plateh = 0, int targetP = 0, int shefNum=0, bool IsNg = false, string ngMsg = "")
        {
            WareCode = wareNo;
            PosID = posId;
            MoveP = null;
            this.PlateW = platew;
            this.PlateH = plateh;
            this.TargetPosition = targetP;
            this.shelfNum = shefNum;
            this.InStoreNg = IsNg;
            this.NgMsg = ngMsg;
            this.moveType = type;

        }
        public InOutParam(MoveType type, string wareNo, string posId, LineMoveP linePosition, int targetP = 0)
        {
            WareCode = wareNo;
            PosID = posId;
            MoveP = linePosition;
            this.TargetPosition = targetP; 
            this.moveType = type;
        }
      
        public MoveType moveType = MoveType.None;
        /// <summary>
        /// 物品二维码信息
        /// </summary>
        public string WareCode { get; set; }
        /// <summary>
        /// 位置坐标名(对应配置表的位置)
        /// </summary>
        public string PosID { get; set; }

        public LineMoveP MoveP { get; set; }
        /// <summary>
        /// 料盘高度
        /// </summary>
        public int PlateH { get; set; }
        /// <summary>
        /// 料盘宽度
        /// </summary>
        public int PlateW { get; set; }
        /// <summary>
        /// 是否是入料NG料
        /// </summary>
        public bool InStoreNg = false;
        /// <summary>
        /// 入料NG消息
        /// </summary>
        public string NgMsg = "";

        /// <summary>
        /// 料架编号
        /// </summary>
        public int shelfNum = 0;

        /// <summary>
        /// 出入库目标位置,
        /// 0=出库表示批量出料,入库表示目标库位
        /// 1=紧急出料到NG口,入库NG送到NG口
        /// </summary>
        public int TargetPosition = 0;


        /// <summary>
        /// 目标料仓,1=左侧,2=右侧
        /// </summary>
        public int TargetBox = 0;

        /// <summary>
        /// 根据PosId获取对应的料仓ID,若PosId=="",返回-1
        /// </summary>
        /// <returns></returns>
        public int GetStoreId()
        {
            return GetPosStoreId(PosID);
        }
        public static int GetPosStoreId(string posId)
        {
            if (!posId.Equals(""))
            {
                try
                {
                    string[] arr = posId.Split('#');
                    if (arr.Length >= 2)
                    {
                        return int.Parse(arr[0]);
                    }
                    else
                    {
                        return int.Parse(posId.Substring(2, 2));
                    }
                }
                catch (Exception ex)
                {

                }
            }
            return -1;
        }
        public string ToStr()
        {
            if (InStoreNg)
            {
                return " 入库失败[BOX_" + TargetBox + "] [" + WareCode + "], [" + PlateW + "x" + PlateH + "] ";
            }
            else
            {
                if (moveType.Equals(MoveType.InStore))
                {                    
                    return " 入库 [" + PosID + "] [" + WareCode + "], [" + PlateW + "x" + PlateH + "] ";
                }
                else
                {
                    if (TargetPosition.Equals(1))
                    {
                        return " 批量出库 [" + PosID + "] [" + WareCode + "], [" + PlateW + "x" + PlateH + "] ";
                    }
                    else
                    {
                        return " 单盘出库 [" + PosID + "] [" + WareCode + "], [" + PlateW + "x" + PlateH + "] ";
                    }
                }
            }
        }


    }
}