using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;

#nullable disable

namespace AMESCoreStudio.WebApi.Models.AMES
{
    /// <summary>
    /// 測試不良零件資料檔
    /// </summary>
    [Table("NG_COMPONENT", Schema = "JHAMES")]
    public partial class NgComponent
    {
        /// <summary>
        /// 不良零件ID
        /// </summary>
        [Key]
        [Column("COMPONENT_ID")]
        [DataMember]
        [Required]
        [Display(Name = "不良零件ID")]
        public int ComponentID { get; set; }

        /// <summary>
        /// 測試不良ID
        /// </summary>
        [Column("NG_ID")]
        [DataMember]
        [Required]
        [Display(Name = "測試不良ID")]
        public int NgID { get; set; }

        /// <summary>
        /// 零件位置代碼
        /// </summary>
        [Required]
        [Column("LOCATION_NO")]
        [StringLength(20)]
        [DataMember]
        [Display(Name = "零件位置代碼")]
        public string LocationNo { get; set; }

        /// <summary>
        /// 不良腳位數量
        /// </summary>
        [Column("PIN_QTY")]
        [DataMember]
        [Display(Name = "不良腳位數量")]
        public int PinQty { get; set; }

        /// <summary>
        /// 不良原因代碼
        /// </summary>
        [Required]
        [Column("NG_NO")]
        [StringLength(10)]
        [DataMember]
        [Display(Name = "不良原因代碼")]
        public string NgNo { get; set; }

        /// <summary>
        /// 不良原因描述
        /// </summary>
        [Column("ERROR_DESC")]
        [StringLength(300)]
        [DataMember]
        [Display(Name = "不良原因描述")]
        public string ErrorDesc { get; set; }

        /// <summary>
        /// 平均高度測試值
        /// </summary>
        [Column("HEIGHT_AVG")]
        [DataMember]
        [Display(Name = "平均高度測試值")]
        public decimal HeightAvg { get; set; } = 0;

        /// <summary>
        /// 平均面積測試值
        /// </summary>
        [Column("AREA_AVG")]
        [DataMember]
        [Display(Name = "平均面積測試值")]
        public decimal AreaAvg { get; set; } = 0;

        /// <summary>
        /// 平均體積測試值
        /// </summary>
        [Column("VOLUME_AVG")]
        [DataMember]
        [Display(Name = "平均體積測試值")]
        public decimal VolumeAvg { get; set; } = 0;

        /// <summary>
        /// 平均X軸偏移量測試值
        /// </summary>
        [Column("X_OFFSET_AVG")]
        [DataMember]
        [Display(Name = "平均X軸偏移量測試值")]
        public decimal XOffsetAvg { get; set; } = 0;

        /// <summary>
        /// 平均Y軸偏移量測試值
        /// </summary>
        [Column("Y_OFFSET_AVG")]
        [DataMember]
        [Display(Name = "平均Y軸偏移量測試值")]
        public decimal YOffsetAvg { get; set; } = 0;

        /// <summary>
        /// 處理狀態(0:尚未維修處理, 1:已維修處理, 2:誤判)
        /// </summary>
        [Column("STATUS")]
        [DataMember]
        [Display(Name = "處理狀態")]
        public int Status { get; set; } = 0;

        /// <summary>
        /// 更換料號
        /// </summary>
        //[Required]
        [Column("CHANGE_MATERIAL")]
        [StringLength(50)]
        [DataMember]
        [Display(Name = "更換料號")]
        public string ChangeMaterial { get; set; }

        /// <summary>
        /// PIN
        /// </summary>
        //[Required]
        [Column("PIN_NO")]
        [StringLength(20)]
        [DataMember]
        [Display(Name = "PIN")]
        public string PinNo { get; set; }

        /// <summary>
        /// 組件代碼
        /// </summary>
        //[Required]
        [Column("KEY_NO")]
        [StringLength(4)]
        [DataMember]
        [Display(Name = "組件代碼")]
        public string KeyNo { get; set; }

        /// <summary>
        /// 舊組件序號
        /// </summary>
        //[Required]
        [Column("OLD_PART_NO")]
        [StringLength(1000)]
        [DataMember]
        [Display(Name = "舊組件序號")]
        public string OldPartNo { get; set; }

        /// <summary>
        /// 新組件序號
        /// </summary>
        //[Required]
        [Column("NEW_PART_NO")]
        [StringLength(1000)]
        [DataMember]
        [Display(Name = "新組件序號")]
        public string NewPartNo { get; set; }

        /// <summary>
        /// 料卷號
        /// </summary>
        //[Required]
        [Column("REEL_NO")]
        [StringLength(50)]
        [DataMember]
        [Display(Name = "料卷號")]
        public string ReelNo { get; set; }

        /// <summary>
        /// 回覆原因
        /// </summary>
        //[Required]
        [Column("REPLY_REASON")]
        [StringLength(50)]
        [DataMember]
        [Display(Name = "回覆原因")]
        public string ReplyReason { get; set; }

        /// <summary>
        /// 回覆對策
        /// </summary>
        //[Required]
        [Column("REPLY_MEASURE")]
        [StringLength(50)]
        [DataMember]
        [Display(Name = "回覆對策")]
        public string ReplyMeasure { get; set; }

        /// <summary>
        /// 回覆人員ID
        /// </summary>
        [Column("REPLY_USERID")]
        [DataMember]
        [Display(Name = "回覆人員ID")]
        public int ReplyUserID { get; set; }

        /// <summary>
        /// 回覆日期
        /// </summary>
        [Column("REPLY_DATE")]
        [DataMember]
        [Display(Name = "回覆日期")]
        public DateTime ReplyDate { get; set; }

        /// <summary>
        /// DATECODE
        /// </summary>
        //[Required]
        [Column("DATECODE")]
        [StringLength(50)]
        [DataMember]
        [Display(Name = "DATECODE")]
        public string DateCode { get; set; }


        /// <summary>
        /// 供應商
        /// </summary>
        [Column("VENDOR_CODE")]
        [StringLength(100)]
        [DataMember]
        [Display(Name = "供應商")]
        public string VendorCode { get; set; }

        /// <summary>
        /// 成品料號
        /// </summary>
        [Column("SEMI_ITEM_NO")]
        [StringLength(100)]
        [DataMember]
        [Display(Name = "成品料號")]
        public string SemiItemNo { get; set; }

        /// <summary>
        /// 創建者ID
        /// </summary>
        [Column("CREATE_USERID")]
        [DataMember]
        public int CreateUserID { get; set; } = 0;

        /// <summary>
        /// 創建日期
        /// </summary>
        [Column("CREATE_DATE")]
        [DataMember]
        [Display(Name = "不良時間")]
        public DateTime CreateDate { get; set; } = System.DateTime.Now;

        /// <summary>
        /// 更新者ID
        /// </summary>
        [Column("UPDATE_USERID")]
        [DataMember]
        public int UpdateUserID { get; set; } = 0;

        /// <summary>
        /// 更新日期
        /// </summary>
        [Column("UPDATE_DATE", TypeName = "DATE")]
        [DataMember]
        public DateTime UpdateDate { get; set; } = System.DateTime.Now;
    }
}