CSV like PDSF ready to test

This commit is contained in:
2025-01-13 12:46:35 -07:00
parent 865357bbc8
commit bc6810cf4f
15 changed files with 379 additions and 231 deletions

View File

@ -57,7 +57,7 @@ public partial class ProcessData : IProcessData
#nullable enable
internal ProcessData(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, string originalDataBioRad, long tickOffset, Complete? complete)
internal ProcessData(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, string originalDataBioRad, long tickOffset, Run? run)
{
if (fileRead is null)
throw new ArgumentNullException(nameof(fileRead));
@ -72,8 +72,8 @@ public partial class ProcessData : IProcessData
foreach (string moveFile in moveFiles.Distinct())
fileInfoCollection.Add(new FileInfo(moveFile));
fileInfoCollection.Add(logistics.FileInfo);
if (complete is not null)
SetValues(logistics, tickOffset, complete);
if (run is not null)
SetValues(logistics, tickOffset, run);
}
string IProcessData.GetCurrentReactor(IFileRead fileRead, Logistics logistics, Dictionary<string, string> reactors) => throw new Exception(string.Concat("See ", nameof(ProcessData)));
@ -251,18 +251,18 @@ public partial class ProcessData : IProcessData
return result;
}
private void SetValues(Logistics logistics, long tickOffset, Complete complete)
private void SetValues(Logistics logistics, long tickOffset, Run run)
{
int slot = 0;
Detail detail;
int counter = 1;
List<Detail> details = new();
DateTime dateTime = GetDateTime(logistics, tickOffset, complete.Header.DateTime);
bool isWaferSlot = !string.IsNullOrEmpty(complete.Header.Wafer) && complete.Header.Wafer.Length is 1 or 2 && int.TryParse(complete.Header.Wafer, out slot) && slot < 27;
string batch = !isWaferSlot ? logistics.JobID : Regex.Replace(complete.Header.Batch, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
Descriptor descriptor = isWaferSlot ? GetDescriptor(complete.Header.Batch) : GetDescriptor(complete.Header.Wafer);
DateTime dateTime = GetDateTime(logistics, tickOffset, run.Header.DateTime);
bool isWaferSlot = !string.IsNullOrEmpty(run.Header.Wafer) && run.Header.Wafer.Length is 1 or 2 && int.TryParse(run.Header.Wafer, out slot) && slot < 27;
string batch = !isWaferSlot ? logistics.JobID : Regex.Replace(run.Header.Batch, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
Descriptor descriptor = isWaferSlot ? GetDescriptor(run.Header.Batch) : GetDescriptor(run.Header.Wafer);
string wafer = isWaferSlot ? slot.ToString("00") : descriptor.Wafer;
string uniqueId = string.Concat(complete.Header.Title, '_', wafer, '_', logistics.DateTimeFromSequence.ToString("yyyyMMddHHmmssffff"), '_', logistics.TotalSecondsSinceLastWriteTimeFromSequence);
string uniqueId = string.Concat(run.Header.Title, '_', wafer, '_', logistics.DateTimeFromSequence.ToString("yyyyMMddHHmmssffff"), '_', logistics.TotalSecondsSinceLastWriteTimeFromSequence);
Batch = batch;
Wafer = wafer;
Date = dateTime;
@ -273,16 +273,16 @@ public partial class ProcessData : IProcessData
JobID = logistics.JobID;
Layer = descriptor.Layer;
Reactor = descriptor.Reactor;
StdDev = complete.Body.StdDev;
Title = complete.Header.Title;
Recipe = complete.Header.Recipe;
PassFail = complete.Body.PassFail;
Cassette = complete.Header.Cassette;
RVThickness = complete.Footer.RadialVariationThickness;
Slot = string.IsNullOrEmpty(complete.Footer.Slot) ? slot.ToString("00") : complete.Footer.Slot;
Employee = string.IsNullOrEmpty(complete.Header.Operator) ? Employee : complete.Header.Operator;
MeanThickness = string.IsNullOrEmpty(complete.Body.WaferMeanThickness) && complete.Body.Sites.Count == 1 ? complete.Body.Sites.First().Thickness : complete.Body.WaferMeanThickness;
foreach (Site site in complete.Body.Sites)
StdDev = run.Body.StdDev;
Title = run.Header.Title;
Recipe = run.Header.Recipe;
PassFail = run.Body.PassFail;
Cassette = run.Header.Cassette;
RVThickness = run.Footer.RadialVariationThickness;
Slot = string.IsNullOrEmpty(run.Footer.Slot) ? slot.ToString("00") : run.Footer.Slot;
Employee = string.IsNullOrEmpty(run.Header.Operator) ? Employee : run.Header.Operator;
MeanThickness = string.IsNullOrEmpty(run.Body.WaferMeanThickness) && run.Sites.Count == 1 ? run.Sites[0].Thickness : run.Body.WaferMeanThickness;
foreach (Site site in run.Sites)
{
detail = new()
{