From 02f170db5f48f14a3f571bfa8fe92c53a5013fe8 Mon Sep 17 00:00:00 2001 From: SHM Date: Wed, 3 Sep 2025 10:32:20 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=84=B1=ED=98=84=EB=AA=A8]=20Overview=20Merg?= =?UTF-8?q?ed=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Web.Tra/Components/Module/TraGrid.razor | 7 +- .../Web.Tra/Components/Pages/TRA.razor | 81 ++++++++++++++++--- .../Web.Tra/Extended/ObjectExtended.cs | 24 ++++++ Projects/WebClient/Web.Tra/Model/Overview.cs | 21 +++++ .../Web.Tra/Services/CPXV2LogService.cs | 74 +++++++++++++++++ 5 files changed, 193 insertions(+), 14 deletions(-) diff --git a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor index f64e79d..d8a8254 100644 --- a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor +++ b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor @@ -5,7 +5,7 @@ + CellContextMenu="@OnCellContextMenu" RowSelect="@SelectRow" RowDoubleClick="@OnRowDoublClick"> @if (VisibleRowNo == true) @@ -185,4 +185,9 @@ await OnSelectRow.InvokeAsync(data); StateHasChanged(); } + + private async Task OnRowDoublClick(DataGridRowMouseEventArgs args) + { + + } } diff --git a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor index 1177341..b09558f 100644 --- a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor +++ b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor @@ -8,13 +8,13 @@ - + - + - + @@ -24,6 +24,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38,16 +81,16 @@ @if (tab.Key == EnumTabs.OverviewC1.ToString()) { - } @if (tab.Key == EnumTabs.OverviewC1Detail.ToString()) { - - + *@ } @* @if (tab.Key.Contains(EnumTabs.TestHistoryC1.ToString())) @@ -64,10 +107,19 @@ @code { private RequestSearch RequestSearch = new RequestSearch(); + private string SelectionStationName = string.Empty; + private string SelectionProductNO = string.Empty; + private string SelectionParentInfo = string.Empty; + private string SelectionSearchBegin = string.Empty; + private string SelectionSearchEnd = string.Empty; + private string SelectionStepVersion = string.Empty; + + private bool IsMergePartNumberOption = false; + RadzenTabs tabs; int SelectedTabIndex = 0; Dictionary ListTabs = new Dictionary(); - List Overviews = new List(); + List Overviews = new List(); List DetailOverviews = new List(); // List TestHistories = new List(); @@ -86,7 +138,7 @@ PopupService.OpenIndicator("Search Data"); - Overviews = await CPXV2LogService.GetOverview(RequestSearch); + Overviews = await CPXV2LogService.GetOverviewMerged(RequestSearch); if (ListTabs.ContainsKey(EnumTabs.OverviewC1.ToString()) == false) ListTabs.Add($"{EnumTabs.OverviewC1}", EnumTabs.OverviewC1); @@ -105,7 +157,7 @@ protected override void OnParametersSet() { - + // var searchData = OverviewService.SearchOverview(); //Overviews = searchData; @@ -113,12 +165,15 @@ // ListTabs.Add($"{EnumTabs.OverviewC1}", EnumTabs.OverviewC1); } - private void OnSelectRowOverview(Overview overview) + private void OnSelectRowOverview(OverviewMerged overview) { - // if (SelectedTabIndex < 0) - // SelectedTabIndex = 0; + // SelectionStationName = $"{overview.StationName} ({overview.Host},{overview.Section})"; + // SelectionProductNO = $"{overview.ProductNo} ({overview.TestCode})"; + // SelectionParentInfo = $"{overview.ParentNo} ({overview.FileVersion},{overview.FileCode})"; - // SelectedDataService.SetSelectedOverview(overview); + // SelectionSearchBegin = $"{overview.TestDate?.ToString("yyyy-MM-dd")} {overview.FirstTestTime}"; + // SelectionSearchEnd = $"{overview.TestDate?.ToString("yyyy-MM-dd")} {overview.FinalTestTime}"; + // SelectionStepVersion = $"{overview.StepVersion}"; } private void OnClickDetailOverviewContextMenu() diff --git a/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs b/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs index ba19b90..855d275 100644 --- a/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs +++ b/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs @@ -30,6 +30,30 @@ public static class ObjectExtend }; } + public static OverviewMerged ToOverviewMerged(this IEnumerable data) + { + return new OverviewMerged + { + 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")), + RN = 0 + }; + } + public static Overview ToDetailOverview(this IEnumerable data) { return data.ToOverview(); diff --git a/Projects/WebClient/Web.Tra/Model/Overview.cs b/Projects/WebClient/Web.Tra/Model/Overview.cs index ff2ffeb..5a5067f 100644 --- a/Projects/WebClient/Web.Tra/Model/Overview.cs +++ b/Projects/WebClient/Web.Tra/Model/Overview.cs @@ -24,4 +24,25 @@ public int RN { get; set; } public string TestListCntID { get; set; } } + + public class OverviewMerged : IDataModel + { + public DateTime? TestDate { get; set; } + public string ModelName { 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 FileCode { get; set; } + public string FileVersion { get; set; } + public int? StepVersion { get; set; } + public string FirstTestTime { get; set; } + public string FinalTestTime { get; set; } + public int Total { get; set; } + public int OK { get; set; } + public int NG { get; set; } + public int RN { get; set; } + } } diff --git a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs index 61613ae..063e6f8 100644 --- a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs +++ b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs @@ -83,6 +83,80 @@ namespace Web.Tra.Services return overview.OrderBy(x=>x.TestDate).ToList(); } + public async Task> GetOverviewMerged(RequestSearch request) + { + List overview = new List(); + + int startYear = request.SearchStart.Year; + int endYear = request.SearchEnd.Year; + + //search log + List SearchLogList = new List(); + for (int i = startYear; i <= endYear; i++) + { + using (var scope = _scopeFactory.CreateScope()) + { + var provider = scope.ServiceProvider.GetRequiredService(); + using (var context = GetDBContext(provider, i)) + { + if (context is not null) + { + SearchLogList.AddRange(await context.HIST_LogSummaries.Where(x => request.SearchStart <= DateOnly.FromDateTime(x.TestDT) && DateOnly.FromDateTime(x.TestDT) <= request.SearchEnd).ToListAsync()); + } + } + } + } + + //search testlist + using (var scope = _scopeFactory.CreateScope()) + { + var provider = scope.ServiceProvider.GetRequiredService(); + using (var context = GetDBContext(provider, 1)) + { + if (context is not null) + { + var varProdVariant = context.PROD_Variants.ToList(); + var varProudGroup = context.PROD_Groups.ToList(); + var TesetInfoList = varProdVariant.Select(x => new TestInfo + { + PROD_Variant = x, + PROD_Group = varProudGroup.Find(y => y.No == x.GroupNo) + }).ToList(); + + var search = SearchLogList.Select(x => new SearchData + { + Summary = x, + TestInfo = TesetInfoList.Find(y => y.PROD_Variant.No == x.TestListVariantNo) + }); + + var ListSearchData = search + //.Where(x => x.Summary.TestListVariantNo > 0) + .OrderByDescending(x => x.Summary.TestDT).ToList(); + + var group = ListSearchData.GroupBy(x => + (DateOnly.FromDateTime(x.Summary.TestDT.Date), + x.Summary.TestType, + x.Summary.ProdNo_C, + x.Summary.Testcode, + x.Summary.TestListFileNo, + x.Summary.TestListVariantNo, + x.Summary.ProdNo_P, + x.Summary.ProdCode, + x.Summary.Version, + x.Summary.StepVersion)) + .Select(x => x.ToOverviewMerged()) + .DistinctBy(x => (x.ModelName, x.TestType, x.ProductNo, x.TestCode, x.ParentNo, + x.TestListFileNo, x.TestListVariantNo, x.FileCode, x.FileVersion)) + .OrderBy(x => (x.ProductNo, x.ParentNo, x.TestDate)); + + overview.AddRange(group); + } + } + } + + return overview; + } + //Get DBContext private T? GetDBContext(DbContextProvider provider, int dbID) where T : DbContext {