using APT.BaseData.Domain.Entities.BD;
using APT.Infrastructure.Core;
using APT.Infrastructure.Utility;
using System;
using System.ComponentModel;

namespace APT.BaseData.Domain.Entities.FM
{
    /// <summary>
    /// 
    /// </summary> 
    [Description("基础配置表")]
    [Redis("ID", "ID", "ORG_ID")]

    [IgnoreT4]
    [DataClassIndex(new string[] { "CODE", "ORG_ID" }, true)]
    public partial class T_FM_BASE_CONFIG : MesEntityBase
    {

        [Description("编码")]
        public string CODE { get; set; }

        [Description("名称")]
        public string NAME { get; set; }

        [Description("LOGO")]
        [DataFieldForeignKey("Nav_PictureLogo")]
        public Guid? LOGO_ID { get; set; }

        [Description("是否按产品计算单耗")]
        public bool IS_PRODUCT_CAL { get; set; }

        [Description("KPI计算单耗类型")]
        [EnumName("EDUnitSetOrder")]
        public int KPI_CAL_TYPE { get; set; }

        #region 数据纠错参数
        /// <summary>
        /// 连续纠错数
        /// </summary>
        [Description("连续等值纠错数")]
        public int CONTINUOUS_CORRENT { get; set; }

        [Description("判定取值总数")]
        public int CORRENT_TOTAL { get; set; }

        [Description("判定OK数")]
        public int CORRENT_OK { get; set; }

        [Description("连续纠错预警阀值")]
        public int CONTINUOUS_CORRENT_WARING { get; set; }

        [Description("回零百分比阀值")]
        public decimal DOWN_PERCENT { get; set; }

        #endregion

        /// <summary>
        /// 系统启用时间
        /// </summary>
        [Description("系统启用时间")]
        public DateTime SYSTART_TIME { get; set; }

        /// <summary>
        /// 抄表卡抄表时间
        /// </summary>
        [Description("抄表卡抄表时间")]
        public DateTime METER_READ_TIME { get; set; }


        [Description("日历天数")]
        public int CALENDAR_DAYS { get; set; }

        #region 站点参数

        [Description("背景图")]
        [DataFieldForeignKey("Nav_PictureBg")]
        public Guid? BACK_PIC_ID { get; set; }

        [Description("系统名称")]
        [DataFieldLength(50)]
        public string SYS_NAME { get; set; }

        [Description("公司口号")]
        [DataFieldLength(60)]
        public string SLOGAN { get; set; }

        [Description("图片地址")]
        [DataFieldLength(50)]
        public string PIC_PATH { get; set; }

        [Description("文件地址")]
        [DataFieldLength(50)]
        public string FILE_PATH { get; set; }

        [Description("图片大小")]
        public int PIC_LEN { get; set; }

        [Description("文件大小")]
        public int FILE_LEN { get; set; }

        [Description("图片类型")]
        [EnumName("FMPictureTypeEnum")]
        [DataFieldLength(30)]
        public string PIC_TYPE { get; set; }

        [Description("文件类型")]
        [EnumName("FMFileTypeEnum")]
        [DataFieldLength(100)]
        public string FILE_TYPE { get; set; }

        [Description("后台枚举")]
        [EnumName("FMExcelTypeEnum")]
        [DataFieldLength(30)]
        public string EXCEL_TYPE { get; set; }

        [Description("是否上传用户行为数据")]
        public bool IS_USER_LOG { get; set; }

        [Description("数据推送接口")]
        [DataFieldLength(100)]
        public string PUSH_API_URL { get; set; }

        [Description("百度地图Key")]
        [DataFieldLength(200)]
        public string MAP_KEY { get; set; }

        [Description("数据中断通知电话")]
        public string TEL { get; set; }

        [Description("导航：图片资源")]
        public virtual T_BD_PICTURE Nav_PictureLogo { get; set; }

        [Description("导航：图片资源")]
        public virtual T_BD_PICTURE Nav_PictureBg { get; set; }

        #endregion
        [Description("排名统计方式")]
        [EnumName("FMStatisticalType")]
        public int STATISTICAL_TYPE { get; set; }
        
        [Description("图片地址前缀")]
        [DataFieldLength(100)]
        public string PICTURE_URL { get; set; }

        [Description("是否收缩菜单")]
        public bool IS_MENU_SHRINK { get; set; }

        #region 投屏参数

        [Description("投屏地址")]
        [DataFieldLength(100)]
        public string SCREEN_URL { get; set; }

        [Description("投屏标题名称")]
        [DataFieldLength(50)]
        public string SCREEN_TITLE { get; set; }

        #endregion

        #region HMI模板

        [DataFieldForeignKey("Nav_HMI")]
        [Description("电流/电压")]
        public Guid? CURRENT_VOLTAGE_HMI_ID { get; set; }


        [Description("导航属性：电流/电压HMI")]
        public virtual T_BD_HMI Nav_HMI { get; set; }


        [DataFieldForeignKey("Nav_HMI")]
        [Description("电流/电压")]
        public Guid? HOME_HMI_ID { get; set; }


        [Description("导航属性：首页HMI")]
        public virtual T_BD_HMI Nav_HomeHmi { get; set; }

        #endregion

        #region
        /// <summary>
        /// 能耗费用基准
        /// </summary>
        [Description("能耗费用基准")]
        public decimal COST_BENCHMARK { get; set; }

        #endregion

        #region 是否开启短信验证
        [Description("是否开启短信验证")]
        [FormFieldTable]
        [FormFieldEdit]
        public bool IS_CHECK_MESSAGE { get; set; }
        #endregion
        [Description("工厂层级配置")]
        [FormFieldTable]
        [FormFieldEdit]
        public int LEVEL { get; set; } = 4;

        [Description("充电桩预约时长")]
        [FormFieldTable]
        [FormFieldEdit]
        public int BOOK_TIME { get; set; }

        [DataFieldForeignKey("Nav_MessageTemplate")]
        [Description("短信模板")]     
        [FormFieldEdit]
        public Guid? MESSAGE_TEMPLATE_ID { get; set; }
        public virtual T_FM_MESSAGE_TEMPLATE  Nav_MessageTemplate { get; set; }

        [Description("源ID")]
        public Guid? SRC_ID { get; set; }
        [Description("上部分图片")]
        [FormFieldEdit]
        public Guid? T0P_PICTURE_ID { get; set; }

        [DataFieldForeignKey("Nav_LowPicture")]
        [Description("下部分图片")]
        [FormFieldEdit]
        public Guid? LOWER_PICTURE_ID { get; set; }

        [DataFieldForeignKey("Nav_ConsPicture")]
        [Description("AP能耗图片")]
        [FormFieldEdit]
        public Guid? APP_CONS_PICTURE_ID { get; set; }

        [Description("导航：图片资源")]
        public virtual T_BD_PICTURE Nav_ConsPicture { get; set; }

        [Description("导航：图片资源")]
        public virtual T_BD_PICTURE Nav_TopPicture { get; set; }

        [Description("导航：图片资源")]
        public virtual T_BD_PICTURE Nav_LowPicture { get; set; }
    }
}
