using Adaptation.Shared; using Adaptation.Shared.Methods; using System; using System.Collections.Generic; using System.Linq; using System.Text.Json; namespace Adaptation.FileHandlers.QS408M; public class Description : IDescription, Shared.Properties.IDescription { public int Test { get; set; } public int Count { get; set; } public int Index { get; set; } // public string EventName { get; set; } public string NullData { get; set; } public string JobID { get; set; } public string Sequence { get; set; } public string MesEntity { get; set; } public string ReportFullPath { get; set; } public string ProcessJobID { get; set; } public string MID { get; set; } // public string Date { get; set; } public string Employee { get; set; } public string Lot { get; set; } public string PSN { get; set; } public string Reactor { get; set; } public string Recipe { get; set; } // public string Cassette { get; set; } public string HeaderUniqueId { get; set; } public string Layer { get; set; } public string PassFail { get; set; } public string Position { get; set; } public string RDS { get; set; } public string Title { get; set; } public string UniqueId { get; set; } public string Wafer { get; set; } public string Zone { get; set; } // public string MeanThickness { get; set; } public string RVThickness { get; set; } public string StdDev { get; set; } public string Thickness { get; set; } // public string Slot { get; set; } public string ThicknessFourteen3mmEdgeMean { get; set; } public string ThicknessFourteen3mmEdgePercent { get; set; } public string ThicknessFourteen5mmEdgeMean { get; set; } public string ThicknessFourteen5mmEdgePercent { get; set; } public string ThicknessFourteenCenterMean { get; set; } public string ThicknessFourteenCriticalPointsAverage { get; set; } public string ThicknessFourteenCriticalPointsStdDev { get; set; } public string ThicknessFourteenMeanFrom { get; set; } // public string Thickness01 { get; set; } public string Thickness02 { get; set; } public string Thickness03 { get; set; } public string Thickness04 { get; set; } public string Thickness05 { get; set; } public string Thickness06 { get; set; } public string Thickness07 { get; set; } public string Thickness08 { get; set; } public string Thickness09 { get; set; } public string Thickness10 { get; set; } public string Thickness11 { get; set; } public string Thickness12 { get; set; } public string Thickness13 { get; set; } public string Thickness14 { get; set; } string IDescription.GetEventDescription() => "File Has been read and parsed"; List IDescription.GetNames(IFileRead fileRead, Logistics logistics) { List results = new(); IDescription description = GetDefault(fileRead, logistics); string json = JsonSerializer.Serialize(description, description.GetType()); object @object = JsonSerializer.Deserialize(json); if (@object is not JsonElement jsonElement) throw new Exception(); foreach (JsonProperty jsonProperty in jsonElement.EnumerateObject()) results.Add(jsonProperty.Name); return results; } List IDescription.GetDetailNames() { List results = new() { nameof(Cassette), nameof(HeaderUniqueId), nameof(Layer), nameof(PassFail), nameof(Position), nameof(RDS), nameof(Title), nameof(UniqueId), nameof(Wafer), nameof(Zone), nameof(Slot) }; return results; } List IDescription.GetHeaderNames() { List results = new() { nameof(Date), nameof(Employee), nameof(Lot), nameof(PSN), nameof(Reactor), nameof(Recipe) }; return results; } IDescription IDescription.GetDisplayNames() { Description result = GetDisplayNames(); return result; } List IDescription.GetParameterNames() { List results = new() { nameof(MeanThickness), nameof(RVThickness), nameof(StdDev), nameof(Thickness), nameof(ThicknessFourteen3mmEdgeMean), nameof(ThicknessFourteen3mmEdgePercent), nameof(ThicknessFourteen5mmEdgeMean), nameof(ThicknessFourteen5mmEdgePercent), nameof(ThicknessFourteenCenterMean), nameof(ThicknessFourteenCriticalPointsAverage), nameof(ThicknessFourteenCriticalPointsStdDev), nameof(ThicknessFourteenMeanFrom), }; return results; } JsonProperty[] IDescription.GetDefault(IFileRead fileRead, Logistics logistics) { JsonProperty[] results; IDescription description = GetDefault(fileRead, logistics); string json = JsonSerializer.Serialize(description, description.GetType()); object @object = JsonSerializer.Deserialize(json); results = ((JsonElement)@object).EnumerateObject().ToArray(); return results; } List IDescription.GetPairedParameterNames() { List results = new(); return results; } List IDescription.GetIgnoreParameterNames(Test test) { List results = new(); return results; } IDescription IDescription.GetDefaultDescription(IFileRead fileRead, Logistics logistics) { Description result = GetDefault(fileRead, logistics); return result; } Dictionary IDescription.GetDisplayNamesJsonElement(IFileRead fileRead) { Dictionary results = new(); IDescription description = GetDisplayNames(); string json = JsonSerializer.Serialize(description, description.GetType()); JsonElement jsonElement = JsonSerializer.Deserialize(json); foreach (JsonProperty jsonProperty in jsonElement.EnumerateObject()) { if (!results.ContainsKey(jsonProperty.Name)) results.Add(jsonProperty.Name, string.Empty); if (jsonProperty.Value is JsonElement jsonPropertyValue) results[jsonProperty.Name] = jsonPropertyValue.ToString(); } return results; } List IDescription.GetDescriptions(IFileRead fileRead, Logistics logistics, List tests, IProcessData iProcessData) { List results = new(); if (iProcessData is null || iProcessData.Details.Count == 0 || iProcessData is not ProcessData processData) results.Add(GetDefault(fileRead, logistics)); else { string nullData; Description description; object configDataNullData = fileRead.NullData; if (configDataNullData is null) nullData = string.Empty; else nullData = configDataNullData.ToString(); for (int i = 0; i < iProcessData.Details.Count; i++) { if (iProcessData.Details[i] is not Detail detail) continue; description = new Description { Test = (int)tests[i], Count = tests.Count, Index = i, // EventName = fileRead.EventName, NullData = nullData, JobID = fileRead.CellInstanceName, Sequence = logistics.Sequence.ToString(), MesEntity = logistics.MesEntity, ReportFullPath = logistics.ReportFullPath, ProcessJobID = logistics.ProcessJobID, MID = logistics.MID, // Date = processData.Date.ToString(GetDateFormat()), Employee = processData.Employee, Lot = processData.Batch, PSN = processData.PSN, Reactor = processData.Reactor, Recipe = processData.Recipe, // Cassette = processData.Cassette, HeaderUniqueId = detail.HeaderUniqueId, Layer = processData.Layer, PassFail = processData.PassFail, Position = detail.Position, RDS = processData.RDS, Title = processData.Title, UniqueId = detail.UniqueId, Wafer = processData.Wafer, Zone = processData.Zone, // MeanThickness = processData.MeanThickness, RVThickness = processData.RVThickness, StdDev = processData.StdDev, Thickness = detail.Thickness, // Slot = processData.Slot, ThicknessFourteen3mmEdgeMean = processData.ThicknessFourteen3mmEdgeMean, ThicknessFourteen3mmEdgePercent = processData.ThicknessFourteen3mmEdgePercent, ThicknessFourteen5mmEdgeMean = processData.ThicknessFourteen5mmEdgeMean, ThicknessFourteen5mmEdgePercent = processData.ThicknessFourteen5mmEdgePercent, ThicknessFourteenCenterMean = processData.ThicknessFourteenCenterMean, ThicknessFourteenCriticalPointsAverage = processData.ThicknessFourteenCriticalPointsAverage, ThicknessFourteenCriticalPointsStdDev = processData.ThicknessFourteenCriticalPointsStdDev, ThicknessFourteenMeanFrom = processData.ThicknessFourteenMeanFrom, Thickness01 = iProcessData.Details.Count < 1 || iProcessData.Details[0] is not Detail thickness01 ? string.Empty : thickness01.Thickness, Thickness02 = iProcessData.Details.Count < 2 || iProcessData.Details[1] is not Detail thickness02 ? string.Empty : thickness02.Thickness, Thickness03 = iProcessData.Details.Count < 3 || iProcessData.Details[2] is not Detail thickness03 ? string.Empty : thickness03.Thickness, Thickness04 = iProcessData.Details.Count < 4 || iProcessData.Details[3] is not Detail thickness04 ? string.Empty : thickness04.Thickness, Thickness05 = iProcessData.Details.Count < 5 || iProcessData.Details[4] is not Detail thickness05 ? string.Empty : thickness05.Thickness, Thickness06 = iProcessData.Details.Count < 6 || iProcessData.Details[5] is not Detail thickness06 ? string.Empty : thickness06.Thickness, Thickness07 = iProcessData.Details.Count < 7 || iProcessData.Details[6] is not Detail thickness07 ? string.Empty : thickness07.Thickness, Thickness08 = iProcessData.Details.Count < 8 || iProcessData.Details[7] is not Detail thickness08 ? string.Empty : thickness08.Thickness, Thickness09 = iProcessData.Details.Count < 9 || iProcessData.Details[8] is not Detail thickness09 ? string.Empty : thickness09.Thickness, Thickness10 = iProcessData.Details.Count < 10 || iProcessData.Details[9] is not Detail thickness10 ? string.Empty : thickness10.Thickness, Thickness11 = iProcessData.Details.Count < 11 || iProcessData.Details[10] is not Detail thickness11 ? string.Empty : thickness11.Thickness, Thickness12 = iProcessData.Details.Count < 12 || iProcessData.Details[11] is not Detail thickness12 ? string.Empty : thickness12.Thickness, Thickness13 = iProcessData.Details.Count < 13 || iProcessData.Details[12] is not Detail thickness13 ? string.Empty : thickness13.Thickness, Thickness14 = iProcessData.Details.Count < 14 || iProcessData.Details[13] is not Detail thickness14 ? string.Empty : thickness14.Thickness, }; results.Add(description); } } return results; } private static Description GetDisplayNames() { Description result = new(); return result; } private Description GetDefault(IFileRead fileRead, Logistics logistics) { Description result = new() { Test = -1, Count = 0, Index = -1, // EventName = fileRead.EventName, NullData = fileRead.NullData, JobID = fileRead.CellInstanceName, Sequence = logistics.Sequence.ToString(), MesEntity = fileRead.MesEntity, ReportFullPath = logistics.ReportFullPath, ProcessJobID = logistics.ProcessJobID, MID = logistics.MID, // Date = nameof(Date), Employee = nameof(Employee), Lot = nameof(Lot), PSN = nameof(PSN), Reactor = nameof(Reactor), Recipe = nameof(Recipe), // Cassette = nameof(Cassette), HeaderUniqueId = nameof(HeaderUniqueId), Layer = nameof(Layer), PassFail = nameof(PassFail), Position = nameof(Position), RDS = nameof(RDS), Title = nameof(Title), UniqueId = nameof(UniqueId), Wafer = nameof(Wafer), Zone = nameof(Zone), // MeanThickness = nameof(MeanThickness), RVThickness = nameof(RVThickness), StdDev = nameof(StdDev), Thickness = nameof(Thickness), // Slot = nameof(Slot), ThicknessFourteen3mmEdgeMean = nameof(ThicknessFourteen3mmEdgeMean), ThicknessFourteen3mmEdgePercent = nameof(ThicknessFourteen3mmEdgePercent), ThicknessFourteen5mmEdgeMean = nameof(ThicknessFourteen5mmEdgeMean), ThicknessFourteen5mmEdgePercent = nameof(ThicknessFourteen5mmEdgePercent), ThicknessFourteenCenterMean = nameof(ThicknessFourteenCenterMean), ThicknessFourteenCriticalPointsAverage = nameof(ThicknessFourteenCriticalPointsAverage), ThicknessFourteenCriticalPointsStdDev = nameof(ThicknessFourteenCriticalPointsStdDev), ThicknessFourteenMeanFrom = nameof(ThicknessFourteenMeanFrom), // Thickness01 = nameof(Thickness01), Thickness02 = nameof(Thickness02), Thickness03 = nameof(Thickness03), Thickness04 = nameof(Thickness04), Thickness05 = nameof(Thickness05), Thickness06 = nameof(Thickness06), Thickness07 = nameof(Thickness07), Thickness08 = nameof(Thickness08), Thickness09 = nameof(Thickness09), Thickness10 = nameof(Thickness10), Thickness11 = nameof(Thickness11), Thickness12 = nameof(Thickness12), Thickness13 = nameof(Thickness13), Thickness14 = nameof(Thickness14), }; return result; } internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt"; }