using Shared; using Shared.Metrology; using System; using System.Collections.Generic; using System.Linq; using System.Text.Json; namespace MET08DDUPSFS6420.Helpers { public partial class ProcessData { public class FileRead { public class Description : IProcessDataDescription { 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 Comments { get; set; } public string Diameter { get; set; } public string Exclusion { get; set; } public string Gain { get; set; } public string HeaderUniqueId { get; set; } public string Laser { get; set; } public string ParseErrorText { get; set; } public string RDS { get; set; } public string Slot { get; set; } public string UniqueId { get; set; } // public string AreaCount { get; set; } public string AreaCountAvg { get; set; } public string AreaCountMax { get; set; } public string AreaCountMin { get; set; } public string AreaCountStdDev { get; set; } public string AreaTotal { get; set; } public string AreaTotalAvg { get; set; } public string AreaTotalMax { get; set; } public string AreaTotalMin { get; set; } public string AreaTotalStdDev { get; set; } public string Bin1 { get; set; } public string Bin2 { get; set; } public string Bin3 { get; set; } public string Bin4 { get; set; } public string Bin5 { get; set; } public string Bin6 { get; set; } public string Bin7 { get; set; } public string Bin8 { get; set; } public string HazeAverage { get; set; } public string HazeAverageAvg { get; set; } public string HazeAverageMax { get; set; } public string HazeAverageMin { get; set; } public string HazeAverageStdDev { get; set; } public string HazePeak { get; set; } public string HazeRegion { get; set; } public string HazeRegionAvg { get; set; } public string HazeRegionMax { get; set; } public string HazeRegionMin { get; set; } public string HazeRegionStdDev { get; set; } public string HazeRng { get; set; } public string LPDCM2 { get; set; } public string LPDCM2Avg { get; set; } public string LPDCM2Max { get; set; } public string LPDCM2Min { get; set; } public string LPDCM2StdDev { get; set; } public string LPDCount { get; set; } public string LPDCountAvg { get; set; } public string LPDCountMax { get; set; } public string LPDCountMin { get; set; } public string LPDCountStdDev { get; set; } public string Mean { get; set; } public string ScratchCount { get; set; } public string ScratchCountAvg { get; set; } public string ScratchCountMax { get; set; } public string ScratchCountMin { get; set; } public string ScratchCountStdDev { get; set; } public string ScratchTotal { get; set; } public string ScratchTotalAvg { get; set; } public string ScratchTotalMax { get; set; } public string ScratchTotalMin { get; set; } public string ScratchTotalStdDev { get; set; } public string Sort { get; set; } public string StdDev { get; set; } public string SumOfDefects { get; set; } public string SumOfDefectsAvg { get; set; } public string SumOfDefectsMax { get; set; } public string SumOfDefectsMin { get; set; } public string SumOfDefectsStdDev { get; set; } public string Thresh { get; set; } public string Thruput { get; set; } // public object Data { get; set; } public object Parameters { get; set; } public string GetEventName() { return nameof(FileRead); } public string GetEventDescription() { return "File Has been read and parsed"; } public List GetHeaderNames(ILogic logic, ConfigDataBase configDataBase) { List results = new List { nameof(Date), nameof(Employee), nameof(Lot), nameof(PSN), nameof(Reactor), nameof(Recipe) }; return results; } public List GetDetailNames(ILogic logic, ConfigDataBase configDataBase) { List results = new List { nameof(Comments), nameof(Diameter), nameof(Exclusion), nameof(Gain), nameof(HeaderUniqueId), nameof(Laser), nameof(ParseErrorText), nameof(RDS), nameof(Slot), nameof(UniqueId) }; return results; } public List GetParameterNames(ILogic logic, ConfigDataBase configDataBase) { List results = new List { nameof(AreaCount), nameof(AreaCountAvg), nameof(AreaCountMax), nameof(AreaCountMin), nameof(AreaCountStdDev), nameof(AreaTotal), nameof(AreaTotalAvg), nameof(AreaTotalMax), nameof(AreaTotalMin), nameof(AreaTotalStdDev), nameof(Bin1), nameof(Bin2), nameof(Bin3), nameof(Bin4), nameof(Bin5), nameof(Bin6), nameof(Bin7), nameof(Bin8), nameof(HazeAverage), nameof(HazeAverageAvg), nameof(HazeAverageMax), nameof(HazeAverageMin), nameof(HazeAverageStdDev), nameof(HazePeak), nameof(HazeRegion), nameof(HazeRegionAvg), nameof(HazeRegionMax), nameof(HazeRegionMin), nameof(HazeRegionStdDev), nameof(HazeRng), nameof(LPDCM2), nameof(LPDCM2Avg), nameof(LPDCM2Max), nameof(LPDCM2Min), nameof(LPDCM2StdDev), nameof(LPDCount), nameof(LPDCountAvg), nameof(LPDCountMax), nameof(LPDCountMin), nameof(LPDCountStdDev), nameof(Mean), nameof(ScratchCount), nameof(ScratchCountAvg), nameof(ScratchCountMax), nameof(ScratchCountMin), nameof(ScratchCountStdDev), nameof(ScratchTotal), nameof(ScratchTotalAvg), nameof(ScratchTotalMax), nameof(ScratchTotalMin), nameof(ScratchTotalStdDev), nameof(Sort), nameof(StdDev), nameof(SumOfDefects), nameof(SumOfDefectsAvg), nameof(SumOfDefectsMax), nameof(SumOfDefectsMin), nameof(SumOfDefectsStdDev), nameof(Thresh), nameof(Thruput) }; return results; } public List GetPairedParameterNames(ILogic logic, ConfigDataBase configDataBase) { List results = new List(); return results; } public List GetIgnoreParameterNames(ILogic logic, ConfigDataBase configDataBase, Test test) { List results = new List(); return results; } public List GetNames(ILogic logic, ConfigDataBase configDataBase) { List results = new List(); IProcessDataDescription processDataDescription = GetDefault(logic, configDataBase); string json = JsonSerializer.Serialize(processDataDescription, processDataDescription.GetType()); object @object = JsonSerializer.Deserialize(json); if (!(@object is JsonElement jsonElement)) throw new Exception(); foreach (JsonProperty jsonProperty in jsonElement.EnumerateObject()) results.Add(jsonProperty.Name); return results; } public IProcessDataDescription GetDisplayNames(ILogic logic, ConfigDataBase configDataBase) { Description result = new Description(); return result; } public IProcessDataDescription GetDefault(ILogic logic, ConfigDataBase configDataBase) { Description result = new Description { Test = -1, Count = 0, Index = -1, // EventName = GetEventName(), NullData = string.Empty, JobID = logic.Logistics.JobID, Sequence = logic.Logistics.Sequence.ToString(), MesEntity = logic.Logistics.MesEntity, ReportFullPath = logic.Logistics.ReportFullPath, ProcessJobID = logic.Logistics.ProcessJobID, MID = logic.Logistics.MID, // Date = nameof(Date), Employee = nameof(Employee), Lot = nameof(Lot), PSN = nameof(PSN), Reactor = nameof(Reactor), Recipe = nameof(Recipe), // Comments = nameof(Comments), Diameter = nameof(Diameter), Exclusion = nameof(Exclusion), Gain = nameof(Gain), HeaderUniqueId = nameof(HeaderUniqueId), Laser = nameof(Laser), ParseErrorText = nameof(ParseErrorText), RDS = nameof(RDS), Slot = nameof(Slot), UniqueId = nameof(UniqueId), // AreaCount = nameof(AreaCount), AreaCountAvg = nameof(AreaCountAvg), AreaCountMax = nameof(AreaCountMax), AreaCountMin = nameof(AreaCountMin), AreaCountStdDev = nameof(AreaCountStdDev), AreaTotal = nameof(AreaTotal), AreaTotalAvg = nameof(AreaTotalAvg), AreaTotalMax = nameof(AreaTotalMax), AreaTotalMin = nameof(AreaTotalMin), AreaTotalStdDev = nameof(AreaTotalStdDev), Bin1 = nameof(Bin1), Bin2 = nameof(Bin2), Bin3 = nameof(Bin3), Bin4 = nameof(Bin4), Bin5 = nameof(Bin5), Bin6 = nameof(Bin6), Bin7 = nameof(Bin7), Bin8 = nameof(Bin8), HazeAverage = nameof(HazeAverage), HazeAverageAvg = nameof(HazeAverageAvg), HazeAverageMax = nameof(HazeAverageMax), HazeAverageMin = nameof(HazeAverageMin), HazeAverageStdDev = nameof(HazeAverageStdDev), HazePeak = nameof(HazePeak), HazeRegion = nameof(HazeRegion), HazeRegionAvg = nameof(HazeRegionAvg), HazeRegionMax = nameof(HazeRegionMax), HazeRegionMin = nameof(HazeRegionMin), HazeRegionStdDev = nameof(HazeRegionStdDev), HazeRng = nameof(HazeRng), LPDCM2 = nameof(LPDCM2), LPDCM2Avg = nameof(LPDCM2Avg), LPDCM2Max = nameof(LPDCM2Max), LPDCM2Min = nameof(LPDCM2Min), LPDCM2StdDev = nameof(LPDCM2StdDev), LPDCount = nameof(LPDCount), LPDCountAvg = nameof(LPDCountAvg), LPDCountMax = nameof(LPDCountMax), LPDCountMin = nameof(LPDCountMin), LPDCountStdDev = nameof(LPDCountStdDev), Mean = nameof(Mean), ScratchCount = nameof(ScratchCount), ScratchCountAvg = nameof(ScratchCountAvg), ScratchCountMax = nameof(ScratchCountMax), ScratchCountMin = nameof(ScratchCountMin), ScratchCountStdDev = nameof(ScratchCountStdDev), ScratchTotal = nameof(ScratchTotal), ScratchTotalAvg = nameof(ScratchTotalAvg), ScratchTotalMax = nameof(ScratchTotalMax), ScratchTotalMin = nameof(ScratchTotalMin), ScratchTotalStdDev = nameof(ScratchTotalStdDev), Sort = nameof(Sort), StdDev = nameof(StdDev), SumOfDefects = nameof(SumOfDefects), SumOfDefectsAvg = nameof(SumOfDefectsAvg), SumOfDefectsMax = nameof(SumOfDefectsMax), SumOfDefectsMin = nameof(SumOfDefectsMin), SumOfDefectsStdDev = nameof(SumOfDefectsStdDev), Thresh = nameof(Thresh), Thruput = nameof(Thruput), // Data = nameof(Data), Parameters = nameof(Parameters) }; return result; } public List GetDescription(ILogic logic, ConfigDataBase configDataBase, List tests, object payload) { List results = new List(); if (payload is null || !(payload is ProcessData processData) || processData.Header is null || !processData.Details.Any()) results.Add(GetDefault(logic, configDataBase)); else { string nullData; Description description; if (ConfigData.NullData is null) nullData = string.Empty; else nullData = ConfigData.NullData.ToString(); for (int i = 0; i < processData.Details.Count; i++) { description = new Description { Test = (int)tests[i], Count = processData.Details.Count, Index = i, // EventName = GetEventName(), NullData = nullData, JobID = logic.Logistics.JobID, Sequence = logic.Logistics.Sequence.ToString(), MesEntity = logic.Logistics.MesEntity, ReportFullPath = logic.Logistics.ReportFullPath, ProcessJobID = logic.Logistics.ProcessJobID, MID = logic.Logistics.MID, // Date = processData.Header.Date, Employee = processData.Header.PSN, Lot = processData.Header.Lot, PSN = processData.Header.PSN, Reactor = processData.Header.Reactor, Recipe = processData.Header.Recipe, // Comments = processData.Details[i].Comments, Diameter = processData.Details[i].Diameter, Exclusion = processData.Details[i].Exclusion, Gain = processData.Details[i].Gain, HeaderUniqueId = processData.Details[i].HeaderUniqueId, Laser = processData.Details[i].Laser, ParseErrorText = processData.Header.ParseErrorText, RDS = processData.Header.RDS, Slot = processData.Details[i].Slot, UniqueId = processData.Details[i].UniqueId, // AreaCount = processData.Details[i].AreaCount, AreaCountAvg = processData.Header.AreaCountAvg, AreaCountMax = processData.Header.AreaCountMax, AreaCountMin = processData.Header.AreaCountMin, AreaCountStdDev = processData.Header.AreaCountStdDev, AreaTotal = processData.Details[i].AreaTotal, AreaTotalAvg = processData.Header.AreaTotalAvg, AreaTotalMax = processData.Header.AreaTotalMax, AreaTotalMin = processData.Header.AreaTotalMin, AreaTotalStdDev = processData.Header.AreaTotalStdDev, Bin1 = processData.Details[i].Bin1, Bin2 = processData.Details[i].Bin2, Bin3 = processData.Details[i].Bin3, Bin4 = processData.Details[i].Bin4, Bin5 = processData.Details[i].Bin5, Bin6 = processData.Details[i].Bin6, Bin7 = processData.Details[i].Bin7, Bin8 = processData.Details[i].Bin8, HazeAverage = processData.Details[i].HazeAverage, HazeAverageAvg = processData.Header.HazeAverageAvg, HazeAverageMax = processData.Header.HazeAverageMax, HazeAverageMin = processData.Header.HazeAverageMin, HazeAverageStdDev = processData.Header.HazeAverageStdDev, HazePeak = processData.Details[i].HazePeak, HazeRegion = processData.Details[i].HazeRegion, HazeRegionAvg = processData.Header.HazeRegionAvg, HazeRegionMax = processData.Header.HazeRegionMax, HazeRegionMin = processData.Header.HazeRegionMin, HazeRegionStdDev = processData.Header.HazeRegionStdDev, HazeRng = processData.Details[i].HazeRng, LPDCM2 = processData.Details[i].LPDCM2, LPDCM2Avg = processData.Header.LPDCM2Avg, LPDCM2Max = processData.Header.LPDCM2Max, LPDCM2Min = processData.Header.LPDCM2Min, LPDCM2StdDev = processData.Header.LPDCM2StdDev, LPDCount = processData.Details[i].LPDCount, LPDCountAvg = processData.Header.LPDCountAvg, LPDCountMax = processData.Header.LPDCountMax, LPDCountMin = processData.Header.LPDCountMin, LPDCountStdDev = processData.Header.LPDCountStdDev, Mean = processData.Details[i].Mean, ScratchCount = processData.Details[i].ScratchCount, ScratchCountAvg = processData.Header.ScratchCountAvg, ScratchCountMax = processData.Header.ScratchCountMax, ScratchCountMin = processData.Header.ScratchCountMin, ScratchCountStdDev = processData.Header.ScratchCountStdDev, ScratchTotal = processData.Details[i].ScratchTotal, ScratchTotalAvg = processData.Header.ScratchTotalAvg, ScratchTotalMax = processData.Header.ScratchTotalMax, ScratchTotalMin = processData.Header.ScratchTotalMin, ScratchTotalStdDev = processData.Header.ScratchTotalStdDev, Sort = processData.Details[i].Sort, StdDev = processData.Details[i].StdDev, SumOfDefects = processData.Details[i].SumOfDefects, SumOfDefectsAvg = processData.Header.SumOfDefectsAvg, SumOfDefectsMax = processData.Header.SumOfDefectsMax, SumOfDefectsMin = processData.Header.SumOfDefectsMin, SumOfDefectsStdDev = processData.Header.SumOfDefectsStdDev, Thresh = processData.Details[i].Thresh, Thruput = processData.Details[i].Thruput }; results.Add(description); } } return results; } } } } }