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_INFO", Schema = "JHAMES")]
    public partial class NgInfo
    {
        /// <summary>
        /// 測試不良ID
        /// </summary>
        [Key]
        [Column("NG_ID")]
        [DataMember]
        [Display(Name = "測試不良ID")]
        [Required]
        public int NgID { get; set; }

        /// <summary>
        /// 測試種類代碼
        /// </summary>
        [Required]
        [Column("TYPE_NO")]
        [StringLength(6)]
        [Display(Name = "測試種類代碼")]
        [DataMember]
        public string TypeNo { get; set; }

        /// <summary>
        /// 測試員代號
        /// </summary>
        [Column("OPERATOR_ID")]
        [Display(Name = "測試員代號")]
        [DataMember]
        public int OperatorID { get; set; }

        /// <summary>
        /// 治具代號
        /// </summary>
        [Required]
        [Column("FIXTURE_NO")]
        [StringLength(20)]
        [Display(Name = "治具代號")]
        [DataMember]
        public string FixtureNo { get; set; }

        /// <summary>
        /// 測試程試代號/名稱
        /// </summary>
        [Required]
        [Column("PROGRAM_NO")]
        [StringLength(20)]
        [Display(Name = "測試程試代號/名稱")]
        [DataMember]
        public string ProgramNo { get; set; }

        /// <summary>
        /// 設備代號
        /// </summary>
        [Required]
        [Column("MACHINE_NO")]
        [StringLength(20)]
        [Display(Name = "設備代號")]
        [DataMember]
        public string MachineNo { get; set; }

        /// <summary>
        /// 測試總點數
        /// </summary>
        [Column("TEST_QTY")]
        [Display(Name = "測試總點數")]
        [DataMember]
        public int TestQty { get; set; } = 0;

        /// <summary>
        /// 不良總點數
        /// </summary>
        [Column("NG_QTY")]
        [Display(Name = "不良總點數")]
        [DataMember]
        public int NgQty { get; set; } = 0;

        /// <summary>
        /// 開始測試時間
        /// </summary>
        [Column("START_TIME")]
        [Display(Name = "開始測試時間")]
        [DataMember]
        public DateTime StartTime { get; set; } = System.DateTime.Now;

        /// <summary>
        /// 結束測試時間
        /// </summary>
        [Column("END_TIME")]
        [Display(Name = "結束測試時間")]
        [DataMember]
        public DateTime EndTime { get; set; } = System.DateTime.Now;

        /// <summary>
        /// 測試狀態(F-FAIL)
        /// </summary>
        [Required]
        [Column("TEST_STATUS")]
        [StringLength(1)]
        [Display(Name = "測試狀態")]
        [DataMember]
        public string TestStatus { get; set; } = "F";

        /// <summary>
        /// 內部條碼ID
        /// </summary>
        [Column("BARCODE_ID")]
        [Display(Name = "內部條碼ID")]
        [DataMember]
        public int BarcodeID { get; set; }

        /// <summary>
        /// 作業站ID
        /// </summary>
        [Column("STATION_ID")]
        [Display(Name = "作業站ID")]
        [DataMember]
        public int StationId { get; set; }

        /// <summary>
        /// 工單ID
        /// </summary>
        [Column("WIP_ID")]
        [Display(Name = "工單ID")]
        [DataMember]
        public int WipId { get; set; }

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

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

        /// <summary>
        /// 不良代碼指向的下一站ID
        /// </summary>
        [Column("NEXT_STATION_ID")]
        [Display(Name = "不良代碼指向的下一站ID")]
        [DataMember]
        public int NextStationId { get; set; } = -1;

        /// <summary>
        /// 不良時的組件數量
        /// </summary>
        [Column("ITEM_QTY")]
        [Display(Name = "不良時的組件數量")]
        [DataMember]
        public int ItemQty { get; set; } = -1;

        /// <summary>
        /// 不良備註
        /// </summary>
        [Column("NG_MEMO")]
        [Display(Name = "不良備註")]
        [StringLength(300)]
        [DataMember]
        public string NgMemo { get; set; }

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

        /// <summary>
        /// 創建日期
        /// </summary>
        [Column("CREATE_DATE")]
        [DataMember]
        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;


        /// <summary>
        /// 條碼資料
        /// </summary>
        public virtual AMESCoreStudio.WebApi.Models.AMES.BarcodeInfo Barcode { get; set; }


        /// <summary>
        /// 工單資料
        /// </summary>
        public virtual AMESCoreStudio.WebApi.Models.AMES.WipInfo Wip { get; set; }


        /// <summary>
        /// 站別資料
        /// </summary>
        public virtual AMESCoreStudio.WebApi.Models.BAS.Stations Station { get; set; }

        /// <summary>
        /// 用戶資料
        /// </summary>
        //public virtual AMESCoreStudio.WebApi.Models.SYS.UserInfo User { get; set; }
    }
}