From 0ff010019d0fe7abc7ff1811e4aa63904eb07431 Mon Sep 17 00:00:00 2001 From: SHM Date: Fri, 19 Sep 2025 14:40:06 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=84=B1=ED=98=84=EB=AA=A8]=20Summary=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80,=20GridFilter=20=EC=BB=A8=ED=94=BC=EA=B7=B8?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/Config/WebClient.Tra.Config.json | 45 +++++ .../Components/Layout/MainLayout.razor | 7 +- .../Web.Tra/Components/Module/TraGrid.razor | 129 ++++++++------- .../Web.Tra/Components/Pages/TRA.razor | 156 ++++++++++++++---- .../Components/Pages/TestListGrid.razor | 2 +- .../Web.Tra/Components/_Imports.razor | 6 + .../Web.Tra/Extended/ObjectExtended.cs | 70 +++++++- .../WebClient/Web.Tra/Model/Enum/EnumTabs.cs | 11 ++ .../WebClient/Web.Tra/Model/IOverviewModel.cs | 6 - .../Web.Tra/Model/ITestResultModel.cs | 6 - Projects/WebClient/Web.Tra/Model/Overview.cs | 2 +- .../WebClient/Web.Tra/Model/TestHistory.cs | 2 +- .../WebClient/Web.Tra/Model/TestResult.cs | 6 +- .../WebClient/Web.Tra/Model/TestSummary.cs | 44 +++++ .../Web.Tra/Services/CPXV2LogService.cs | 33 +++- .../Config/WebClientConfig.cs | 4 + .../Model/GridDisableFilter.cs | 14 ++ 17 files changed, 428 insertions(+), 115 deletions(-) delete mode 100644 Projects/WebClient/Web.Tra/Model/IOverviewModel.cs delete mode 100644 Projects/WebClient/Web.Tra/Model/ITestResultModel.cs create mode 100644 Projects/WebClient/Web.Tra/Model/TestSummary.cs create mode 100644 Projects/WebClient/WebClient.Library/Model/GridDisableFilter.cs diff --git a/Projects/Config/WebClient.Tra.Config.json b/Projects/Config/WebClient.Tra.Config.json index 1857b7b..7cc1cf0 100644 --- a/Projects/Config/WebClient.Tra.Config.json +++ b/Projects/Config/WebClient.Tra.Config.json @@ -14,5 +14,50 @@ "UserID": "Alis", "Password": "Kefico!@34" } + ], + "GridDisableFilter": [ + { + "EnumTabs": 1, + "Filter": [ + "Navigation", + "StepVersion", + "IsGlobal", + "UpdateDT", + "Enable", + "testlistfilenonavigation" + ] + }, + { + "EnumTabs": 11, + "Filter": [ + "StationName", + "Host", + "Section", + "TestListCntID" + ] + }, + { + "EnumTabs": 21, + "Filter": [ + "StationName", + "Host", + "Section", + "TestListCntID" + ] + }, + { + "EnumTabs": 30, + "Filter": [ + "TestListFileName", + "TestListFileNo", + "TestListFVariantNo" + ] + }, + { + "EnumTabs": 1000, + "Filter": [ + "TestListFileNo" + ] + } ] } \ No newline at end of file diff --git a/Projects/WebClient/Web.Tra/Components/Layout/MainLayout.razor b/Projects/WebClient/Web.Tra/Components/Layout/MainLayout.razor index f3c2d4b..43106ba 100644 --- a/Projects/WebClient/Web.Tra/Components/Layout/MainLayout.razor +++ b/Projects/WebClient/Web.Tra/Components/Layout/MainLayout.razor @@ -1,9 +1,4 @@ -@using SystemX.Core.Services -@using WebClient.Library.Config - -@inherits LayoutComponentBase -@inject ConfigService configService -@inject NavigationManager NavigationManager +@inherits LayoutComponentBase diff --git a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor index 3b35f38..24933da 100644 --- a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor +++ b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor @@ -1,4 +1,5 @@ -@typeparam TDataModel +@using WebClient.Library.Model +@typeparam TDataModel x.ToLower() == col.Name.ToLower()) == true) continue; - + + if (GridDisableFilter?.Filter?.Exists(x=>x.ToLower() == col.Name.ToLower()) == true) + continue; + if (col.Name.ToLower().Equals("testdate")) { @@ -109,73 +113,84 @@ public bool VisibleRowNo { get; set; } [Parameter] - public bool HostColumnMerge { get; set; } + public bool HostColumnMerge { get; set; } + + [Parameter] + public EnumTabs EnumTab { get; set; } + private GridDisableFilter GlobalGridDisableFilter = new(); + private GridDisableFilter GridDisableFilter = new(); private IList SelectedRow; private string SummaryTestResult = string.Empty; private string SummaryTestTime = string.Empty; + protected override async Task OnParametersSetAsync() + { + GlobalGridDisableFilter = configService?.GetConfig()?.GridDisableFilter.Where(x => x.EnumTabs == 1)?.FirstOrDefault(); + GridDisableFilter = configService?.GetConfig()?.GridDisableFilter.Where(x => x.EnumTabs == (int)EnumTab)?.FirstOrDefault(); + } + private void CellRender(DataGridCellRenderEventArgs args) { - if (args.Column.Property == null) - return; + // if (args.Column.Property == null) + // return; - var cellData = args.Data as Overview; - if (cellData is null) - return; + // var cellData = args.Data as Overview; + // if (cellData is null) + // return; - if ((args.Column.Property.ToLower().Equals("testdate") || args.Column.Property.ToLower().Equals("host")) == false) - return; + // if ((args.Column.Property.ToLower().Equals("testdate") || args.Column.Property.ToLower().Equals("host")) == false) + // return; - int index = DataList.ToList().FindIndex(x => x.Equals(args.Data)); + // int index = DataList.ToList().FindIndex(x => x.Equals(args.Data)); - //testdate 컬럼일때 날짜 병합 - if (args.Column.Property.ToLower().Equals("testdate")) - { - int rowCount = 0; - var take = DataList.Skip(index).Cast(); - foreach (var r in take) - { - if (r.TestDate.Value.Date == cellData.TestDate.Value.Date) - { - if (r.ModelName == cellData.ModelName) - { - rowCount += 1; - } - } - else - { - break; - } - } - args.Attributes.Clear(); - if (rowCount > 0) - args.Attributes.Add("rowspan", rowCount); - } + // //testdate 컬럼일때 날짜 병합 + // if (args.Column.Property.ToLower().Equals("testdate")) + // { + // int rowCount = 0; + // var take = DataList.Skip(index).Cast(); + // foreach (var r in take) + // { + // if (r.TestDate.Value.Date == cellData.TestDate.Value.Date) + // { + // if (r.ModelName == cellData.ModelName) + // { + // rowCount += 1; + // } + // } + // else + // { + // break; + // } + // } + // args.Attributes.Clear(); + // if (rowCount > 0) + // args.Attributes.Add("rowspan", rowCount); + // } - if (args.Column.Property.ToLower().Equals("host")) - { - if (HostColumnMerge == false) - return; + // if (args.Column.Property.ToLower().Equals("host")) + // { + // if (HostColumnMerge == false) + // return; - int rowCount = 0; - var take = DataList.Skip(index).Cast(); - foreach (var r in take) - { - if (r.Host == cellData.Host) - { - rowCount += 1; - } - else - { - break; - } - } - args.Attributes.Clear(); - if (rowCount > 0) - args.Attributes.Add("rowspan", rowCount); - } + // int rowCount = 0; + // var take = DataList.Skip(index).Cast(); + // foreach (var r in take) + // { + // if (r.Host == cellData.Host) + // { + // rowCount += 1; + // } + // else + // { + // break; + // } + // } + // args.Attributes.Clear(); + // if (rowCount > 0) + // args.Attributes.Add("rowspan", rowCount); + // } } private async Task SelectRow(TDataModel data) diff --git a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor index 91a59cf..e09499a 100644 --- a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor +++ b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor @@ -65,6 +65,22 @@ + + + + + + + + + + + + + + + + @@ -98,23 +114,23 @@ - @if (tab.Key.EnumTab == EnumTabs.OverviewC1) + @if (tab.Key.EnumTab == EnumTabs.OverviewC1 || tab.Key.EnumTab == EnumTabs.OverviewC1Merged) { - } - @if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail) + @if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail || tab.Key.EnumTab == EnumTabs.OverviewC1DetailMerged) { - } @if (tab.Key.EnumTab == EnumTabs.TestHistoryC1) { - } @@ -157,12 +173,45 @@ @if(tab.Value?.Count > 0) { + HostColumnMerge="false" EnumTab="@tab.Key.EnumTab"> } } + + @if (tab.Key.EnumTab == EnumTabs.TestSummaryC1) + { + + + + @{ + var history = tab.Key.Parent as TestSummaryInformation; + + + @foreach (var prop in history.GetType().GetProperties()) + { + + @prop.Name + + + } + + + } + + + + + @if (tab.Value?.Count > 0) + { + + + } + + + } @@ -215,25 +264,27 @@ { List overviews = new(); + int tabId = 0; + if (Tabs.Count > 0) + { + tabId = Tabs.Max(x => x.Key.Id) + 1; + } + if (IsMergePartNumberOption == false) { overviews = await CPXV2LogService.GetOverviews(SearchDataOverviews); + Tabs.AddOrUpdate( + new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})", EnumTab = EnumTabs.OverviewC1, Parent = null }, + key => overviews.Cast().ToList(), (key, oldValue) => overviews.Cast().ToList()); } else { overviews = await CPXV2LogService.GetOverviewMerged(SearchDataOverviews); + Tabs.AddOrUpdate( + new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})", EnumTab = EnumTabs.OverviewC1Merged, Parent = null }, + key => overviews.Cast().ToList(), (key, oldValue) => overviews.Cast().ToList()); } - - int tabId = 0; - if(Tabs.Count > 0) - { - tabId = Tabs.Max(x=>x.Key.Id) + 1; - } - - Tabs.AddOrUpdate( - new OrderdTab {Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})" , EnumTab = EnumTabs.OverviewC1, Parent = null }, - key => overviews.Cast().ToList(), (key, oldValue) => overviews.Cast().ToList()); - + SelectedTabIndex = Tabs.Count - 1; } @@ -262,23 +313,28 @@ if (IsMergePartNumberOption == false) { detailOverviews = await CPXV2LogService.GetDetailOverview(SearchDataOverviews, selectRow); + + int tabId = Tabs.Max(x => x.Key.Id) + 1; + Tabs.AddOrUpdate( + new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1Detail, Parent = row }, + key => detailOverviews.Cast().ToList(), (key, oldValue) => detailOverviews.Cast().ToList()); } else { detailOverviews = await CPXV2LogService.GetDetailOverviewMerged(SearchDataOverviews, selectRow); + + int tabId = Tabs.Max(x => x.Key.Id) + 1; + Tabs.AddOrUpdate( + new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1DetailMerged, Parent = row }, + key => detailOverviews.Cast().ToList(), (key, oldValue) => detailOverviews.Cast().ToList()); } - - int tabId = Tabs.Max(x => x.Key.Id) + 1; - Tabs.AddOrUpdate( - new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1Detail, Parent = row }, - key => detailOverviews.Cast().ToList(), (key, oldValue) => detailOverviews.Cast().ToList()); - + tabs.Reload(); SelectedTabIndex = Tabs.Count - 1; } } - private async Task OnDoubleClickRowDetailOverview(IOverviewModel row) + private async Task OnDoubleClickRowDetailOverview(IDataModel row) { List histories = new(); if (IsMergePartNumberOption == false) @@ -319,12 +375,12 @@ SelectedTabIndex = Tabs.Count - 1; } - void OnClickClose(int tabId) + private void OnClickClose(int tabId) { CloseTab(tabId); } - void CloseTab(int tabId) + private void CloseTab(int tabId) { var removeTab = Tabs.Where(x => x.Key.Id == tabId)?.First().Key; @@ -347,7 +403,7 @@ tabs.Reload(); } - async Task OnChangeMergePartNumberOption() + private async Task OnChangeMergePartNumberOption() { PopupService.OpenIndicator(""); await GetOverviews(); @@ -356,8 +412,52 @@ PopupService.CloseIndicator(); } - async Task OnClickDisplayTestList(TestHistory history) + private async Task OnClickDisplayTestList(TestHistory history) { await JS.InvokeVoidAsync("open", $"/testlist/{history.ProductNo}/{history.TestCode}/{SelectionStepVersion}", "_blank"); } + + private async Task OnSummary() + { + var selectedTab = Tabs.Select(x => x.Key)?.FirstOrDefault(x=>x.Id == SelectedTabIndex); + if(selectedTab is not null) + { + //history에서만 summary 사용 + if(selectedTab.EnumTab == EnumTabs.TestHistoryC1) + { + if(Tabs.TryGetValue(selectedTab, out var data) == true) + { + if(Int32.TryParse(SelectionStepVersion, out int stepVersion) == true) + { + var testHistories = data.Cast().ToList(); + var summary = await CPXV2LogService.GetTestSummary(testHistories, stepVersion); + var summaryInformation = testHistories.GetTestSummaryInformation(); + + if(summary is not null && summaryInformation is not null) + { + summaryInformation.SearchRangeStart = (DateTime)new DateTime(RequestSearch.SearchStart, TimeOnly.MinValue); + summaryInformation.SearchRangeEnd = (DateTime)new DateTime(RequestSearch.SearchEnd, TimeOnly.MaxValue); + + int tabId = Tabs.Max(x => x.Key.Id) + 1; + Tabs.AddOrUpdate( + new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestSummaryC1}({tabId})", EnumTab = EnumTabs.TestSummaryC1, Parent = summaryInformation }, + key => summary?.ParseTestSummary?.Cast()?.ToList(), (key, oldValue) => summary?.ParseTestSummary?.Cast()?.ToList()); + + tabs.Reload(); + SelectedTabIndex = Tabs.Count - 1; + } + } + } + } + else + { + LogXnet.WriteLine("Not history",LogXLabel.Warning); + } + } + } + + private async Task OnExportExcel() + { + + } } \ No newline at end of file diff --git a/Projects/WebClient/Web.Tra/Components/Pages/TestListGrid.razor b/Projects/WebClient/Web.Tra/Components/Pages/TestListGrid.razor index a0b6440..4a04eec 100644 --- a/Projects/WebClient/Web.Tra/Components/Pages/TestListGrid.razor +++ b/Projects/WebClient/Web.Tra/Components/Pages/TestListGrid.razor @@ -96,7 +96,7 @@ + HostColumnMerge="false" EnumTab="EnumTabs.TestListFile"> diff --git a/Projects/WebClient/Web.Tra/Components/_Imports.razor b/Projects/WebClient/Web.Tra/Components/_Imports.razor index 8935bd4..79670f5 100644 --- a/Projects/WebClient/Web.Tra/Components/_Imports.razor +++ b/Projects/WebClient/Web.Tra/Components/_Imports.razor @@ -14,3 +14,9 @@ @using Radzen @using Radzen.Blazor + +@using SystemX.Core.Services +@using WebClient.Library.Config + +@inject ConfigService configService +@inject NavigationManager NavigationManager diff --git a/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs b/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs index 7d242f5..4aabe5d 100644 --- a/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs +++ b/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs @@ -105,7 +105,7 @@ public static class ObjectExtend return testResult; } - public static ParseTestResult ParseTestResult(this DecompressTestResult logData, TestList testList = null) + private 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) @@ -163,4 +163,72 @@ public static class ObjectExtend return null; } + + public static TestSummary ToTestSummary(this List testResults) + { + TestSummary testSummary = new TestSummary(); + testSummary.ParseTestSummary = new List(); + + if(testResults?.Count > 0) + { + var parseTestResults = testResults.SelectMany(x => x.ParseTestResult??=new()).ToList(); + var rowGroup = parseTestResults.GroupBy(x => x.StepNo).ToList().OrderBy(x => x.Key); + foreach(var rows in rowGroup) + { + var summary = new ParseTestSummary + { + StepNo = rows.First().StepNo, + Variant = rows.First().Variant, + Gate = rows.First().Gate, + MO = rows.First().MO, + Function = rows.First().Function, + Min = rows.First().Min, + Average = rows.First().MeasuredValue, + Max = rows.First().Max, + Dimension = rows.First().Dimension, + Total = rows.Count(), + OK = rows.Count(x => x.Result.ToLower().Equals("ok") || x.Result.ToLower().Equals("none")), + NG = rows.Count(x => !(x.Result.ToLower().Equals("ok") || x.Result.ToLower().Equals("none"))), + }; + + //calculate dim + if (rows.FirstOrDefault().Dimension.ToLower() == "dez" || rows.FirstOrDefault().Dimension.ToLower() == "v" || + rows.FirstOrDefault().Dimension.ToLower() == "float" || rows.FirstOrDefault().Dimension.ToLower() == "int") + { + summary.Average = rows.Average(x => Convert.ToDouble(x.MeasuredValue)).ToString(); + } + else + { + if (summary.Average == "0.0") + summary.Average = string.Empty; + } + + testSummary.ParseTestSummary.Add(summary); + } + } + + return testSummary; + } + + public static TestSummaryInformation GetTestSummaryInformation(this List testHistories) + { + return new TestSummaryInformation + { + StartTime = (DateTime)testHistories.Min(x => x.TestDateTime), + EndTime = (DateTime)testHistories.Max(x => x.TestDateTime), + StationName = testHistories.GroupBy(x=>x.StationName)?.Count() > 1 ? string.Empty : testHistories.FirstOrDefault().StationName, + HostID = testHistories.GroupBy(x => x.Host)?.Count() > 1 ? string.Empty : testHistories.FirstOrDefault().Host, + SectionID = testHistories.GroupBy(x => x.Section)?.Count() > 1 ? string.Empty : testHistories.FirstOrDefault().Section, + TestType = testHistories.FirstOrDefault().TestType, + ProductNo = testHistories.FirstOrDefault().ProductNo, + TestCode = testHistories.FirstOrDefault().TestCode, + ParentNo = testHistories.FirstOrDefault().ParentNo, + TestListFileNo = Convert.ToInt32(testHistories.FirstOrDefault().TestListFileNo), + TestListVariantNo = Convert.ToInt32(testHistories.FirstOrDefault().TestListVariantNo), + ProductionCode = testHistories.FirstOrDefault().FileCode, + FileVersion = testHistories.FirstOrDefault().FileVersion, + StepVersion = testHistories.FirstOrDefault().StepVersion, + TestRequestsID = testHistories.FirstOrDefault().TestListReqID, + }; + } } \ No newline at end of file diff --git a/Projects/WebClient/Web.Tra/Model/Enum/EnumTabs.cs b/Projects/WebClient/Web.Tra/Model/Enum/EnumTabs.cs index 4c54436..efa9cb6 100644 --- a/Projects/WebClient/Web.Tra/Model/Enum/EnumTabs.cs +++ b/Projects/WebClient/Web.Tra/Model/Enum/EnumTabs.cs @@ -3,10 +3,21 @@ public enum EnumTabs { None = 0, + OverviewC1 = 10, + OverviewC1Merged = 11, + OverviewC1Detail = 20, + OverviewC1DetailMerged = 21, + TestHistoryC1 = 30, + TestResultC1 = 40, + + TestSummaryC1 = 50, + + TestListFile = 1000, + End = 10000 } } diff --git a/Projects/WebClient/Web.Tra/Model/IOverviewModel.cs b/Projects/WebClient/Web.Tra/Model/IOverviewModel.cs deleted file mode 100644 index 397c293..0000000 --- a/Projects/WebClient/Web.Tra/Model/IOverviewModel.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Web.Tra.Model -{ - public interface IOverviewModel : IDataModel - { - } -} diff --git a/Projects/WebClient/Web.Tra/Model/ITestResultModel.cs b/Projects/WebClient/Web.Tra/Model/ITestResultModel.cs deleted file mode 100644 index 296fae7..0000000 --- a/Projects/WebClient/Web.Tra/Model/ITestResultModel.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Web.Tra.Model -{ - public interface ITestResultModel : IDataModel - { - } -} diff --git a/Projects/WebClient/Web.Tra/Model/Overview.cs b/Projects/WebClient/Web.Tra/Model/Overview.cs index 1da55cc..f78af6d 100644 --- a/Projects/WebClient/Web.Tra/Model/Overview.cs +++ b/Projects/WebClient/Web.Tra/Model/Overview.cs @@ -1,6 +1,6 @@ namespace Web.Tra.Model { - public class Overview : IOverviewModel + public class Overview : IDataModel { public DateTime? TestDate { get; set; } public string StationName { get; set; } diff --git a/Projects/WebClient/Web.Tra/Model/TestHistory.cs b/Projects/WebClient/Web.Tra/Model/TestHistory.cs index 7b09e53..43831bb 100644 --- a/Projects/WebClient/Web.Tra/Model/TestHistory.cs +++ b/Projects/WebClient/Web.Tra/Model/TestHistory.cs @@ -1,6 +1,6 @@ namespace Web.Tra.Model { - public class TestHistory : IOverviewModel + public class TestHistory : IDataModel { public long No { get; set; } public DateTime? TestDateTime { get; set; } diff --git a/Projects/WebClient/Web.Tra/Model/TestResult.cs b/Projects/WebClient/Web.Tra/Model/TestResult.cs index 9323c21..22bb545 100644 --- a/Projects/WebClient/Web.Tra/Model/TestResult.cs +++ b/Projects/WebClient/Web.Tra/Model/TestResult.cs @@ -3,7 +3,7 @@ using SystemX.Core.DB; namespace Web.Tra.Model { - public class TestResult : ITestResultModel + public class TestResult : IDataModel { //log data public List DecompressTestResult { get; set; } @@ -13,7 +13,7 @@ namespace Web.Tra.Model public TestList? TestList { get; set; } } - public class DecompressTestResult : ITestResultModel + public class DecompressTestResult : IDataModel { public int StepID { get; set; } public double MeasVal { get; set; } @@ -26,7 +26,7 @@ namespace Web.Tra.Model public string SpentTime { get; set; } } - public class ParseTestResult : ITestResultModel + public class ParseTestResult : IDataModel { public int StepNo { get; set; } public long Position { get; set; } diff --git a/Projects/WebClient/Web.Tra/Model/TestSummary.cs b/Projects/WebClient/Web.Tra/Model/TestSummary.cs new file mode 100644 index 0000000..2005bd5 --- /dev/null +++ b/Projects/WebClient/Web.Tra/Model/TestSummary.cs @@ -0,0 +1,44 @@ +namespace Web.Tra.Model +{ + public class TestSummary : IDataModel + { + public List ParseTestSummary { get; set; } + } + + public class ParseTestSummary : IDataModel + { + public int StepNo { get; set; } + public string Variant { get; set; } + public string Gate { get; set; } + public string MO { get; set; } + public string Function { get; set; } + public string Min { get; set; } + public string Average { get; set; } + public string Max { get; set; } + public string Dimension { get; set; } + public int Total { get; set; } + public int OK { get; set; } + public int NG { get; set; } + } + + public class TestSummaryInformation : IDataModel + { + public DateTime SearchRangeStart { get; set; } + public DateTime SearchRangeEnd { get; set; } + public DateTime StartTime { get; set; } + public DateTime EndTime { get; set; } + public string StationName { get; set; } + public string HostID { get; set; } + public string SectionID { get; set; } + public string TestType { get; set; } + public string ProductNo { get; set; } + public string TestCode { get; set; } + public string ParentNo { get; set; } + public int TestListFileNo { get; set; } + public int TestListVariantNo { get; set; } + public string ProductionCode { get; set; } + public string FileVersion { get; set; } + public int StepVersion { get; set; } + public string TestRequestsID { get; set; } + } +} diff --git a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs index c99ec3e..9df8045 100644 --- a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs +++ b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs @@ -115,7 +115,7 @@ namespace Web.Tra.Services return group.ToList(); } - public async Task> GetDetailOverview(List request, IOverviewModel row) + public async Task> GetDetailOverview(List request, IDataModel row) { var selectRow = row as Overview; List detailOverview = new List(); @@ -142,7 +142,7 @@ namespace Web.Tra.Services return detailOverview; } - public async Task> GetDetailOverviewMerged(List request, IOverviewModel row) + public async Task> GetDetailOverviewMerged(List request, IDataModel row) { var selectRow = row as Overview; List detailOverview = new List(); @@ -166,7 +166,7 @@ namespace Web.Tra.Services return detailOverview; } - public async Task> GetTestHistory(List request, IOverviewModel row) + public async Task> GetTestHistory(List request, IDataModel row) { var selectRow = row as Overview; List testHistory = new List(); @@ -189,7 +189,7 @@ namespace Web.Tra.Services return testHistory; } - public async Task> GetTestHistoryMerged(List request, IOverviewModel row) + public async Task> GetTestHistoryMerged(List request, IDataModel row) { var selectRow = row as Overview; List testHistory = new List(); @@ -200,7 +200,8 @@ namespace Web.Tra.Services .Where(x => x.Summary.TestDT.Date == selectRow.TestDate.Value.Date && x.Summary.Testcode == selectRow.TestCode && x.Summary.ProdNo_C == selectRow.ProductNo && - x.Summary.ProdNo_P == selectRow.ParentNo) + x.Summary.ProdNo_P == selectRow.ParentNo && + x.Summary.StepVersion == selectRow.StepVersion) .Select(x => x.ToTestHistory()) .OrderBy(x => (x.TestListReqID, x.No)) .ToList(); @@ -306,6 +307,28 @@ namespace Web.Tra.Services return result; } + public async Task GetTestSummary(List histories, int stepVersion) + { + TestSummary result = new TestSummary(); + + if (histories?.Count() > 0) + { + List getTestResults = new List(); + + //test result parse + foreach (var hist in histories) + { + getTestResults.Add(await GetTestResult(hist, stepVersion)); + } + + result = getTestResults.ToTestSummary(); + + } + + await Task.CompletedTask; + return result; + } + public bool TryParseTestCode(string testCode, out int outValue) { bool result = false; diff --git a/Projects/WebClient/WebClient.Library/Config/WebClientConfig.cs b/Projects/WebClient/WebClient.Library/Config/WebClientConfig.cs index 2708b4b..4bffc0e 100644 --- a/Projects/WebClient/WebClient.Library/Config/WebClientConfig.cs +++ b/Projects/WebClient/WebClient.Library/Config/WebClientConfig.cs @@ -6,6 +6,7 @@ using System.Text.Json.Serialization; using System.Threading.Tasks; using SystemX.Core.Config; using SystemX.Core.Config.Model; +using WebClient.Library.Model; namespace WebClient.Library.Config { @@ -16,5 +17,8 @@ namespace WebClient.Library.Config [JsonPropertyName("ApplicationName")] public string? ApplicationName { get; set; } + + [JsonPropertyName("GridDisableFilter")] + public List? GridDisableFilter { get; set; } } } diff --git a/Projects/WebClient/WebClient.Library/Model/GridDisableFilter.cs b/Projects/WebClient/WebClient.Library/Model/GridDisableFilter.cs new file mode 100644 index 0000000..eb46229 --- /dev/null +++ b/Projects/WebClient/WebClient.Library/Model/GridDisableFilter.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WebClient.Library.Model +{ + public class GridDisableFilter + { + public int EnumTabs { get; set; } + public List Filter { get; set; } + } +}