Refactored Run and Wafer classes for improved wafer retrieval logic
This commit is contained in:
@ -15,14 +15,36 @@ namespace Adaptation.FileHandlers.pcl;
|
||||
internal class Run
|
||||
{
|
||||
|
||||
public Header Header { get; }
|
||||
public ReadOnlyCollection<Wafer> Wafers { get; }
|
||||
|
||||
public Run(Header header, ReadOnlyCollection<Wafer> wafers)
|
||||
{
|
||||
Header = header;
|
||||
Wafers = wafers;
|
||||
}
|
||||
|
||||
public Header Header { get; }
|
||||
public ReadOnlyCollection<Wafer> Wafers { get; }
|
||||
private static ReadOnlyCollection<Wafer> GetLastWaferForEachSlot(ReadOnlyDictionary<string, string> pages, Constant constant, string headerFileName, Header header)
|
||||
{
|
||||
List<Wafer> results = new();
|
||||
string id;
|
||||
Wafer wafer;
|
||||
ReadOnlyCollection<Wafer>? wafers;
|
||||
ReadOnlyDictionary<string, ReadOnlyCollection<Wafer>> keyValuePairs = Wafer.Get(pages, constant, headerFileName);
|
||||
ReadOnlyCollection<string> waferIds = GetWaferIds(header);
|
||||
for (int i = 0; i < waferIds.Count; i++)
|
||||
{
|
||||
id = waferIds[i];
|
||||
if (!keyValuePairs.TryGetValue(id, out wafers) || wafers.Count == 0)
|
||||
wafer = Wafer.Get(id);
|
||||
else
|
||||
wafer = (from l in wafers where l.Recipe == header.Recipe select l).Last();
|
||||
if (wafer is null)
|
||||
break;
|
||||
results.Add(wafer);
|
||||
}
|
||||
return results.AsReadOnly();
|
||||
}
|
||||
|
||||
private static void WriteJson(Logistics logistics, List<FileInfo> fileInfoCollection, Run result)
|
||||
{
|
||||
@ -107,9 +129,7 @@ internal class Run
|
||||
result = null;
|
||||
else
|
||||
{
|
||||
ReadOnlyCollection<string> waferIds = GetWaferIds(header);
|
||||
ReadOnlyDictionary<string, Wafer> keyValuePairs = Wafer.Get(pages, constant, headerFileName, header);
|
||||
ReadOnlyCollection<Wafer> wafers = Wafer.Get(waferIds, keyValuePairs);
|
||||
ReadOnlyCollection<Wafer> wafers = GetLastWaferForEachSlot(pages, constant, headerFileName, header);
|
||||
result = new(header, wafers);
|
||||
WriteJson(logistics, fileInfoCollection, result);
|
||||
WriteCommaSeparatedValues(logistics, result);
|
||||
|
Reference in New Issue
Block a user