using System; using System.Runtime.Serialization; using DocumentFormat.OpenXml.Bibliography; using MECF.Framework.Common.CommonData; using MECF.Framework.Common.Jobs; using MECF.Framework.Common.Properties; namespace Aitex.Core.Common { [Serializable] [DataContract] public class WaferInfoRt : NotifiableItem { #region WaferInfo public bool IsWaferEmpty => WaferStatus == WaferStatus.Empty; [DataMember] public Guid WaferInnerID { get; set; } = Guid.Empty; [DataMember] public string LotId { get; set; } [DataMember] public ProcessJobInfo ProcessJob { get; set; } [DataMember] public int NextSequenceStep { get; set; } [DataMember] public int WaferOriginStation { get; set; } [DataMember] public int WaferOriginSlot { get; set; } [DataMember] public WaferSize Size { get; set; } [DataMember] public bool HasWarning { get; set; } [DataMember] public string PPID { get; set; } [DataMember] public string TransFlag { get; set; } private string waferID; [DataMember] public string WaferID { get => waferID; set { waferID = value; InvokePropertyChanged("WaferID"); } } private string processJobID; [DataMember] public string ProcessJobID { get => processJobID; set { processJobID = value; InvokePropertyChanged("ProcessJobID"); } } private string controlJobID; [DataMember] public string ControlJobID { get => controlJobID; set { controlJobID = value; InvokePropertyChanged("ControlJobID"); } } private string _waferOrigin; [DataMember] public string WaferOrigin { get => _waferOrigin; set { _waferOrigin = value; InvokePropertyChanged("WaferOrigin"); } } private WaferStatus waferStatus = WaferStatus.Empty; [DataMember] public WaferStatus WaferStatus { get => waferStatus; set { waferStatus = value; InvokePropertyChanged("WaferStatus"); } } private bool isChecked; public bool IsChecked { get => isChecked; set { isChecked = value; InvokePropertyChanged("IsChecked"); } } private WaferProcessStatus processState; [DataMember] public WaferProcessStatus ProcessState { get => processState; set { processState = value; InvokePropertyChanged("ProcessStatus"); } } private SubstrateTransportStatus substtransstatus; [DataMember] public SubstrateTransportStatus SubstTransStatus { get => substtransstatus; set { substtransstatus = value; InvokePropertyChanged("SubstTransStatus"); } } private EnumE90Status Subste90status; [DataMember] public EnumE90Status SubstE90Status { get => Subste90status; set { Subste90status = value; InvokePropertyChanged("SubstE90Status"); } } private SubstHistory[] substhists; [DataMember] public SubstHistory[] SubstHists { get => substhists; set { substhists = value; InvokePropertyChanged("SubstHists"); } } #endregion #region TrayInfo public bool IsTrayEmpty => TrayState == TrayStatus.Empty; [DataMember] public Guid TrayInnerID { get; set; } = Guid.Empty; [DataMember] public int TrayProcessCount { get; set; } [DataMember] public int TrayUsedForWhichPM { get; set; } [DataMember] public string TrayBelongTo { get; set; } [DataMember] public int TrayOriginStation { get; set; } [DataMember] public int TrayOriginSlot { get; set; } private TrayStatus trayState = TrayStatus.Empty; [DataMember] public TrayStatus TrayState { get => trayState; set { trayState = value; InvokePropertyChanged("TrayState"); } } #endregion [DataMember] public string CurrentCarrierID { get; set; } [DataMember] public int Station { get; set; } [DataMember] public int Slot { get; set; } [DataMember] public string OriginCarrierID { get; set; } [DataMember] public int DestinationStation { get; set; } [DataMember] public string DestinationCarrierID { get; set; } [DataMember] public int DestinationSlot { get; set; } [DataMember] public int NextStation { get; set; } [DataMember] public int NextStationSlot { get; set; } [DataMember] public int Notch { get; set; } private bool isSource; [DataMember] public bool IsSource { get => isSource; set { isSource = value; InvokePropertyChanged("IsSource"); } } private bool isDestination; [DataMember] public bool IsDestination { get => isDestination; set { isDestination = value; InvokePropertyChanged("IsDestination"); } } #region δʹÓà private string hostlaserMark1; [DataMember] public string HostLaserMark1 { get => hostlaserMark1; set { hostlaserMark1 = value; InvokePropertyChanged("HostLaserMark1"); } } private string hostlaserMark2; [DataMember] public string HostLaserMark2 { get => hostlaserMark2; set { hostlaserMark2 = value; InvokePropertyChanged("HostLaserMark2"); } } private string laserMarker; [DataMember] public string LaserMarker { get => laserMarker; set { laserMarker = value; InvokePropertyChanged("LaserMarker"); } } private string t7Code; [DataMember] public string T7Code { get => t7Code; set { t7Code = value; InvokePropertyChanged("T7Code"); } } private string _laserMarkerScore; [DataMember] public string LaserMarkerScore { get => _laserMarkerScore; set { _laserMarkerScore = value; InvokePropertyChanged("LaserMarker1Score"); } } private string _t7CodeScore; [DataMember] public string T7CodeScore { get => _t7CodeScore; set { _t7CodeScore = value; InvokePropertyChanged("T7CodeScore"); } } private string _imageFileName; [DataMember] public string ImageFileName { get => _imageFileName; set { _imageFileName = value; InvokePropertyChanged("ImageFileName"); } } private string _imageFilePath; [DataMember] public string ImageFilePath { get => _imageFilePath; set { _imageFilePath = value; InvokePropertyChanged("ImageFilePath"); } } #endregion public WaferInfoRt() { } public WaferInfoRt(string waferID) { WaferID = waferID; } public void Update(WaferInfoRt source) { //WaferInfo WaferInnerID = source.WaferInnerID; LotId = source.LotId; ProcessJob = source.ProcessJob; NextSequenceStep = source.NextSequenceStep; WaferOriginStation = source.WaferOriginStation; WaferOriginSlot = source.WaferOriginSlot; Size = source.Size; HasWarning = source.HasWarning; PPID = source.PPID; WaferID = source.WaferID; TransFlag = source.TransFlag; ProcessJobID = source.ProcessJobID; ControlJobID = source.ControlJobID; WaferOrigin = source.WaferOrigin; WaferStatus = source.WaferStatus; IsChecked = source.IsChecked; ProcessState = source.ProcessState; SubstTransStatus = source.SubstTransStatus; SubstE90Status = source.SubstE90Status; SubstHists = source.SubstHists; //TrayInfo TrayInnerID = source.TrayInnerID; TrayProcessCount = source.TrayProcessCount; TrayUsedForWhichPM = source.TrayUsedForWhichPM; TrayBelongTo = source.TrayBelongTo; TrayOriginStation = source.TrayOriginStation; TrayOriginSlot = source.TrayOriginSlot; TrayState = source.TrayState; } public WaferInfoRt Clone() { return new WaferInfoRt { //WaferInfo WaferInnerID = WaferInnerID, LotId = LotId, ProcessJob = ProcessJob, NextSequenceStep = NextSequenceStep, WaferOriginStation = WaferOriginStation, WaferOriginSlot = WaferOriginSlot, Size = Size, HasWarning = HasWarning, PPID = PPID, WaferID = WaferID, TransFlag = TransFlag, ProcessJobID = ProcessJobID, ControlJobID = ControlJobID, WaferOrigin = WaferOrigin, WaferStatus = WaferStatus, IsChecked = IsChecked, ProcessState = ProcessState, SubstTransStatus = SubstTransStatus, SubstE90Status = SubstE90Status, SubstHists = SubstHists, //TrayInfo TrayInnerID = TrayInnerID, TrayProcessCount = TrayProcessCount, TrayUsedForWhichPM = TrayUsedForWhichPM, TrayBelongTo = TrayBelongTo, TrayOriginStation = TrayOriginStation, TrayOriginSlot = TrayOriginSlot, TrayState = TrayState, }; } public void SetWaferTrayEmpty() { //WaferInfo WaferInnerID = Guid.Empty; LotId = string.Empty; ProcessJob = null; NextSequenceStep = 0; WaferOriginStation = 0; WaferOriginSlot = 0; Size = WaferSize.WS0; HasWarning = false; PPID = string.Empty; WaferID = string.Empty; TransFlag = string.Empty; ProcessJobID = string.Empty; ControlJobID = string.Empty; WaferOrigin = string.Empty; WaferStatus = WaferStatus.Empty; IsChecked = false; ProcessState = WaferProcessStatus.Idle; SubstTransStatus = SubstrateTransportStatus.None; SubstE90Status = EnumE90Status.None; SubstHists = null; //TrayInfo TrayInnerID = Guid.Empty; TrayProcessCount = 0; TrayUsedForWhichPM = 0; TrayBelongTo = string.Empty; TrayOriginStation = 0; TrayOriginSlot = 0; TrayState = TrayStatus.Empty; } public void SetWaferEmpty() { //WaferInfo WaferInnerID = Guid.Empty; LotId = string.Empty; ProcessJob = null; NextSequenceStep = 0; WaferOriginStation = 0; WaferOriginSlot = 0; Size = WaferSize.WS0; HasWarning = false; PPID = string.Empty; WaferID = string.Empty; TransFlag = string.Empty; ProcessJobID = string.Empty; ControlJobID = string.Empty; WaferOrigin = string.Empty; WaferStatus = WaferStatus.Empty; IsChecked = false; ProcessState = WaferProcessStatus.Idle; SubstTransStatus = SubstrateTransportStatus.None; SubstE90Status = EnumE90Status.None; SubstHists = null; } public void SetTrayEmpty() { //TrayInfo TrayInnerID = Guid.Empty; TrayProcessCount = 0; TrayUsedForWhichPM = 0; TrayBelongTo = string.Empty; TrayOriginStation = 0; TrayOriginSlot = 0; TrayState = TrayStatus.Empty; } } }