[RT.Core]

修正启动PM Process数据统计时,没有传入Recipe名称的问题。

[UI.Client]
修正PMProcessView中的数据统计列表的RecipeName列宽度太短显示不全的问题;Run#列重命名为#。
This commit is contained in:
SL 2023-08-01 23:50:50 +08:00
parent 4f31bfbc60
commit a7de861162
3 changed files with 58 additions and 62 deletions

View File

@ -29,9 +29,11 @@ namespace MECF.Framework.RT.Core.Managers.PDS
private const int DISPLAYED_ROWS_MAX = 10;
private readonly object _syncObject = new();
private bool _isCounting;
private readonly PeriodicJob _thread;
/// <summary>
/// 后台统计工艺数据的线程
/// </summary>
private readonly PeriodicJob _tStatistic;
#if FAKE_DATA
@ -56,7 +58,7 @@ namespace MECF.Framework.RT.Core.Managers.PDS
DATA.Subscribe($"{Module}.ProcessDataStat.RealtimeList", ()=> ProcessRunDataList);
_thread = new PeriodicJob(1000, OnTimer, "MonitorProcDataStatPerRun", false);
_tStatistic = new PeriodicJob(1000, OnTimer, "MonitorProcDataStatPerRun", false);
#if FAKE_DATA
@ -77,7 +79,7 @@ namespace MECF.Framework.RT.Core.Managers.PDS
// GasFlowCountCollection.Enqueue(counter);
// CurrentFlowCounter = counter;
// CurrentDataStat = counter;
//}
// Add new Flow Counter every 5s
@ -86,16 +88,16 @@ namespace MECF.Framework.RT.Core.Managers.PDS
while (true)
{
Thread.Sleep(5000);
if (CurrentFlowCounter != null)
if (CurrentDataStat != null)
{
// 结束当前的统计,随后开启新统计
CurrentFlowCounter.StatisticsEnd = DateTime.Now;
SaveFlowCount(CurrentFlowCounter);
CurrentDataStat.StatisticsEnd = DateTime.Now;
SaveFlowCount(CurrentDataStat);
}
var counter = new GasFlowPerRun();
GasFlowCountCollection.Enqueue(counter);
CurrentFlowCounter = counter;
CurrentDataStat = counter;
}
});
@ -111,7 +113,7 @@ namespace MECF.Framework.RT.Core.Managers.PDS
public ObservableQueue<ProcessDataStatPerRun> GasFlowCountCollection { get; }
public ProcessDataStatPerRun CurrentFlowCounter { get; private set; }
public ProcessDataStatPerRun CurrentDataStat { get; private set; }
public List<AITProcessRunData> ProcessRunDataList
{
@ -120,28 +122,27 @@ namespace MECF.Framework.RT.Core.Managers.PDS
var list = new List<AITProcessRunData>();
lock (_syncObject)
{
foreach (var item in GasFlowCountCollection)
list.AddRange(GasFlowCountCollection.OrderBy(x => x.Index)
.ToList()
.Select(item => new AITProcessRunData
{
list.Add(new AITProcessRunData
{
Uid = item.StatisticsUid,
Index = item.Index,
Module = item.Module,
RecipeName = item.RecipeName,
WaferId = item.WaferId,
ProcessBegin = item.StatisticsStart,
ProcessEnd = item.StatisticsEnd,
H2 = item.H2.Total,
Ar = item.Ar.Total,
PN2 = item.PN2.Total,
HCL = item.HCL.Total,
SiH4 = item.SiH4.Total,
C2H4 = item.C2H4.Total,
TCS = item.TCS.Total,
TMA = item.TMA.Total,
HeaterPowerConsumption = item.HeaterPowerConsumption.Total
});
}
Uid = item.StatisticsUid,
Index = item.Index,
Module = item.Module,
RecipeName = item.RecipeName,
WaferId = item.WaferId,
ProcessBegin = item.StatisticsStart,
ProcessEnd = item.StatisticsEnd,
H2 = item.H2.Total,
Ar = item.Ar.Total,
PN2 = item.PN2.Total,
HCL = item.HCL.Total,
SiH4 = item.SiH4.Total,
C2H4 = item.C2H4.Total,
TCS = item.TCS.Total,
TMA = item.TMA.Total,
HeaterPowerConsumption = item.HeaterPowerConsumption.Total
}));
}
return list;
@ -164,7 +165,7 @@ namespace MECF.Framework.RT.Core.Managers.PDS
if (e.Action == NotifyCollectionChangedAction.Add)
{
var i = 1;
GasFlowCountCollection.ToList().OrderByDescending(x => x.StatisticsStart).ToList().ForEach(x =>
GasFlowCountCollection.ToList().OrderBy(x => x.StatisticsStart).ToList().ForEach(x =>
{
x.Index = i;
i++;
@ -252,20 +253,20 @@ namespace MECF.Framework.RT.Core.Managers.PDS
{
lock (_syncObject)
{
if (CurrentFlowCounter != null && CurrentFlowCounter.StatisticsEnd.HasValue == false)
if (CurrentDataStat != null && CurrentDataStat.StatisticsEnd.HasValue == false)
{
#if FAKE_DATA
CurrentFlowCounter.H2.AddFlow(_randomFlow.NextDouble());
CurrentFlowCounter.Ar.AddFlow(_randomFlow.NextDouble());
CurrentFlowCounter.PN2.AddFlow(_randomFlow.NextDouble());
CurrentFlowCounter.HCL.AddFlow(_randomFlow.NextDouble());
CurrentFlowCounter.SiH4.AddFlow(_randomFlow.NextDouble());
CurrentFlowCounter.CxHx.AddFlow(_randomFlow.NextDouble());
CurrentFlowCounter.TCS.AddFlow(_randomFlow.NextDouble());
CurrentFlowCounter.TMA.AddFlow(_randomFlow.NextDouble());
CurrentDataStat.H2.AddFlow(_randomFlow.NextDouble());
CurrentDataStat.Ar.AddFlow(_randomFlow.NextDouble());
CurrentDataStat.PN2.AddFlow(_randomFlow.NextDouble());
CurrentDataStat.HCL.AddFlow(_randomFlow.NextDouble());
CurrentDataStat.SiH4.AddFlow(_randomFlow.NextDouble());
CurrentDataStat.CxHx.AddFlow(_randomFlow.NextDouble());
CurrentDataStat.TCS.AddFlow(_randomFlow.NextDouble());
CurrentDataStat.TMA.AddFlow(_randomFlow.NextDouble());
#else
CurrentFlowCounter.Accumulate();
CurrentDataStat.Accumulate();
#endif
}
@ -275,19 +276,16 @@ namespace MECF.Framework.RT.Core.Managers.PDS
/// <summary>
/// 启动统计。
/// </summary>
public void Begin()
public void Begin(string recipeName)
{
lock (_syncObject)
{
_isCounting = true;
CurrentFlowCounter = new ProcessDataStatPerRun(Module)
{
Index = GasFlowCountCollection.Count + 1
};
CurrentDataStat = new ProcessDataStatPerRun(Module);
CurrentDataStat.RecipeName = recipeName;
GasFlowCountCollection.Enqueue(CurrentDataStat);
GasFlowCountCollection.Enqueue(CurrentFlowCounter);
_thread.Start();
// 启动数据采集线程
_tStatistic.Start();
}
}
@ -298,21 +296,19 @@ namespace MECF.Framework.RT.Core.Managers.PDS
{
lock (_syncObject)
{
_thread.Pause();
_tStatistic.Pause();
// Process结束
if (CurrentFlowCounter != null)
if (CurrentDataStat != null)
{
CurrentFlowCounter.StatisticsEnd = DateTime.Now;
CurrentDataStat.StatisticsEnd = DateTime.Now;
// 写数据库
SaveFlowCount(CurrentFlowCounter);
SaveFlowCount(CurrentDataStat);
CurrentFlowCounter = null;
CurrentDataStat = null;
}
_isCounting = false;
}
}

View File

@ -79,7 +79,7 @@ namespace MECF.Framework.RT.Core.Managers.PDS
public string WaferId { get; }
public string RecipeName { get; }
public string RecipeName { get; internal set; }
public Guid StatisticsUid { get; }

View File

@ -1926,7 +1926,7 @@
</TabItem>
<TabItem Header="Gas Flow Statistic">
<Grid VerticalAlignment="Top" Margin="5">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition/>
@ -1952,15 +1952,15 @@
</Style>
</GridView.ColumnHeaderContainerStyle>
<GridViewColumn Header="Run#" DisplayMemberBinding="{Binding Index}" Width="50"/>
<GridViewColumn Header="Recipe Name" DisplayMemberBinding="{Binding RecipeName}" Width="180"/>
<GridViewColumn Header="#" DisplayMemberBinding="{Binding Index}" Width="30"/>
<GridViewColumn Header="Recipe Name" DisplayMemberBinding="{Binding RecipeName}" />
<!--<GridViewColumn Header="Duration" DisplayMemberBinding="{Binding StatisticsStart, StringFormat='{}{0:MM/dd hh:mm:ss.fff}'}" Width="80"/>-->
<GridViewColumn Header="Duration" Width="140">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:HH:mm:ss}-{1:HH:mm:ss}">
<MultiBinding StringFormat="{}{0:HH:mm:ss} - {1:HH:mm:ss}">
<Binding Path="ProcessBegin"/>
<Binding Path="ProcessEnd"/>
</MultiBinding>