using APT.BaseData.Domain.Entities.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Enums;
using System;
using System.Collections.Generic;
using System.ComponentModel;

namespace APT.MS.Domain.Entities.BS
{
    /// <summary>
    /// 检查明细
    /// </summary>
    [Description("检查明细")]
    public class T_BS_SAFE_CHECK_DETAIL : MesEntityBase
    {
        /// <summary>
        /// 安全检查
        /// </summary>
        [Description("安全检查")]
        [DataFieldForeignKey("Nav_SafeCheck", "Nav_ListSafeCheckDetail")]
        public Guid SAFE_CHECK_ID { get; set; }

        /// <summary>
        /// 导航：安全检查
        /// </summary>
        [Description("导航：安全检查")]
        public virtual T_BS_SAFE_CHECK Nav_SafeCheck { get; set; }

        /// <summary>
        /// 安全检查库
        /// </summary>
        [Description("安全检查库")]
        [DataFieldForeignKey("Nav_CheckMain")]
        [FormFieldTable]
        [FormFieldEdit]
        public Guid? CHECK_MAIN_ID { get; set; }

        /// <summary>
        /// 导航：安全检查库
        /// </summary>
        [Description("导航：安全检查库")]
        public virtual T_BS_CHECK_MAIN Nav_CheckMain { get; set; }

        /// <summary>
        /// 安全检查是否修改检查库
        /// </summary>
        [Description("安全检查是否修改检查库")]
        public bool ISMAINCHANGE { get; set; }

        /// <summary>
        /// 导航属性：检查明细人员
        /// </summary>
        [Description("导航：检查明细人员")]
        public virtual ICollection<T_BS_SAFE_CHECK_DETAIL_USER> Nav_ListCheckDetailUser { get; set; }

        /// <summary>
        /// 导航属性：检查明细问题
        /// </summary>
        [Description("导航：检查明细问题")]
        public virtual ICollection<T_BS_SAFE_CHECK_DETAIL_QUESTION> Nav_ListCheckDetailQuestion { get; set; }



        /// <summary>
        /// 检查情况  等待检查0  部分人员确认10  结束检查20
        /// </summary>
        [Description("检查情况")]
        [EnumName("CHECKTYPEEnum")]
        public int CHECKTYPE { get; set; }

        /// <summary>
        /// 检查结果
        /// </summary>
        [Description("检查结果")]
        [FormFieldTable]
        [FormFieldEdit]
        [EnumName("CHECKRESULTEnum")]
        public int? CHECKRESULT { get; set; }

        /// <summary>
        /// 检查结果描述
        /// </summary>
        [Description("检查结果描述")]
        [DataFieldIngore]
        public string CHECKRESULT_DESCRIPTION { get; set; }

        /// <summary>
        /// 检查记录->问题描述【其他】中的备注
        /// </summary>
        [Description("备注")]
        [FormFieldEdit]
        public string REMARK_RESULT { get; set; }


        /// <summary>
        /// 如果不是系统里面的 需要手动设置检查等级
        /// </summary>
        [Description("问题等级")]
        [EnumName("BSQuestionLevelEnum")]
        [FormFieldEdit]
        [FormFieldTable]
        public int? QUESTION_LEVEL { get; set; }

        /// <summary>
        /// 问题等级描述
        /// </summary>
        [Description("问题等级")]
        [DataFieldIngore]
        public string QUESTION_LEVEL_DESCRIPTION { get; set; }


        /// <summary>
        /// 序号
        /// </summary>
        [Description("序号")]
        [FormFieldEdit]
        public int ROW_NO { get; set; }











        /// <summary>
        /// 检查区域
        /// </summary>
        [Description("检查区域")]
        [DataFieldForeignKey("Nav_CheckArea")]
        public Guid? RISK_AREA_ID { get; set; }
        /// <summary>
        /// 检查区域
        /// </summary>
        [Description("导航：检查区域")]
        public virtual T_HM_RISK_AREA Nav_CheckArea { get; set; }


        /// <summary>
        /// 检查项目
        /// </summary>
        [Description("检查项目")]
        [DataFieldForeignKey("Nav_CheckProject")]
        public Guid? CHECK_PROJECT_ID { get; set; }
        /// <summary>
        /// 检查项目
        /// </summary>
        [Description("导航：检查项目")]
        public virtual T_BS_CHECK_PROJECT Nav_CheckProject { get; set; }

        /// <summary>
        /// 检查项目分类 关联表
        /// </summary>
        [Description("检查项目分类")]
        [DataFieldForeignKey("Nav_CheckProjectProjectCategory")]
        [FormFieldEdit]
        [FormFieldTable]
        public Guid? CHECK_PROJECT_PROJECT_CATEGORY_ID { get; set; }

        /// <summary>
        /// 检查项目分类 关联表
        /// </summary>
        [Description("导航：检查项目分类")]
        public virtual T_BS_CHECK_PROJECT_PROJECT_CATEGORY Nav_CheckProjectProjectCategory { get; set; }

        /// <summary>
        /// 检查项目分类 关联表
        /// </summary>
        [Description("检查项目分类")]
        [DataFieldForeignKey("Nav_CheckProjectCategory")]
        [FormFieldEdit]
        [FormFieldTable]
        public Guid? CHECK_PROJECT_CATEGORY_ID { get; set; }

        /// <summary>
        /// 检查项目分类 关联表
        /// </summary>
        [Description("导航：检查项目分类")]
        public virtual T_BS_CHECK_PROJECT_CATEGORY Nav_CheckProjectCategory { get; set; }


        /// <summary>
        /// 检查问题 
        /// </summary>
        [Description("检查问题")]
        [DataFieldForeignKey("Nav_CheckQuestion")]
        public Guid? CHECK_QUESTION_ID { get; set; }
        /// <summary>
        /// 检查问题
        /// </summary>
        [Description("导航：检查问题")]
        public virtual T_BS_CHECK_QUESTION Nav_CheckQuestion { get; set; }


        /// <summary>
        /// 检查内容
        /// </summary>
        [Description("检查内容")]
        [FormFieldTable]
        [FormFieldEdit]
        [DataFieldLength(500)]
        public string CHECKCONTENT { get; set; }

        /// <summary>
        /// 检查依据
        /// </summary>
        [Description("检查依据")]
        [FormFieldTable]
        [FormFieldEdit]
        [DataFieldLength(500)]
        public string CHECKPROOF { get; set; }

        /// <summary>
        /// 检查依据
        /// </summary>
        [Description("检查依据")]
        public ICollection<T_BS_SAFE_CHECK_DETAIL_LAW> Nav_ListLaw { get; set; }


        /// <summary>
        /// 是否重大隐患 否 = 0,是 = 1,
        /// </summary>
        [Description("是否重大隐患")]
        [FormFieldEdit]
        [FormFieldTable]
        public BSSeriousRiskEnum? SERIOUS_RISK { get; set; }

        /// <summary>
        /// 是否自动加载
        /// </summary>
        [DataFieldIngore]
        [Description("是否自动加载")]
        public bool? ISAUTOLOAD { get; set; }

        /// <summary>
        /// 责任部门
        /// </summary>
        [Description("责任部门")]
        public Guid? DEPARTMENT_ID { get; set; }


        /// <summary>
        /// 检查内容
        /// </summary>
        [Description("检查内容")]
        [DataFieldForeignKey("Nav_Contents")]
        public Guid? CHECK_CONTENTS_ID { get; set; }

        /// <summary>
        /// 检查内容
        /// </summary>
        [Description("检查内容")]
        public virtual T_BS_CHECK_CONTENTS Nav_Contents { get; set; }


        /// <summary>
        /// 隐患地点
        /// </summary>
        [Description("隐患地点")]
        [FormFieldEdit]
        [DataFieldLength(100)]
        public string ADDRESS { get; set; }

        /// <summary>
        /// 检查明细隐患原因
        /// </summary>
        [Description("检查明细隐患原因")]
        public virtual ICollection<T_BS_SAFE_CHECK_DETAIL_REASON> Nav_ListCheckDetailReason { get; set; }

        /// <summary>
        /// 导航：检查附件表
        /// </summary>
        [Description("导航：检查附件表")]
        public virtual ICollection<T_BS_SAFE_CHECK_DETAIL_FILE> Nav_Files { get; set; }

        /// <summary>
        /// 是否退回中
        /// 检查确认人 可以退回 发送表单给 检查登记人 （如果有其他人需要确认 继续按原来的表单确认 ） 检查登记人判断是否修改检查结果
        /// 如果修改检查结果 给 【检查确认有问题的人 发送 今日提醒 此字段改为 false】之后如果有人继续 【确认】 单子就按修改后的进去确认
        /// </summary>
        [Description("是否退回中")]
        public bool IS_REJECTING { get; set; }

        /// <summary>
        /// 退回人 （退回中时，此人页面加载不显示此条数据）
        /// </summary>
        [Description("退回人")]
        public Guid? USERID_REJECT { get; set; }

        /// <summary>
        /// 退回记录
        /// </summary>
        [Description("退回记录")]
        [DataFieldIngore]
        public virtual T_BS_SAFE_CHECK_DETAIL_REJECT Nav_Reject { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        [Description("备注")]
        [FormFieldEdit]
        [DataFieldLength(100)]
        public string REMARK { get; set; }
    }
}