整理Slot信息,添加属性和Wafer共享数据
This commit is contained in:
parent
c4b0f20a7a
commit
405a49bb77
|
@ -10,6 +10,7 @@ using MECF.Framework.Common.Jobs;
|
||||||
using MECF.Framework.Common.Properties;
|
using MECF.Framework.Common.Properties;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
|
@ -17,6 +18,7 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
using MECF.Framework.Common.DBCore;
|
||||||
|
|
||||||
namespace Aitex.Core.Common
|
namespace Aitex.Core.Common
|
||||||
{
|
{
|
||||||
|
@ -24,6 +26,9 @@ namespace Aitex.Core.Common
|
||||||
[DataContract]
|
[DataContract]
|
||||||
public class SlotInfor : NotifiableItem
|
public class SlotInfor : NotifiableItem
|
||||||
{
|
{
|
||||||
|
private string _sequenceName;
|
||||||
|
private int _nextSequenceStep;
|
||||||
|
|
||||||
public SlotInfor(ModuleName module,int slotID,int trayNum, int waferNum)
|
public SlotInfor(ModuleName module,int slotID,int trayNum, int waferNum)
|
||||||
{
|
{
|
||||||
ModuleID = module.ToString();
|
ModuleID = module.ToString();
|
||||||
|
@ -52,6 +57,14 @@ namespace Aitex.Core.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpData()
|
||||||
|
{
|
||||||
|
foreach (var waferInfor in WaferInforList ?? Enumerable.Empty<WaferInfor>())
|
||||||
|
{
|
||||||
|
waferInfor.SlotInforUpData(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public int TrayNum { get; private set; }
|
public int TrayNum { get; private set; }
|
||||||
|
|
||||||
public int WaferNum { get; private set; }
|
public int WaferNum { get; private set; }
|
||||||
|
@ -71,9 +84,6 @@ namespace Aitex.Core.Common
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public int SlotID { get; set; }
|
public int SlotID { get; set; }
|
||||||
|
|
||||||
[DataMember]
|
|
||||||
public string CurrentCarrierID { get; set; }
|
|
||||||
|
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public string OriginCarrierID { get; set; }
|
public string OriginCarrierID { get; set; }
|
||||||
|
|
||||||
|
@ -90,8 +100,96 @@ namespace Aitex.Core.Common
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
public int NextStation { get; set; }
|
public int NextStation { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
#region 和Wafer共享的数据,包含Sequence、Recipe相关内容
|
||||||
|
|
||||||
|
private string _recipeName;
|
||||||
|
[DataMember]
|
||||||
|
public string RecipeName
|
||||||
|
{
|
||||||
|
get => _recipeName;
|
||||||
|
set { _recipeName = value; UpData(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public string SequenceName
|
||||||
|
{
|
||||||
|
get => _sequenceName;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_sequenceName=value;
|
||||||
|
UpData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public int NextSequenceStep
|
||||||
|
{
|
||||||
|
get => _nextSequenceStep;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_nextSequenceStep = value;
|
||||||
|
UpData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _lotId;
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public string LotId
|
||||||
|
{
|
||||||
|
get => _lotId;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_lotId = value;
|
||||||
|
UpData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private ProcessJobInfo _processJob;
|
||||||
|
[DataMember]
|
||||||
|
public ProcessJobInfo ProcessJob
|
||||||
|
{
|
||||||
|
get => _processJob;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_processJob = value;
|
||||||
|
UpData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string processJobID;
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public string ProcessJobID
|
||||||
|
{
|
||||||
|
get => processJobID;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
processJobID = value;
|
||||||
|
UpData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string controlJobID;
|
||||||
|
|
||||||
[DataMember]
|
[DataMember]
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
|
public string ControlJobID
|
||||||
|
{
|
||||||
|
get => controlJobID;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
controlJobID = value;
|
||||||
|
UpData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
public int NextStationSlot { get; set; }
|
public int NextStationSlot { get; set; }
|
||||||
|
|
||||||
private bool isSource;
|
private bool isSource;
|
||||||
|
@ -296,6 +394,10 @@ namespace Aitex.Core.Common
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
public string SequenceName { get; set; }
|
public string SequenceName { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
[MoveInfor]
|
||||||
|
public int NextSequenceStep { get; set; }
|
||||||
|
|
||||||
[DataMember]
|
[DataMember]
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
public string WaferID { get; set; }
|
public string WaferID { get; set; }
|
||||||
|
@ -313,11 +415,7 @@ namespace Aitex.Core.Common
|
||||||
|
|
||||||
[DataMember]
|
[DataMember]
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
public ProcessJobInfo ProcessJob { get; set; }
|
public ProcessJobInfo? ProcessJob { get; set; }
|
||||||
|
|
||||||
[DataMember]
|
|
||||||
[MoveInfor]
|
|
||||||
public int NextSequenceStep { get; set; }
|
|
||||||
|
|
||||||
[DataMember]
|
[DataMember]
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
|
@ -380,12 +478,25 @@ namespace Aitex.Core.Common
|
||||||
set { _moduleSlotID = value; InvokePropertyChanged(); }
|
set { _moduleSlotID = value; InvokePropertyChanged(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 刷新界面提示用,当对象属性值改变时,需要设为true ProcessJob
|
||||||
|
/// </summary>
|
||||||
|
private bool _isToolTipRefresh = true;
|
||||||
private string _toolTip;
|
private string _toolTip;
|
||||||
[DataMember]
|
[DataMember]
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
public string ToolTip
|
public string ToolTip
|
||||||
{
|
{
|
||||||
get => $"ModuleName : {ModuleID}\r\nModuleSlot : {ModuleSlotID+1}\r\nWaferSlot : {WaferSlotID+1}\r\nWaferOrigin: {WaferOriginModule}\r\nLotId : {LotId}\r\nWaferId : {WaferID}\r\nSequenceName : {ProcessJobID}\r\nRecipeName : {RecipeName}\r\nWaferStatus : {WaferStatus}\r\nNextSequenceStep : {NextSequenceStep + 1}\r\nTrayState : {TrayInfor?.TrayStatus}\r\nTrayProcessCount : {TrayInfor?.TrayProcessCount}\r\nTrayOriginStation : { TrayInfor?.TrayOriginStation}\r\nTrayOriginSlot : {TrayInfor?.TrayOriginSlot + 1}\r\nTrayBelongTo : {TrayInfor?.TrayBelongTo}";
|
|
||||||
|
get
|
||||||
|
{
|
||||||
|
//if (_isToolTipRefresh)
|
||||||
|
{
|
||||||
|
_toolTip = ToolTipInfor();
|
||||||
|
_isToolTipRefresh =false ;
|
||||||
|
}
|
||||||
|
return _toolTip;
|
||||||
|
}
|
||||||
set { }
|
set { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -437,12 +548,9 @@ namespace Aitex.Core.Common
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
public int WaferStateNum
|
public int WaferStateNum
|
||||||
{
|
{
|
||||||
get => waferStateNum;
|
get => WaferStatusConverter(this);
|
||||||
set
|
set { }
|
||||||
{
|
|
||||||
waferStateNum = WaferStatusConverter(this); ;
|
|
||||||
InvokePropertyChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool isChecked;
|
private bool isChecked;
|
||||||
|
@ -458,11 +566,11 @@ namespace Aitex.Core.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private WaferProcessStatus processState;
|
private WaferProcessStatus? processState;
|
||||||
|
|
||||||
[DataMember]
|
[DataMember]
|
||||||
[MoveInfor]
|
[MoveInfor]
|
||||||
public WaferProcessStatus ProcessState
|
public WaferProcessStatus? ProcessState
|
||||||
{
|
{
|
||||||
get => processState;
|
get => processState;
|
||||||
set
|
set
|
||||||
|
@ -523,12 +631,27 @@ namespace Aitex.Core.Common
|
||||||
WaferSlotID = waferSlotID;
|
WaferSlotID = waferSlotID;
|
||||||
TrayInfor = trayInfor;
|
TrayInfor = trayInfor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SlotInforUpData(SlotInfor slotInfor)
|
||||||
|
{
|
||||||
|
RecipeName= slotInfor.RecipeName;
|
||||||
|
SequenceName =slotInfor.SequenceName;
|
||||||
|
NextSequenceStep = slotInfor.NextSequenceStep;
|
||||||
|
LotId = slotInfor.LotId;
|
||||||
|
ProcessJob=slotInfor.ProcessJob;
|
||||||
|
ProcessJobID=slotInfor.ProcessJobID;
|
||||||
|
ControlJobID =slotInfor.ControlJobID;
|
||||||
|
RefreshToolTip();
|
||||||
|
}
|
||||||
|
|
||||||
public void Move(WaferInfor wafetInfor)
|
public void Move(WaferInfor wafetInfor)
|
||||||
{
|
{
|
||||||
ObjectMove objectMove = new ObjectMove();
|
ObjectMove objectMove = new ObjectMove();
|
||||||
objectMove.Move(this, wafetInfor);
|
objectMove.Move(this, wafetInfor);
|
||||||
|
|
||||||
TrayInfor.Move(wafetInfor.TrayInfor);
|
TrayInfor.Move(wafetInfor.TrayInfor);
|
||||||
|
|
||||||
|
RefreshToolTip();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetWaferEmpty()
|
public void SetWaferEmpty()
|
||||||
|
@ -552,6 +675,8 @@ namespace Aitex.Core.Common
|
||||||
SubstTransStatus = SubstrateTransportStatus.None;
|
SubstTransStatus = SubstrateTransportStatus.None;
|
||||||
SubstE90Status = EnumE90Status.None;
|
SubstE90Status = EnumE90Status.None;
|
||||||
SubstHists = null;
|
SubstHists = null;
|
||||||
|
|
||||||
|
RefreshToolTip();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CreateWaferInformation(SlotInfor slotInfor,string waferId, string origin, WaferStatus status = WaferStatus.Normal, WaferSize wz = WaferSize.WS6)
|
public void CreateWaferInformation(SlotInfor slotInfor,string waferId, string origin, WaferStatus status = WaferStatus.Normal, WaferSize wz = WaferSize.WS6)
|
||||||
|
@ -578,6 +703,8 @@ namespace Aitex.Core.Common
|
||||||
SubstTransStatus = SubstrateTransportStatus.None;
|
SubstTransStatus = SubstrateTransportStatus.None;
|
||||||
SubstE90Status = EnumE90Status.NeedProcessing;
|
SubstE90Status = EnumE90Status.NeedProcessing;
|
||||||
SubstHists = null;
|
SubstHists = null;
|
||||||
|
|
||||||
|
RefreshToolTip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//0: no wafer
|
//0: no wafer
|
||||||
|
@ -614,6 +741,36 @@ namespace Aitex.Core.Common
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string ToolTipInfor()
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
sb.AppendLine($"ModuleName : {ModuleID ?? ""}");
|
||||||
|
sb.AppendLine($"ModuleSlot : {ModuleSlotID + 1}");
|
||||||
|
sb.AppendLine($"WaferSlot : {WaferSlotID + 1}");
|
||||||
|
sb.AppendLine($"WaferOrigin: {WaferOriginModule ?? ""}");
|
||||||
|
sb.AppendLine($"LotId : {LotId ?? ""}");
|
||||||
|
sb.AppendLine($"WaferId : {WaferID ?? ""}");
|
||||||
|
sb.AppendLine($"ProcessJobID : {ProcessJobID ?? ""}");
|
||||||
|
sb.AppendLine($"RecipeName : {RecipeName ?? ""}");
|
||||||
|
sb.AppendLine($"WaferStatus : {WaferStatus}");
|
||||||
|
sb.AppendLine($"ProcessState : {ProcessState?.ToString() ?? ""}");
|
||||||
|
sb.AppendLine($"ProcessJob : {ProcessJob?.ToString() ?? ""}");
|
||||||
|
sb.AppendLine($"SequenceName : {SequenceName?.ToString() ?? ""}");
|
||||||
|
sb.AppendLine($"NextSequenceStep : {NextSequenceStep + 1}");
|
||||||
|
sb.AppendLine($"TrayState : {TrayInfor?.TrayStatus}");
|
||||||
|
sb.AppendLine($"TrayProcessCount : {TrayInfor?.TrayProcessCount ?? 0}");
|
||||||
|
sb.AppendLine($"TrayOriginStation : {TrayInfor?.TrayOriginStation ?? ""}");
|
||||||
|
sb.AppendLine($"TrayOriginSlot : {(TrayInfor?.TrayOriginSlot + 1) ?? 0}");
|
||||||
|
sb.Append($"TrayBelongTo : {TrayInfor?.TrayBelongTo ?? ""}");
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RefreshToolTip()
|
||||||
|
{
|
||||||
|
_isToolTipRefresh = true;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion WaferInfor
|
#endregion WaferInfor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -641,4 +798,5 @@ namespace Aitex.Core.Common
|
||||||
public class MoveInforAttribute : Attribute
|
public class MoveInforAttribute : Attribute
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue