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

namespace APT.MS.Domain.Entities.FO
{
    [Description("关键许可工作表")]
    [DataRuleField("DEPARTMENT_ID")]
    public class T_FO_CRUCIAL_LICENSE_JOB : MesEntityBase
    {
        [Description("编号")]
        [DataFieldLength(100)]
        [FormFieldTable]
        [FormFieldQuery]
        public string CODE { get; set; }

        /// <summary>
        /// 作业环节
        /// </summary>
        [Description("作业环节")]
        [DataFieldForeignKey("Nav_OperationStep")]
        [FormFieldEdit]
        public Guid? OPERATION_STEP_ID { get; set; }

        /// <summary>
        /// 导航属性：作业环节
        /// </summary>
        [Description("导航属性：作业环节")]
        public T_HM_OPERATION_STEP Nav_OperationStep { get; set; }

        /// <summary>
        /// 许可作业审批层级
        /// </summary>
        [EnumName("HMOperationTaskAuditEnum")]
        [Description("许可作业审批层级")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public int AUDIT_LEVEL { get; set; }

        [Description("导航属性：作业人员")]
        [FormFieldEdit]
        public ICollection<T_FO_CRUCIAL_LICENSE_PERSON> Nav_CrucialLicensePerson{ get; set; }

        [Description("作业地点")]
        [FormFieldTable]
        [FormFieldQuery]
        public string JOB_LOCATION { get; set; }

        [Description("作业开始时间")]
        [FormFieldTable]
        [FormFieldQuery]
        public DateTime? JOB_DATE { get; set; }

        [Description("作业结束时间")]
        [FormFieldTable]
        [FormFieldQuery]
        public DateTime? JOB_END_DATE { get; set; }

        [Description("作业申请人")]
        [DataFieldForeignKey("Nav_ApplyUser")]
        public Guid? APPLY_USER_ID { get; set; }

        [Description("导航属性：申请人")]
        public virtual T_FM_USER Nav_ApplyUser { get; set; }


        [Description("监护人")]
        [DataFieldForeignKey("Nav_MonitorUser")]
        public Guid? MONITOR_USER_ID { get; set; }

        [Description("导航属性：监护人")]
        public virtual T_FM_USER Nav_MonitorUser { get; set; }

        [Description("作业原因")]
        [DataFieldLength(500)]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public string JobCause { get; set; }

        [Description("作业流程及安全措施")]
        [DataFieldLength(500)]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public string SafeMeasuresStr { get; set; }

        [Description("作业方案")]
        [DataFieldForeignKey("Nav_JobScheme")]
        public Guid? JOB_SCHEME_ID { get; set; }

        [Description("导航属性：作业方案")]
        public virtual T_FO_PRE_OPER_SCH Nav_JobScheme { get; set; }

        [Description("作业方案附件")]
        [DataFieldIngore]
        public virtual ICollection<T_FO_PRE_OPER_SCH_FILE> Nav_PreOperSchFile { get; set; }

        [Description("导航属性：审批")]
        [DataFieldIngore]
        public virtual ICollection<T_PF_APPROVE_DETAIL> Nav_ApproveDetails { get; set; }

        [Description("是否发布")]
        [DataFieldIngore]
        public string PUBLISH { get; set; }
        [Description("表单状态")]
        [EnumName("FOPreMeetingStatusEnum")]
        public int IS_PUBLISH { get; set; }
        [Description("回调接口")]
        [DataFieldIngore]
        public string CALLBACK_INTERFACE { get; set; }

        [Description("是否自动生成")]
        [EnumName("ISImportantEnum")]
        public int IS_AUTO { get; set; }

        /// <summary>
        /// 班前会议记录表
        /// </summary>
        [Description("班前会议记录表")]
        [DataFieldForeignKey("Nav_Meeting")]
        [FormFieldEdit]
        public Guid? SHIFT_MEETING_RECORD_ID { get; set; }

        /// <summary>
        /// 导航属性：班前会议记录表
        /// </summary>
        [Description("导航属性：班前会议记录表")]
        public T_FO_PRE_SHIFT_MEETING_RECORD Nav_Meeting { get; set; }

        /// <summary>
        /// 导航属性：作业前安全确认
        /// </summary>
        [Description("导航属性：作业前安全确认")]
        public virtual ICollection<T_FO_CRUCIAL_LICENSE_SAFE_CONFIRM> Nav_SafeConfirms { get; set; }

        /// <summary>
        /// 导航属性：作业流程及安全措施
        /// </summary>
        [Description("导航属性：作业流程及安全措施")]
        public virtual ICollection<T_FO_CRUCIAL_LICENSE_SAFE_MEASURE> Nav_SafeMeasures { get; set; }

        /// <summary>
        /// 导航属性：作业后处理措施
        /// </summary>
        [Description("导航属性：作业后处理措施")]
        public virtual ICollection<T_FO_CRUCIAL_LICENSE_DEAL_MEASURE> Nav_DealMeasures { get; set; }
        [DataFieldIngore]
        public int IS_OVERTIME { get; set; }
        [Description("部门ID")]
        public Guid? DEPARTMENT_ID { get; set; }

        [Description("驳回意见")]
        [DataFieldIngore]
        public string CONTEXT { get; set; }
        [Description("部门名称")]
        public string PARENT_NAME { get; set; }

        [Description("是否外包")]
        public bool IS_OUTSOURCE { get; set; }

        /// <summary>
        /// 相关方
        /// </summary>
        [Description("相关方")]
        [DataFieldForeignKey("Nav_Related")]
        [FormFieldEdit]
        public Guid? RELATED_ID { get; set; }

        /// <summary>
        /// 导航属性：相关方
        /// </summary>
        [Description("导航属性：相关方")]
        public T_OG_RELATED Nav_Related { get; set; }
    }
}
