using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS.BLL.HardWare;

namespace WCS.DAL.DbModels
{
    ///<summary>
    ///模组信息表
    ///</summary>
    [SugarTable("wcs_module_info")]
    public class ModuleInfo
    {

        /// <summary>
        /// 主键 Id 自增
        /// </summary>
        [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsNullable = false, IsIdentity = true)]
        public int Id { get; set; }

        /// <summary>
        /// 模组编码
        /// </summary>
        [SugarColumn(ColumnName = "module_code", Length = 50, IsNullable = false, ColumnDescription = "模组编码")]
        public string ModuleCode { get; set; }

        /// <summary>
        /// 货架类型Id
        /// </summary>
        [SugarColumn(ColumnName = "shelf_type_id", IsNullable = false,DefaultValue ="0", ColumnDescription = "货架类型Id")]
        public int ShelfTypeId { get; set; }

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

        /// <summary>
        /// 货架号
        /// </summary>
        [SugarColumn(ColumnName = "shelf_code", Length = 50, IsNullable = false, ColumnDescription = "货架编码;货架一般按照报警灯来区分 一个报警灯指示的是一个货架")]
        public string ShelfCode { get; set; }

        /// <summary>
        /// 板子的Id
        /// </summary>
        [SugarColumn(ColumnName = "board_id", IsNullable = false, ColumnDescription = "模组pcb板id")]
        public int BoardId { get; set; }

        /// <summary>
        /// 板子上第几个灯
        /// </summary>
        [SugarColumn(ColumnName = "light_count", IsNullable = false, ColumnDescription = "板子上灯的数量")]
        public int LightCount { get; set; }

        /// <summary>
        /// 对应Can模块的Ip
        /// </summary>
        [SugarColumn(ColumnName = "client_ip", Length = 50, IsNullable = false, ColumnDescription = "货架对应Can模块的Ip")]
        public string CleintIp { get; set; }
        /// <summary>
        /// 货架的组别、区域（区分单个软件管哪些货架的，前端的配置文件配置一个组别，查询时只显示当前组别的货架）
        /// </summary>
        [SugarColumn(ColumnName = "group_name", Length = 50, IsNullable = false, ColumnDescription = "货架的组别、区域（区分单个软件管哪些货架的，前端的配置文件配置一个组别，查询时只显示当前组别的货架）")]
        public string GroupName { get; set; }
        /// <summary>
        /// R   行
        /// </summary>
        [SugarColumn(ColumnName = "R", Length = 50, IsNullable = false, ColumnDescription = "R   行")]
        public string R { get; set; }

        /// <summary>
        /// C   列
        /// </summary>
        [SugarColumn(ColumnName = "C", Length = 50, IsNullable = false, ColumnDescription = " C   列")]
        public string C { get; set; }

        /// <summary>
        /// 串联后大货架编码;大货架编码：未串联时是与货架编码是一对一的关系；串联后与货架编码是一对多的关系
        /// </summary>
        [SugarColumn(ColumnName = "big_shelf_code", Length = 50, IsNullable = true, ColumnDescription = "串联后大货架编码;大货架编码：未串联时是与货架编码是一对一的关系；串联后与货架编码是一对多的关系")]
        public string? Bigshelfcode { get; set; }

        [SugarColumn(ColumnName = "is_enable",  IsNullable = false, ColumnDescription = "串联后大货架编码;大货架编码：未串联时是与货架编码是一对一的关系；串联后与货架编码是一对多的关系")]
        public bool IsEnable { get; set; } = true;

        [SugarColumn(ColumnName = "current_mode", IsNullable = true, ColumnDescription = "串联后大货架编码;大货架编码：未串联时是与货架编码是一对一的关系；串联后与货架编码是一对多的关系")]
        public Mode CurrentMode { get; set; } = Mode.待机模式;

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