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

namespace WCS.BLL.DbModels
{
    /// <summary>
    /// 数据更新记录表
    /// </summary>
    [SugarTable("wcs_mat_detail_history_info")]
    public class MatDetailHistoryInfo
    {
        /// <summary>
        /// 主键 自增Id
        /// </summary>
        [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsNullable = false, IsIdentity = true)]
        public int Id { get; set; }

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

        /// <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; }
        #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 = "before_qty", IsNullable = false, ColumnDescription = "物料数量（更新前物料数量）")]
        public int BeforeQty { get; set; }

        /// <summary>
        /// 物料数量（更新后物料数量）
        /// </summary>
        [SugarColumn(ColumnName = "after_qty", IsNullable = false, ColumnDescription = "物料数量（更新后物料数量）")]
        public int AfterQty { 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 = "modify_time", IsNullable = false, ColumnDescription = "更新时间")]
        public DateTime? ModifyTime { get; set; } = DateTime.Now;

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

        /// <summary>
        /// 记录类型
        /// </summary>           
        [SugarColumn(ColumnName = "record_type", IsNullable = false, ColumnDescription = "记录类型")]
        public RecordTypeEnum RecordType { get; set; } = RecordTypeEnum.修改;

        /// <summary>
        /// 功能
        /// </summary>           
        [SugarColumn(ColumnName = "function_type", IsNullable = false, ColumnDescription = "功能")]
        public FunctionTypeEnum FunctionType { get; set; } = FunctionTypeEnum.PDA物料绑定;

        /// <summary>
        /// 是否已删除 假删除
        /// </summary>           
        [SugarColumn(ColumnName = "is_delete", IsNullable = false, ColumnDescription = "是否已删除")]
        public bool IsDelete { get; set; } = false;

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

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

}
