Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/Aitex/Core/Common/WaferInfoRt.cs

514 lines
13 KiB
C#
Raw Normal View History

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; }
[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
}