InOutParam.cs 5.1 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
{
    /// <summary>
    /// 出入仓参数(出入库操作时传入的参数类)
    /// </summary>
    public class InOutParam
    {
        public static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        public InOutParam()
        { 
            this.WareCode = "";
            MoveP = null;   
        }
        /// <summary>
        /// 新建一个对象
        /// </summary>
        /// <param name="wareNo">物品二维码</param>
        /// <param name="position">仓位号</param>
        public InOutParam(string wareNo, string posId,string ShelfPosID)
        {
            this.ShelfPosID = ShelfPosID;
            WareCode = wareNo;
            PosID = posId;
            MoveP = null;
            IsSolderPaste = false;
        }
        public InOutParam(string wareNo, string posId,string plateH,string plateW, string ShelfPosID )
        {
            this.ShelfPosID = ShelfPosID;
            WareCode = wareNo;
            PosID = posId;
            MoveP = null;
            this.PlateW = plateW;
            this.PlateH = plateH;
            IsSolderPaste = false;
        } 
        public InOutParam(string wareNo, string posId, LineMoveP linePosition )
        { 
            WareCode = wareNo;
            PosID = posId;
            MoveP = linePosition;
            IsSolderPaste = false;
            NeedEnterShelf = false;
            NeedOutShelf = false;
        }  
        /// <summary>
        /// 物品二维码信息
        /// </summary>
        public string WareCode { get; set; }
        /// <summary>
        /// 位置坐标名(对应配置表的位置)
        /// </summary>
        public string PosID { get; set; }
        /// <summary>
        /// 料架对应的库位号
        /// </summary>
        public string ShelfPosID = "";
        public LineMoveP MoveP { get; set; }
        /// <summary>
        /// 料盘高度
        /// </summary>
        public string  PlateH { get; set; }
        /// <summary>
        /// 料盘宽度
        /// </summary>
        public string PlateW { get; set; }
        /// <summary>
        /// 是否是放入锡膏(在线料仓才需要此字段)
        /// </summary>
        public bool IsSolderPaste { get; set; }

        /// <summary>
        /// 出入库时需要进入新料架
        /// </summary>
        public bool NeedEnterShelf = true;
        /// <summary>
        /// 出入库结束后需要将料架送出
        /// </summary>
        public bool NeedOutShelf = true;

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

                    }
                }
            }
            return -1;
        }
        public string ToStr()
        {
            return " ShelfPosID=["+ ShelfPosID + "],WareCode=【" + WareCode + "】,PosID=【" + PosID + "】,PlateW=【" + PlateW + "】,PlateH=【" + PlateH + "】";
        }

        internal void UpdateShelfPosId(string pId)
        {
            this.ShelfPosID = pId;
            ShelfPosition sp = CSVPositionReader<ShelfPosition>.GetPositon(ShelfPosID);
            if (sp == null)
            {
                LogUtil.error(  "GetPositon[" + ShelfPosID + "]=null,没有库位不能执行出入库"); 
            }

            MoveP.InOut_P101 = sp.InoutAxis_P101;
            MoveP.UpDown_LP101 = sp.UpDownAxis_LP101;
            MoveP.UpDown_HP102 = sp.UpDownAxis_HP102;
            MoveP.Middle_P101 = sp.MiddleAxis_P101;

        }

        internal void UpdatePosId(string message, string posId, string plateW, string plateH,int comPosition)
        {
            this.WareCode = message;
            this.PosID = posId;
            this.PlateH = plateH;
            this.PlateW = plateW;

            ACBoxPosition position = CSVPositionReader<ACBoxPosition>.GetPositon(posId);
            if (position == null)
            {
                LogUtil.error( "GetPositon[" + posId + "] =null,没有库位不能执行出入库"); 
            } 
             
         //   MoveP.InOut_P11= position.InOutAxis_P11;

            MoveP.ComPress_P2 = comPosition;
            MoveP.ComPress_P3 = position.ComAxis_P3;
            MoveP.InOut_P3 = position.InoutAxis_P3;
            MoveP.Middle_P2 = position.MiddleAxis_P2;
            MoveP.UpDown_P3 = position.UpdownAxis_IH_P3;
            MoveP.UpDown_P4 = position.UpdownAxis_IL_P4;
            MoveP.UpDown_P5 = position.UpdownAxis_OH_P5;
            MoveP.UpDown_P6 = position.UpdownAxis_OL_P6;
        }
    } 
    
}