| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 | using Aitex.Core.Common;using MECF.Framework.Common.CommonData;using MECF.Framework.Common.Equipment;using MECF.Framework.Common.RecipeCenter;using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.Text;using System.Threading.Tasks;namespace MECF.Framework.Common.WaferHolder{    public enum WaferHolderStatus    {        Disabled = 0,        Empty = 1,        Normal = 2,        Processing = 3,        Completed=4,        Failed=5,        MisProcessed=6    }    [DataContract]    public class WaferHolderInfo : NotifiableItem    {                [DataMember]        public string Id { get; set; }        /// <summary>        /// 创建时所在buffer Id        /// </summary>        [DataMember]        public Int32 BufferId { get; set; }        /// <summary>        /// 类型        /// </summary>        [DataMember]        public string CrsType { get; set; }        /// <summary>        /// Wafer尺寸        /// </summary>        [DataMember]        public Int32 WaferSize { get; set; }        /// <summary>        /// 可用性        /// </summary>        [DataMember]        public Boolean Enabled { get; set; }        /// <summary>        /// 化学用剂        /// </summary>        [DataMember]        public string Chemistry { get; set; }        /// <summary>        /// CRS-A Id        /// </summary>        [DataMember]        public string CrsAId { get; set; }        /// <summary>        /// CRS-A总次数        /// </summary>        [DataMember]        public int CrsATotalUses { get; set; }        /// <summary>        /// CRS-A pad清理后次数        /// </summary>        [DataMember]        public int CrsAUsesSincePadClean { get; set; }        /// <summary>        /// CRS-A seal清理后次数        /// </summary>        [DataMember]        public int CrsAUsesSinceSealClean { get; set; }        /// <summary>        /// CRS-B Id        /// </summary>        [DataMember]        public string CrsBId { get; set; }        /// <summary>        /// CRS-A总次数        /// </summary>        [DataMember]        public int CrsBTotalUses { get; set; }        /// <summary>        /// CRS-A pad清理后次数        /// </summary>        [DataMember]        public int CrsBUsesSincePadClean { get; set; }        /// <summary>        /// CRS-A seal清理后次数        /// </summary>        [DataMember]        public int CrsBUsesSinceSealClean { get; set; }        /// <summary>        /// 所有使用次数        /// </summary>        [DataMember]        public int TotalUses { get; set; }        /// <summary>        /// 所有生产片使用次数        /// </summary>                [DataMember]        public int TotalProductWafers { get; set; }        /// <summary>        /// Dummy Wafes数量        /// </summary>        [DataMember]        public int TotalDummyWafers { get; set; }        /// <summary>        /// 当前位置        /// </summary>        [DataMember]        public string CurrentLocation { get; set; }        /// <summary>        /// Wafer A ID        /// </summary>        [DataMember]        public string WaferAId { get; set; }        /// <summary>        /// Wafer A类型        /// </summary>        [DataMember]        public int WaferAType { get; set; }        /// <summary>        /// Wafer B ID        /// </summary>        [DataMember]        public string WaferBId { get; set; }        /// <summary>        /// Wafer B 类型        /// </summary>        [DataMember]        public int WaferBType { get; set; }        /// <summary>        /// 当前ProcessJob        /// </summary>        [DataMember]        public string CurrentProcessJobId { get; set; }        /// <summary>        /// 当前ControlJob        /// </summary>        [DataMember]        public string CurrentControlJobId { get; set; }        /// <summary>        /// 当前LotID         /// </summary>        [DataMember]        public string LotId { get; set; }        /// <summary>        /// 状态        /// </summary>        [DataMember]        public WaferHolderStatus Status { get; set; }        /// <summary>        /// 创建时间        /// </summary>        [DataMember]        public DateTime CreateTime { get; set; }        /// <summary>        /// 最后一次更新时间        /// </summary>        [DataMember]        public DateTime LastUpdateTime { get; set; }        /// <summary>        /// Sequence Id        /// </summary>        public string SequenceId { get; set; }        /// <summary>        /// Sequence Recipe        /// </summary>        [DataMember]        public SequenceRecipe SequenceRecipe { get; set; }        /// <summary>        /// Metal模块名称        /// </summary>        public ModuleName MetalModuleName { get; set; }        /// <summary>        /// 调度经过所有过程        /// </summary>        public List<string> SchedulerModules { get; set; } = new List<string>();        /// <summary>        /// 是否可以去Loader        /// </summary>        public bool IsToLoader { get; set; } = true;        /// <summary>        /// 上一个Metal Recipe完成时间        /// </summary>        public DateTime LastMetalRecipeCompleteTime { get; set; }        /// <summary>        /// 起始的位置        /// </summary>        public string OriginalBuffer { get; set; }        /// <summary>        /// 初始化Wafer信息        /// </summary>        /// <param name="waferCapacity"></param>        /// <param name="waferSize"></param>        public void InitWaferInfo(int waferSize)        {            this.WaferSize = waferSize;        }        /// <summary>        /// 克隆        /// </summary>        /// <param name="info"></param>        public void Clone(WaferHolderInfo info)        {            this.Id= info.Id;            this.CrsType = info.CrsType;            this.WaferSize = info.WaferSize;            this.Enabled = info.Enabled;            this.CrsAId = info.CrsAId;            this.CrsATotalUses = info.CrsATotalUses;            this.CrsAUsesSinceSealClean = info.CrsAUsesSinceSealClean;            this.CrsAUsesSincePadClean = info.CrsAUsesSincePadClean;            this.CrsBId = info.CrsBId;            this.CrsBTotalUses = info.CrsBTotalUses;            this.CrsBUsesSinceSealClean = info.CrsBUsesSinceSealClean;            this.CrsBUsesSincePadClean = info.CrsBUsesSincePadClean;            this.Chemistry = info.Chemistry;            this.TotalUses = info.TotalUses;            this.TotalProductWafers = info.TotalProductWafers;            this.CurrentLocation = info.CurrentLocation;            this.CurrentProcessJobId = info.CurrentProcessJobId;            this.CurrentControlJobId = info.CurrentControlJobId;            this.Status = info.Status;            this.WaferAId= info.WaferAId;            this.WaferBId= info.WaferBId;            this.SequenceId = info.SequenceId;            this.SequenceRecipe = info.SequenceRecipe;        }        /// <summary>        /// 克隆        /// </summary>        /// <param name="info"></param>        public void CloneBaseInfo(WaferHolderInfo info)        {            this.Id = info.Id;            this.BufferId = info.BufferId;            this.CrsType = info.CrsType;            this.WaferSize = info.WaferSize;            this.Enabled = info.Enabled;            this.CrsATotalUses = info.CrsATotalUses;            this.CrsAUsesSinceSealClean = info.CrsAUsesSinceSealClean;            this.CrsAUsesSincePadClean = info.CrsAUsesSincePadClean;            this.CrsBTotalUses = info.CrsBTotalUses;            this.CrsBUsesSinceSealClean = info.CrsBUsesSinceSealClean;            this.CrsBUsesSincePadClean = info.CrsBUsesSincePadClean;            this.TotalUses = info.TotalUses;            this.TotalProductWafers = info.TotalProductWafers;            this.CurrentLocation = info.CurrentLocation;            this.Chemistry=info.Chemistry;            this.WaferAId = info.WaferAId;            this.WaferBId = info.WaferBId;        }    }}
 |