1添加TrayBelongTo属性
2传递参数时,给TrayBelongTo赋值或者清空
3显示TrayBelongTo参数,手动时使用TrayBelongTo参数,自动时使用穴位号计算
[UI.Client]
1设置Coating数据时,设置TrayBelongTo属性值
This commit is contained in:
hanqiangqiang 2023-06-12 13:48:19 +08:00
parent 6e0efd92e7
commit 7447500094
7 changed files with 61 additions and 37 deletions

View File

@ -265,6 +265,9 @@ namespace Aitex.Core.Common
public int TrayOriginSlot { get; set; }
[DataMember]
public string TrayBelongTo { get; set; }
[DataMember]
public int OriginStation { get; set; }
[DataMember]

View File

@ -268,6 +268,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
var waferOrigin = AllLocationWafers[moduleFrom][slotFrom].WaferOrigin;
var InnerIdForm= AllLocationWafers[moduleFrom][slotFrom].InnerId;
var InnerIdTo = AllLocationWafers[moduleTo][slotTo].InnerId;
var TrayBelongTo_Form = AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo;
var TrayBelongTo_To = AllLocationWafers[moduleTo][slotTo].TrayBelongTo;
var waferInfo = CopyWaferInfo(moduleTo, slotTo, AllLocationWafers[moduleFrom][slotFrom]);
UpdateWaferHistory(moduleTo, slotTo, SubstAccessType.Arrive);
DeleteWaferForMove(moduleFrom, slotFrom);
@ -284,7 +286,11 @@ namespace MECF.Framework.Common.SubstrateTrackings
AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot = trayOriginSlot;
AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount = trayProcessCount;
//新加的两个参数
AllLocationWafers[moduleFrom][slotFrom].InnerId = InnerIdForm;
AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo = TrayBelongTo_Form;
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = "";
}
else if (OnlyWaferModule.Contains(moduleFrom) && WaferTrayModule.Contains(moduleTo))//wafer出去
{
@ -299,7 +305,11 @@ namespace MECF.Framework.Common.SubstrateTrackings
AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot = 0;
AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount = 0;
//新加的两个参数
AllLocationWafers[moduleTo][slotTo].InnerId = InnerIdTo;//目的地的信息被清了,重新赋值
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = TrayBelongTo_To;
AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo = "";
}
else
{
@ -314,8 +324,12 @@ namespace MECF.Framework.Common.SubstrateTrackings
AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot = 0;
AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount = 0;
AllLocationWafers[moduleTo][slotTo].InnerId = InnerIdForm;
}
//新加的两个参数
AllLocationWafers[moduleTo][slotTo].InnerId = InnerIdForm;
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = TrayBelongTo_Form;
AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo = "";
}
EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferMoved, waferOrigin, moduleFrom.ToString(), slotFrom + 1, moduleTo.ToString(), slotTo + 1);
WaferMoveHistoryRecorder.WaferMoved(waferInfo.InnerId.ToString(), moduleTo.ToString(), slotTo, waferInfo.Status.ToString());
EV.Notify("WAFER_LEFT_POSITION", new SerializableDictionary<string, string>
@ -398,12 +412,14 @@ namespace MECF.Framework.Common.SubstrateTrackings
AllLocationWafers[moduleTo][slotTo].TrayOriginSlot = AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot;
AllLocationWafers[moduleTo][slotTo].TrayProcessCount = AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount;
AllLocationWafers[moduleTo][slotTo].InnerId = AllLocationWafers[moduleFrom][slotFrom].InnerId;
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = AllLocationWafers[moduleFrom][slotFrom].TrayBelongTo;
AllLocationWafers[moduleFrom][slotFrom].TrayState = WaferTrayStatus.Empty;
AllLocationWafers[moduleFrom][slotFrom].TrayUsedForWhichPM = 0;
AllLocationWafers[moduleFrom][slotFrom].TrayOriginStation = 0;
AllLocationWafers[moduleFrom][slotFrom].TrayOriginSlot = 0;
AllLocationWafers[moduleFrom][slotFrom].TrayProcessCount = 0;
AllLocationWafers[moduleFrom][slotFrom].InnerId=Guid.Empty;
AllLocationWafers[moduleTo][slotTo].TrayBelongTo = "System";
if (OnlyTrayModule.Contains(moduleTo))
{
@ -726,8 +742,9 @@ namespace MECF.Framework.Common.SubstrateTrackings
AllLocationWafers[module][slot].WaferOrigin = GenerateOrigin(module, slot);
AllLocationWafers[module][slot].Station = (int)module;
AllLocationWafers[module][slot].Slot = slot;
//AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
AllLocationWafers[module][slot].TrayUsedForWhichPM = 0;
//AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
AllLocationWafers[module][slot].TrayBelongTo = "System";
AllLocationWafers[module][slot].TrayUsedForWhichPM = 0;
AllLocationWafers[module][slot].OriginStation = (int)module;
AllLocationWafers[module][slot].OriginSlot = slot;
AllLocationWafers[module][slot].OriginCarrierID = text;
@ -795,8 +812,9 @@ namespace MECF.Framework.Common.SubstrateTrackings
AllLocationWafers[module][slot].WaferOrigin = GenerateOrigin(module, slot);
AllLocationWafers[module][slot].Station = (int)module;
AllLocationWafers[module][slot].Slot = slot;
//AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
AllLocationWafers[module][slot].TrayUsedForWhichPM = 0;
//AllLocationWafers[module][slot].InnerId = Guid.NewGuid();
AllLocationWafers[module][slot].TrayBelongTo = "System";
AllLocationWafers[module][slot].TrayUsedForWhichPM = 0;
AllLocationWafers[module][slot].OriginStation = (int)module;
AllLocationWafers[module][slot].OriginSlot = slot;
AllLocationWafers[module][slot].OriginCarrierID = text;
@ -862,7 +880,8 @@ namespace MECF.Framework.Common.SubstrateTrackings
}
lock (_lockerWaferList)
{
AllLocationWafers[module][slot].Status = WaferStatus.Empty;
AllLocationWafers[module][slot].TrayBelongTo = "System";
AllLocationWafers[module][slot].Status = WaferStatus.Empty;
AllLocationWafers[module][slot].ProcessState = EnumWaferProcessStatus.Idle;
AllLocationWafers[module][slot].SubstE90Status = EnumE90Status.NeedProcessing;
AllLocationWafers[module][slot].WaferID = GenerateWaferId(module, slot, text);
@ -918,6 +937,7 @@ namespace MECF.Framework.Common.SubstrateTrackings
AllLocationWafers[module][num].SubstHists = null;
_dictWaferInfo.Remove(AllLocationWafers[module][num].WaferID);
AllLocationWafers[module][num].InnerId = Guid.Empty;
AllLocationWafers[module][num].TrayBelongTo = "";
}
}
_needSerialize = true;
@ -1533,6 +1553,11 @@ namespace MECF.Framework.Common.SubstrateTrackings
_needSerialize = true;
}
public void UpdatTrayBelongTo(ModuleName module,int slot,string trayBelongTo)
{
AllLocationWafers[module][slot].TrayBelongTo = trayBelongTo;
}
public void UpdateWaferHistory(ModuleName module, int slot, SubstAccessType accesstype)
{
if (!IsWaferSlotLocationValid(module, slot))

View File

@ -156,7 +156,7 @@ namespace MECF.Framework.UI.Client.ClientBase
if (chamber.ToString().Contains("PM") && _waferInfo[CurrentSlot.SlotID].InnerId == Guid.Empty)
model = new WinPMThicknessDataViewModel(chamber.ToString());
else
model = new WinTrayThicknessDataViewModel(guid);
model = new WinTrayThicknessDataViewModel(guid, chamber, slot);
dynamic settings = new ExpandoObject();
settings.WindowStartupLocation = WindowStartupLocation.CenterOwner;
settings.Title = "Edit MinorCycle Info.";

View File

@ -73,7 +73,7 @@ namespace MECF.Framework.UI.Client.ClientBase
if (wafers.Length == info.WaferManager.Wafers.Count)
{
int index;
ModuleName module;
string _trayBelongTo;
for (int i = 0; i < wafers.Length; i++)
{
if (info.IsWaferReverseDisplay)
@ -100,23 +100,26 @@ namespace MECF.Framework.UI.Client.ClientBase
if (wafers[index].TrayOriginSlot % 2 == 0)
{
module = ModuleName.PM1;
_trayBelongTo = ModuleName.PM1.ToString();
}
else
{
module = ModuleName.PM2;
_trayBelongTo = ModuleName.PM2.ToString();
}
if (!(bool)QueryDataClient.Instance.Service.GetConfig($"System.SetUp.IsEFEMInstalled"))
{
_trayBelongTo = wafers[index].TrayBelongTo;
}
if (info.WaferManager.Wafers[i].ToolTip == null)
{
info.WaferManager.Wafers[i].ToolTip = new ToolTip()
{
Content = $"LotId : {wafers[index].LotId}\r\nWaferId : {wafers[index].WaferID}\r\nSequenceName : {wafers[index].ProcessJobID}\r\nWaferStatus : {((int)wafers[index].Status).ToString()}\r\nNextSequenceStep : {wafers[index].NextSequenceStep + 1}\r\nTrayState : {((int)wafers[index].TrayState).ToString()}\r\nTrayProcessCount : {wafers[index].TrayProcessCount}\r\nTrayOriginStation : {((ModuleName)wafers[index].TrayOriginStation).ToString()}\r\nTrayOriginSlot : {wafers[index].TrayOriginSlot + 1}\r\nTrayBelongTo : {module.ToString()}"
Content = $"LotId : {wafers[index].LotId}\r\nWaferId : {wafers[index].WaferID}\r\nSequenceName : {wafers[index].ProcessJobID}\r\nWaferStatus : {((int)wafers[index].Status).ToString()}\r\nNextSequenceStep : {wafers[index].NextSequenceStep + 1}\r\nTrayState : {((int)wafers[index].TrayState).ToString()}\r\nTrayProcessCount : {wafers[index].TrayProcessCount}\r\nTrayOriginStation : {((ModuleName)wafers[index].TrayOriginStation).ToString()}\r\nTrayOriginSlot : {wafers[index].TrayOriginSlot + 1}\r\nTrayBelongTo : {_trayBelongTo}"
};
}
else
{
info.WaferManager.Wafers[i].ToolTip.Content = $"LotId : {wafers[index].LotId}\r\nWaferId : {wafers[index].WaferID}\r\nSequenceName : {wafers[index].ProcessJobID}\r\nWaferStatus : {((int)wafers[index].Status).ToString()}\r\nNextSequenceStep : {wafers[index].NextSequenceStep + 1}\r\nTrayState : {((int)wafers[index].TrayState).ToString()}\r\nTrayProcessCount : {wafers[index].TrayProcessCount}\r\nTrayOriginStation : {((ModuleName)wafers[index].TrayOriginStation).ToString()}\r\nTrayOriginSlot : {wafers[index].TrayOriginSlot + 1}\r\nTrayBelongTo : {module.ToString()}";
info.WaferManager.Wafers[i].ToolTip.Content = $"LotId : {wafers[index].LotId}\r\nWaferId : {wafers[index].WaferID}\r\nSequenceName : {wafers[index].ProcessJobID}\r\nWaferStatus : {((int)wafers[index].Status).ToString()}\r\nNextSequenceStep : {wafers[index].NextSequenceStep + 1}\r\nTrayState : {((int)wafers[index].TrayState).ToString()}\r\nTrayProcessCount : {wafers[index].TrayProcessCount}\r\nTrayOriginStation : {((ModuleName)wafers[index].TrayOriginStation).ToString()}\r\nTrayOriginSlot : {wafers[index].TrayOriginSlot + 1}\r\nTrayBelongTo : {_trayBelongTo}";
}
}

View File

@ -27,7 +27,6 @@ namespace MECF.Framework.UI.Client.TrayThickness
PMGuid = pmGuId;//PM的默认数据库ID为MP
MinorCycle = new CoatingData($"{pmGuId}小周期", pmGuId);
MajorCycle = new CoatingData($"{pmGuId}大周期", pmGuId);
MinorCycle.PmOwned = pmGuId;
MajorCycle.PmOwned = pmGuId;
_dataList = new List<CoatingData>(
@ -77,17 +76,17 @@ namespace MECF.Framework.UI.Client.TrayThickness
}
public void Update(TrayCoatingThickness newData)
public void Update(PMCoatingThickness newData)
{
MinorCycle.Update(newData.Tray);
MajorCycle.Update(newData.TrayInner);
MinorCycle.Update(newData.MinorCycle);
MajorCycle.Update(newData.MajorCycle);
}
public object Clone()
{
var newObj = new TrayCoatingThickness(PMGuid);
newObj.Tray = (CoatingData)MinorCycle.Clone();
newObj.TrayInner = (CoatingData)MajorCycle.Clone();
var newObj = new PMCoatingThickness(PMGuid);
newObj.MinorCycle = (CoatingData)MinorCycle.Clone();
newObj.MajorCycle = (CoatingData)MajorCycle.Clone();
return newObj;
}

View File

@ -1,6 +1,9 @@
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.Common.SubstrateTrackings;
using MECF.Framework.UI.Client.ClientBase;
using OpenSEMI.ClientBase;
using OpenSEMI.Ctrlib.Controls;
using System;
using System.Collections.Generic;
using System.Linq;
@ -13,11 +16,14 @@ namespace MECF.Framework.UI.Client.TrayThickness
public class WinTrayThicknessDataViewModel : UiViewModelBase
{
TrayDataViewManager trayDataViewManager;
string trayID;
private ModuleName MoudleName;
private int Sloat;
public TrayCoatingThickness TrayData { get; set; }
public List<string> PmsList { get; set; } = new List<string>() { "PM1", "PM2" };
public WinTrayThicknessDataViewModel(string _trayGuid)
public WinTrayThicknessDataViewModel(string _trayGuid, ModuleName moudleName, int sloat)
{
MoudleName = moudleName;
Sloat = sloat;
TrayData = new TrayCoatingThickness(_trayGuid);
trayDataViewManager = new TrayDataViewManager(TrayData, _trayGuid);
UpTrayCoatingThickness();
@ -30,6 +36,7 @@ namespace MECF.Framework.UI.Client.TrayThickness
{
if (trayDataViewManager.SET(out var reason))
{
InvokeClient.Instance.Service.DoOperation("UpdatTrayBelongTo", MoudleName, Sloat, TrayData.Tray.PmOwned);
DialogBox.ShowInfo("MinorCycle Info. created successfully!");
TryClose();
}

View File

@ -23,19 +23,6 @@ namespace MECF.Framework.UI.Client.TrayThickness
Tray, TrayInner, RingInner, RingOuter
});
}
public TrayCoatingThickness(string pmGuId, bool isPM) //把PM当成特殊的Tray来处理PM1+PM2为一个Tray数据源
{
TrayGuid = pmGuId;//PM的默认数据库ID为MP
Tray = new CoatingData($"{pmGuId}小周期", pmGuId);
TrayInner = new CoatingData($"{pmGuId}大周期", pmGuId);
RingInner = new CoatingData("", pmGuId);
RingOuter = new CoatingData("", pmGuId);
_dataList = new List<CoatingData>(
new []
{
Tray, TrayInner
});
}
public TrayCoatingThickness(string trayGuId)
{