using Newtonsoft.Json; using SystemX.Core.DB; using Web.Tra.Model; using SystemX.Core.Utils; public static class ObjectExtend { public static Overview ToOverview(this IEnumerable data) { return new Overview { TestDate = data.Max(x => x.Summary.TestDT.Date), StationName = data.Last().Summary.StationName, Host = data.Last().Summary.HostID, Section = data.Last().Summary.Section, ModelName = data.Last().TestInfo?.PROD_Group?.ModelName, TestType = data.Last().Summary.TestType, ProductNo = data.Last().Summary.ProdNo_C, TestCode = data.Last().Summary.Testcode, ParentNo = data.GroupBy(x => x.Summary.TestListCntID).Last().Last().Summary.ProdNo_P, TestListFileNo = data.GroupBy(x => x.Summary.TestListCntID).Last().Last().Summary.TestListFileNo, TestListVariantNo = data.GroupBy(x => x.Summary.TestListCntID).Last().Last().Summary.TestListVariantNo, FileCode = data.Last().Summary.ProdCode, FileVersion = data.Last().Summary.Version, StepVersion = data.Last().Summary.StepVersion, FirstTestTime = data.GroupBy(x => x.Summary.TestListCntID).Last().Min(y => y.Summary.TestDT).ToString("HH:mm:ss"), FinalTestTime = data.GroupBy(x => x.Summary.TestListCntID).Last().Max(y => y.Summary.TestDT).ToString("HH:mm:ss"), Total = data.GroupBy(x => (x.Summary.TestListCntID, x.Summary.TestDT.Date)).Last().Count(), OK = data.GroupBy(x => (x.Summary.TestListCntID, x.Summary.TestDT.Date)).Last().Count(y => y.Summary.Result.ToLower().Equals("ok")), NG = data.GroupBy(x => (x.Summary.TestListCntID, x.Summary.TestDT.Date)).Last().Count(y => !y.Summary.Result.ToLower().Equals("ok")), TestListCntID = data.Last().Summary.TestListCntID }; } public static Overview ToOverviewMerged(this IEnumerable data) { return new Overview { TestDate = data.Max(x => x.Summary.TestDT.Date), ModelName = data.Last().TestInfo?.PROD_Group?.ModelName, TestType = data.Last().Summary.TestType, ProductNo = data.Last().Summary.ProdNo_C, TestCode = data.Last().Summary.Testcode, ParentNo = data.Last().Summary.ProdNo_P, TestListFileNo = data.Last().Summary.TestListFileNo, TestListVariantNo = data.Last().Summary.TestListVariantNo, FileCode = data.Last().Summary.ProdCode, FileVersion = data.Last().Summary.Version, StepVersion = data.Last().Summary.StepVersion, FirstTestTime = data.Min(y => y.Summary.TestDT).ToString("HH:mm:ss"), FinalTestTime = data.Max(y => y.Summary.TestDT).ToString("HH:mm:ss"), Total = data.Count(), OK = data.Count(y => y.Summary.Result.ToLower().Equals("ok")), NG = data.Count(y => !y.Summary.Result.ToLower().Equals("ok")), }; } public static Overview ToDetailOverview(this IEnumerable data) { return data.ToOverview(); } public static TestHistory ToTestHistory(this SearchData data) { return new TestHistory { No = data.Summary.No, TestDateTime = data.Summary.TestDT, StationName = data.Summary.StationName, Host = data.Summary.HostID, Section = data.Summary.Section, ProductID = data.Summary.ProductID, TestType = data.Summary.TestType, ProductNo = data.Summary.ProdNo_C, TestCode = data.Summary.Testcode, ParentNo = data.Summary.ProdNo_P, FileCode = data.Summary.ProdCode, FileVersion = data.Summary.Version, StepVersion = Convert.ToInt32(data.Summary.StepVersion), Duration = data.Summary.Duration, TestResult = data.Summary.Result, TestListReqID = data.Summary.TestListCntID }; } public static TestResult ToTestResult(this HIST_TestResult histTestResult, TestList testList = null) { TestResult testResult = new TestResult(); testResult.TestList = testList; //decompress var decompStr = histTestResult?.LogData.GzipDecompress(); var logData = JsonConvert.DeserializeObject>(decompStr); testResult.DecompressTestResult = logData; //parse var parse = logData.Select(x=>x.ParseTestResult(testList)).Where(x=> x is not null && string.IsNullOrEmpty(x.MeasuredValue) == false).ToList(); testResult.ParseTestResult = parse; return testResult; } public static ParseTestResult ParseTestResult(this DecompressTestResult logData, TestList testList = null) { var selectData = testList.TestListFile.Where(x => x.StepID == logData.StepID)?.FirstOrDefault(); if (selectData is not null) { var parseTestResult = new ParseTestResult { StepNo = logData.StepID, Position = (long)selectData?.Position, Variant = selectData?.Variant, Gate = selectData?.Gate, MO = selectData?.StepDesc, Function = selectData?.UseFunction, Min = logData?.GlobalMin, MeasuredValue = logData.MeasuredValue, Max = logData.GlobalMax, Dimension = selectData?.Dim, Result = logData.Result, Duration = logData.SpentTime }; //min,max if (selectData.IsGlobal == true) { parseTestResult.Min = logData.GlobalMin; parseTestResult.Max = logData.GlobalMax; } else { parseTestResult.Min = selectData.SpecMin; parseTestResult.Max = selectData.SpecMax; } //meas val if (string.IsNullOrEmpty(logData.Message) == false) { parseTestResult.MeasuredValue = logData.Message; } else if (string.IsNullOrEmpty(logData.MeasValStr) == false) { parseTestResult.MeasuredValue = logData.MeasValStr; } else if (string.IsNullOrEmpty(parseTestResult.Min) == true && string.IsNullOrEmpty(parseTestResult.Max) == true && logData.MeasVal == 0) { parseTestResult.MeasuredValue = logData.MeasVal.ToString("F1"); } else { parseTestResult.MeasuredValue = logData.MeasVal.ToString(); } return parseTestResult; } return null; } }