2023-04-13 11:51:03 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Runtime.Serialization;
|
2023-08-10 14:20:55 +08:00
|
|
|
|
using DocumentFormat.OpenXml.Bibliography;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
using MECF.Framework.Common.CommonData;
|
|
|
|
|
using MECF.Framework.Common.Jobs;
|
2023-08-10 14:20:55 +08:00
|
|
|
|
using MECF.Framework.Common.Properties;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
|
|
|
|
namespace Aitex.Core.Common
|
|
|
|
|
{
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[Serializable]
|
|
|
|
|
[DataContract]
|
|
|
|
|
public class WaferInfoRt : NotifiableItem
|
|
|
|
|
{
|
|
|
|
|
#region WaferInfo
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
public bool IsWaferEmpty => WaferStatus == WaferStatus.Empty;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public Guid WaferInnerID { get; set; } = Guid.Empty;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public string LotId { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public ProcessJobInfo ProcessJob { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int NextSequenceStep { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int WaferOriginStation { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int WaferOriginSlot { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public WaferSize Size { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public bool HasWarning { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public string PPID { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public string TransFlag { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
private string waferID;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string WaferID
|
|
|
|
|
{
|
|
|
|
|
get => waferID;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
waferID = value;
|
|
|
|
|
InvokePropertyChanged("WaferID");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string processJobID;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string ProcessJobID
|
|
|
|
|
{
|
|
|
|
|
get => processJobID;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
processJobID = value;
|
|
|
|
|
InvokePropertyChanged("ProcessJobID");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string controlJobID;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string ControlJobID
|
|
|
|
|
{
|
|
|
|
|
get => controlJobID;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
controlJobID = value;
|
|
|
|
|
InvokePropertyChanged("ControlJobID");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string _waferOrigin;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string WaferOrigin
|
|
|
|
|
{
|
|
|
|
|
get => _waferOrigin;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
_waferOrigin = value;
|
|
|
|
|
InvokePropertyChanged("WaferOrigin");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private WaferStatus waferStatus = WaferStatus.Empty;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public WaferStatus WaferStatus
|
|
|
|
|
{
|
|
|
|
|
get => waferStatus;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
waferStatus = value;
|
|
|
|
|
InvokePropertyChanged("WaferStatus");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool isChecked;
|
|
|
|
|
public bool IsChecked
|
|
|
|
|
{
|
|
|
|
|
get => isChecked;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
isChecked = value;
|
|
|
|
|
InvokePropertyChanged("IsChecked");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private WaferProcessStatus processState;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public WaferProcessStatus ProcessState
|
|
|
|
|
{
|
|
|
|
|
get => processState;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
processState = value;
|
|
|
|
|
InvokePropertyChanged("ProcessStatus");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SubstrateTransportStatus substtransstatus;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public SubstrateTransportStatus SubstTransStatus
|
|
|
|
|
{
|
|
|
|
|
get => substtransstatus;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
substtransstatus = value;
|
|
|
|
|
InvokePropertyChanged("SubstTransStatus");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private EnumE90Status Subste90status;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public EnumE90Status SubstE90Status
|
|
|
|
|
{
|
|
|
|
|
get => Subste90status;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
Subste90status = value;
|
|
|
|
|
InvokePropertyChanged("SubstE90Status");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SubstHistory[] substhists;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public SubstHistory[] SubstHists
|
|
|
|
|
{
|
|
|
|
|
get => substhists;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
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;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
trayState = value;
|
|
|
|
|
InvokePropertyChanged("TrayState");
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
#endregion
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public string CurrentCarrierID { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int Station { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int Slot { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public string OriginCarrierID { get; set; }
|
2023-06-12 13:48:19 +08:00
|
|
|
|
|
|
|
|
|
[DataMember]
|
2023-08-10 14:20:55 +08:00
|
|
|
|
public int DestinationStation { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public string DestinationCarrierID { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int DestinationSlot { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int NextStation { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int NextStationSlot { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
[DataMember]
|
|
|
|
|
public int Notch { get; set; }
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
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 δʹ<EFBFBD><EFBFBD>
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
private string laserMarker;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string LaserMarker
|
|
|
|
|
{
|
|
|
|
|
get => laserMarker;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
laserMarker = value;
|
|
|
|
|
InvokePropertyChanged("LaserMarker");
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
private string t7Code;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string T7Code
|
|
|
|
|
{
|
|
|
|
|
get => t7Code;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
t7Code = value;
|
|
|
|
|
InvokePropertyChanged("T7Code");
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-04-13 11:51:03 +08:00
|
|
|
|
|
2023-08-10 14:20:55 +08:00
|
|
|
|
private string _laserMarkerScore;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string LaserMarkerScore
|
|
|
|
|
{
|
|
|
|
|
get => _laserMarkerScore;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
_laserMarkerScore = value;
|
|
|
|
|
InvokePropertyChanged("LaserMarker1Score");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string _t7CodeScore;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string T7CodeScore
|
|
|
|
|
{
|
|
|
|
|
get => _t7CodeScore;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
_t7CodeScore = value;
|
|
|
|
|
InvokePropertyChanged("T7CodeScore");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string _imageFileName;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string ImageFileName
|
|
|
|
|
{
|
|
|
|
|
get => _imageFileName;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
_imageFileName = value;
|
|
|
|
|
InvokePropertyChanged("ImageFileName");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string _imageFilePath;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public string ImageFilePath
|
|
|
|
|
{
|
|
|
|
|
get => _imageFilePath;
|
2023-04-13 11:51:03 +08:00
|
|
|
|
set
|
2023-08-10 14:20:55 +08:00
|
|
|
|
{
|
|
|
|
|
_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;
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-04-13 11:51:03 +08:00
|
|
|
|
}
|