using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;
using SqlSugar;
using ZR.Model.Models;

namespace ZR.Model.Dto.BaseSet
{
    /// <summary>
    /// 基础资料/库位信息表查询对象
    /// </summary>
    public class BasBinQueryDto : PagerInfo
    {
        public string BinCode { get; set; }

        //public string BinName { get; set; }

        public string BinType { get; set; }
        public long RegionId { get; set; }
        public int BinRow { get; set; }
        public int BinColumn { get; set; }
        public int BinLayer { get; set; }

        //public string Visible { get; set; }

        public string Status { get; set; }
    }

    /// <summary>
    /// 基础资料/库位信息表输入输出对象
    /// </summary>
    public class BasBinDto
    {
        [Required(ErrorMessage = "库位Id 系统主键不能为空")]
        [JsonConverter(typeof(ValueToStringConverter))]
        public long BinId { get; set; }

        [Required(ErrorMessage = "库位编码不能为空")]
        public string BinCode { get; set; }

        public string BinName { get; set; }

        [Required(ErrorMessage = "库位类型（S存储库位，P拣选库位，V虚拟库位）不能为空")]
        public string BinType { get; set; }

        [Required(ErrorMessage = "库区编码不能为空")]
        public string RegionId { get; set; }

        [Required(ErrorMessage = "库位所在排不能为空")]
        public int BinRow { get; set; }

        [Required(ErrorMessage = "库位所在列不能为空")]
        public int BinColumn { get; set; }

        [Required(ErrorMessage = "库位所在层不能为空")]
        public int BinLayer { get; set; }

        public string Describe { get; set; }

        [Required(ErrorMessage = "显示状态（0显示，1隐藏）不能为空")]
        public string Visible { get; set; }

        [Required(ErrorMessage = "使用状态（0正常，1使用）不能为空")]
        public string Status { get; set; }

        public string CreateBy { get; set; }

        public DateTime? CreateTime { get; set; }

        public string UpdateBy { get; set; }

        public DateTime? UpdateTime { get; set; }

        public string Remark { get; set; }



        #region 表外字段
        [SugarColumn(IsIgnore = true)]
        public string RegionName { get; set; }
        [SugarColumn(IsIgnore = true)]
        public string RegionCode { get; set; }
        #endregion
    }
}