514 lines
13 KiB
C#
514 lines
13 KiB
C#
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 δʹ<EFBFBD><EFBFBD>
|
||
|
||
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;
|
||
}
|
||
}
|
||
}
|