using SqlSugar;
using WCS.Model.ApiModel.Stocktaking;

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

        /// <summary>
        /// 货架库存明细当前的ID
        /// </summary>
        [SugarColumn(ColumnName = "mat_detail_current_id", IsNullable = false, ColumnDescription = "库存明细当前的ID")]
        public int MatDetailCurrentId { get; set; }

        #region 货架属性
        /// <summary>
        /// 货架ID
        /// </summary>
        [SugarColumn(ColumnName = "shelf_id", IsNullable = false, ColumnDescription = "货架ID")]
        public int ShlefId { 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 = 100, IsNullable = true, ColumnDescription = "物料编号")]
        public string MatCode { get; set; }
        /// <summary>
        /// 物料名称
        /// </summary>           
        [SugarColumn(ColumnName = "mat_name", Length = 150, 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 = 150, IsNullable = true, ColumnDescription = "物料规格")]
        public string? MatSpec { get; set; }

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

        /// <summary>
        /// 物料数量（盘点数量）
        /// </summary>
        [SugarColumn(ColumnName = "stocktaking_qty", IsNullable = false, ColumnDescription = "物料数量（盘点数量）")]
        public int StocktakingQty { 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; }
        #endregion

        /// <summary>
        /// 盘点人
        /// </summary>           
        [SugarColumn(ColumnName = "stocktaking_user", IsNullable = false, Length = 50, ColumnDescription = "盘点人")]
        public string? StocktakingUser { get; set; }

        /// <summary>
        /// 盘点时间
        /// </summary>           
        [SugarColumn(ColumnName = "stocktaking_time", IsNullable = false, ColumnDescription = "盘点时间")]
        public DateTime? StocktakingTime { get; set; } = DateTime.Now;

        /// <summary>
        /// 盘点状态
        /// </summary>           
        [SugarColumn(ColumnName = "stocktaking_status", IsNullable = false, ColumnDescription = "盘点状态")]
        public StocktakingStatusEnum StocktakingStatus { get; set; } = StocktakingStatusEnum.未提交;

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

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


}
