using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS.DAL.DbModels;

namespace WCS.BLL.DbModels
{
    /// <summary>
    /// 当前库存存量表
    /// </summary>
    [SugarTable("wcs_mat_detail_current_info")]
    public class MatDetailCurrentInfo
    {
        /// <summary>
        /// 主键 自增Id
        /// </summary>
        [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsNullable = false, IsIdentity = true)]
        public int Id { get; set; }

        #region 货架属性
        /// <summary>
        /// 货架ID
        /// </summary>
        [SugarColumn(ColumnName = "shelf_id", IsNullable = false, ColumnDescription = "货架ID")]
        public int ShelfId { get; set; }

        /// <summary>
        /// 货架编码 对应二维码
        /// </summary>       
        [SugarColumn(ColumnName = "shelf_code", Length = 64, IsNullable = false, ColumnDescription = "货架编码")]
        public string ShelfCode { get; set; }

        /// <summary>
        /// 货架类型
        /// </summary>
        [SugarColumn(ColumnName = "shelf_type", Length = 64, IsNullable = true, ColumnDescription = "货架类型")]
        public string ShelfType { get; set; }

        ///// <summary>
        ///// 货架区域
        ///// </summary>
        //[SugarColumn(ColumnName = "shelf_area", Length = 64, IsNullable = true, ColumnDescription = "货架区域")]
        //public string ShelfArea { get; set; }
        #endregion

        #region 物料属性
        /// <summary>
        /// 物料编码
        /// </summary>
        [SugarColumn(ColumnName = "mat_code", Length = 128, IsNullable = true, ColumnDescription = "物料编号")]
        public string MatCode { get; set; }
        /// <summary>
        /// 物料名称
        /// </summary>           
        [SugarColumn(ColumnName = "mat_name", Length = 128, IsNullable = true, ColumnDescription = "物料名称")]
        public string MatName { get; set; }

        /// <summary>
        /// 物料批次
        /// </summary>           
        [SugarColumn(ColumnName = "mat_batch", Length = 64, IsNullable = true, ColumnDescription = "物料批次")]
        public string? MatBatch { get; set; }

        /// <summary>
        /// 物料规格
        /// </summary>           
        [SugarColumn(ColumnName = "mat_spec", Length = 128, IsNullable = true, ColumnDescription = "物料规格")]
        public string? MatSpec { get; set; }

        /// <summary>
        /// 物料单位
        /// </summary>           
        [SugarColumn(ColumnName = "mat_unit", Length = 64, IsNullable = true, ColumnDescription = "物料单位")]
        public string? MatUnit { get; set; }

        /// <summary>
        /// 物料供应商
        /// </summary>           
        [SugarColumn(ColumnName = "mat_supplier", Length = 128, IsNullable = true, ColumnDescription = "物料供应商")]
        public string? MatSupplier { get; set; }

        /// <summary>
        /// 物料客户
        /// </summary>           
        [SugarColumn(ColumnName = "mat_customer", Length = 128, IsNullable = true, ColumnDescription = "物料客户")]
        public string? MatCustomer { get; set; }

        /// <summary>
        /// 物料数量 
        /// </summary>
        [SugarColumn(ColumnName = "mat_qty", IsNullable = false, ColumnDescription = "物料数量")]
        public int MatQty { get; set; }
        #endregion

        #region 单据属性
        /// <summary>
        /// 单据类型Id
        /// </summary>
        [SugarColumn(ColumnName = "order_type_id", IsNullable = true, ColumnDescription = "单据类型Id")]
        public int? OrderTypeId { get; set; }

        /// <summary>
        /// 单据类型名称 
        /// </summary>
        [SugarColumn(ColumnName = "order_Type_name", Length = 64, IsNullable = true, ColumnDescription = "单据类型名称")]
        public string? OrderTypeName { get; set; }

        /// <summary>
        /// 单据编号 
        /// </summary>
        [SugarColumn(ColumnName = "order_number", Length = 64, IsNullable = true, ColumnDescription = "单据编号")]
        public string? OrderNumber { get; set; }

        /// <summary>
        /// 站位编号 用于物料批量绑定时区分是哪个工位绑定的明细
        /// </summary>
        [SugarColumn(ColumnName = "station_code", Length = 64, IsNullable = true, ColumnDescription = "站位编号")]
        public string StationCode { get; set; }

        /// <summary>
        /// 绑定时间
        /// </summary>           
        [SugarColumn(ColumnName = "bind_time", IsNullable = true, ColumnDescription = "绑定时间")]
        public DateTime? BindTime { get; set; } = DateTime.Now;
        #endregion

        /// <summary>
        /// 更新人
        /// </summary>           
        [SugarColumn(ColumnName = "modify_user", IsNullable = true, Length = 50, ColumnDescription = "更新人")]
        public string? ModifyUser { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>           
        [SugarColumn(ColumnName = "modify_time", IsNullable = true, ColumnDescription = "更新时间")]
        public DateTime? ModifyTime { get; set; } = DateTime.Now;

        /// <summary>
        /// 序号
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public int RowNumber { get; set; }

        /// <summary>
        /// 是否已经选择
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public bool IsSelected { get; set; }
    }
}
