using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.Serialization; using System.Text; using MECF.Framework.Common.CommonData; using MECF.Framework.Common.Jobs; namespace Aitex.Core.Common { public enum WaferSize { WS0, //undefine, initialize status WS3, WS4, WS6, WS150, //150mm WS159, //150mm with tray WS8, WS12, } public enum WaferStatus { Empty = 0, Normal = 1, Crossed = 3, Double = 7, Unknown = 8, Dummy = 4 } public enum EnumWaferProcessStatus { Idle = 0, InProcess, Completed, Failed, Wait, } public enum EnumWaferProcessResult { Unprocessed = 0, Warning, Alarm, Aborted, } [Obsolete("Do not use this enum, using EnumWaferProcessStatus instead")] public enum ProcessStatus { Idle = 0, Wait = 1, Busy = 2, Completed = 3, Failed = 4, } [Serializable] [DataContract] public class WaferInfo : NotifiableItem { public bool IsEmpty { get { return Status == WaferStatus.Empty; } } private string waferID; [DataMember] public string WaferID { get { return waferID; } set { waferID = value; InvokePropertyChanged("WaferID"); } } private string _waferOrigin; [DataMember] public string WaferOrigin { get { return _waferOrigin; } set { _waferOrigin = value; InvokePropertyChanged("WaferOrigin"); } } private string laserMarker; [DataMember] public string LaserMarker { get { return laserMarker; } set { laserMarker = value; InvokePropertyChanged("LaserMarker"); } } private string t7Code; [DataMember] public string T7Code { get { return t7Code; } set { t7Code = value; InvokePropertyChanged("T7Code"); } } [DataMember] public string LotId { get; set; } [DataMember] public string TransFlag { get; set; } private WaferStatus status; [DataMember] public WaferStatus Status { get { return status; } set { status = value; InvokePropertyChanged("Status"); } } [DataMember] public int Station { get; set; } [DataMember] public int Slot { get; set; } [DataMember] public int OriginStation { get; set; } [DataMember] public int OriginSlot { get; set; } [DataMember] public string OriginCarrierID { get; set; } [DataMember] public int SourceStation { get; set; } [DataMember] public int SourceSlot { get; set; } [DataMember] public int DestinationStation { get; set; } [DataMember] public int DestinationSlot { get; set; } [DataMember] public int Notch { get; set; } [DataMember] public WaferSize Size { get; set; } [DataMember] public string SequenceName { get; set; } private EnumWaferProcessStatus processState; [DataMember] public EnumWaferProcessStatus ProcessState { get { return processState; } set { processState = value; InvokePropertyChanged("ProcessStatus"); } } private bool isSource; [DataMember] public bool IsSource { get { return isSource; } set { isSource = value; InvokePropertyChanged("IsSource"); } } private bool isDestination; [DataMember] public bool IsDestination { get { return isDestination; } set { isDestination = value; InvokePropertyChanged("IsDestination"); } } [DataMember] public Guid InnerId { get; set; } [DataMember] public ProcessJobInfo ProcessJob { get; set; } [DataMember] public int NextSequenceStep { get; set; } public WaferInfo() { InnerId = Guid.Empty; } public WaferInfo(string waferID, WaferStatus status = WaferStatus.Empty) : this() { this.WaferID = waferID; this.Status = status; } public void Update(WaferInfo source) { InnerId = source.InnerId; WaferID = source.waferID; WaferOrigin = source.WaferOrigin; LaserMarker = source.LaserMarker; T7Code = source.T7Code; Status = source.Status; ProcessState = source.ProcessState; IsSource = source.IsSource; IsDestination = source.IsDestination; Station = source.Station; Slot = source.Slot; OriginStation = source.OriginStation; OriginSlot = source.OriginSlot; if(source.OriginCarrierID!=null) OriginCarrierID = source.OriginCarrierID; SourceStation = source.SourceStation; SourceSlot = source.SourceSlot; DestinationStation = source.DestinationStation; DestinationSlot = source.DestinationSlot; Notch = source.Notch; Size = source.Size; TransFlag = source.TransFlag; LotId = source.LotId; ProcessJob = source.ProcessJob; NextSequenceStep = source.NextSequenceStep; } public void SetEmpty() { this.InnerId = Guid.Empty; this.WaferID = string.Empty; this.WaferOrigin = string.Empty; this.LaserMarker = string.Empty; this.T7Code = string.Empty; this.Status = (int)WaferStatus.Empty; this.ProcessState = EnumWaferProcessStatus.Idle; this.IsSource = false; this.IsDestination = false; this.Station = 0; this.Slot = 0; this.OriginStation = 0; this.OriginSlot = 0; this.SourceStation = 0; this.SourceSlot = 0; this.DestinationStation = 0; this.DestinationSlot = 0; this.Notch = 0; //this.Size = WaferSize.WS0; //wafersize 保留最后的一次的记录 this.TransFlag = string.Empty; this.LotId = string.Empty; this.ProcessJob = null; this.NextSequenceStep = 0; } } }