[성현모] Overview Merged 통합, 컬럼 필터링 추가

This commit is contained in:
SHM
2025-09-03 16:45:28 +09:00
parent 32139123ba
commit 9a18f51bef
5 changed files with 106 additions and 110 deletions

View File

@ -19,8 +19,12 @@
@foreach (var col in typeof(TDataModel).GetProperties()) @foreach (var col in typeof(TDataModel).GetProperties())
{ {
if (col.Name.ToLower().Equals("rn") || col.Name.ToLower().Equals("stepversion"))
if(DisableColums?.Contains(col.Name.ToLower()) == true)
continue; continue;
@*
if (col.Name.ToLower().Equals("rn") || col.Name.ToLower().Equals("stepversion"))
continue; *@
if (col.Name.ToLower().Equals("testdate")) if (col.Name.ToLower().Equals("testdate"))
{ {
@ -85,6 +89,9 @@
[Parameter] [Parameter]
public int PageSize { get; set; } = 30; public int PageSize { get; set; } = 30;
[Parameter]
public List<string> DisableColums { get; set; }
private IList<TDataModel> SelectedRow; private IList<TDataModel> SelectedRow;
private void CellRender(DataGridCellRenderEventArgs<TDataModel> args) private void CellRender(DataGridCellRenderEventArgs<TDataModel> args)

View File

@ -65,11 +65,11 @@
<RadzenStack Style="font-size:1.5rem;" Orientation="Orientation.Vertical" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Center"> <RadzenStack Style="font-size:1.5rem;" Orientation="Orientation.Vertical" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Center">
<RadzenStack Style="width: 18rem;" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.SpaceBetween"> <RadzenStack Style="width: 18rem;" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.SpaceBetween">
<RadzenLabel Text="Merge By PartNumber"></RadzenLabel> <RadzenLabel Text="Merge By PartNumber"></RadzenLabel>
<RadzenSwitch @bind-Value=@IsMergePartNumberOption></RadzenSwitch> <RadzenSwitch @bind-Value=@IsMergePartNumberOption Change="@OnChangeMergePartNumberOption"></RadzenSwitch>
</RadzenStack> </RadzenStack>
<RadzenStack Style="width: 18rem;" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.SpaceBetween"> <RadzenStack Style="width: 18rem;" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.SpaceBetween">
<RadzenLabel Text="Page Size"></RadzenLabel> <RadzenLabel Text="Page Size"></RadzenLabel>
<RadzenNumeric @bind-Value=@PageSize></RadzenNumeric> <RadzenNumeric Style="width: 8rem;" @bind-Value=@PageSize Min="10" Max="200"></RadzenNumeric>
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
@ -87,8 +87,8 @@
<ChildContent> <ChildContent>
@if (tab.Key == EnumTabs.OverviewC1.ToString()) @if (tab.Key == EnumTabs.OverviewC1.ToString())
{ {
<TraGrid TDataModel="OverviewMerged" DataList="@Overviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu" <TraGrid TDataModel="Overview" DataList="@Overviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize"> OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@DisableColums">
</TraGrid> </TraGrid>
} }
@ -122,12 +122,15 @@
private bool IsMergePartNumberOption = false; private bool IsMergePartNumberOption = false;
private int PageSize = 30; private int PageSize = 30;
private List<string> DisableColums = new List<string>();
RadzenTabs tabs; RadzenTabs tabs;
int SelectedTabIndex = 0; int SelectedTabIndex = 0;
Dictionary<string, EnumTabs> ListTabs = new Dictionary<string, EnumTabs>(); Dictionary<string, EnumTabs> ListTabs = new Dictionary<string, EnumTabs>();
List<OverviewMerged> Overviews = new List<OverviewMerged>(); List<SearchData> SearchDataOverviews = new List<SearchData>();
List<Overview> DetailOverviews = new List<Overview>(); List<Overview> Overviews = new List<Overview>();
//List<Overview> DetailOverviews = new List<Overview>();
// List<TestHistory> TestHistories = new List<TestHistory>(); // List<TestHistory> TestHistories = new List<TestHistory>();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
@ -145,13 +148,35 @@
PopupService.OpenIndicator("Search Data"); PopupService.OpenIndicator("Search Data");
Overviews = await CPXV2LogService.GetOverviewMerged(RequestSearch); SearchDataOverviews = await CPXV2LogService.GetSearchDataOverview(RequestSearch);
await GetOverviews();
if (ListTabs.ContainsKey(EnumTabs.OverviewC1.ToString()) == false) if (ListTabs.ContainsKey(EnumTabs.OverviewC1.ToString()) == false)
ListTabs.Add($"{EnumTabs.OverviewC1}", EnumTabs.OverviewC1); ListTabs.Add($"{EnumTabs.OverviewC1}", EnumTabs.OverviewC1);
PopupService.CloseIndicator(); PopupService.CloseIndicator();
} }
private async Task GetOverviews()
{
DisableColums.Clear();
DisableColums.Add("rn");
DisableColums.Add("stepversion");
if (IsMergePartNumberOption == false)
{
Overviews = await CPXV2LogService.GetOverviews(SearchDataOverviews);
}
else
{
DisableColums.Add("stationname");
DisableColums.Add("host");
DisableColums.Add("section");
DisableColums.Add("testlistcntid");
Overviews = await CPXV2LogService.GetOverviewMerged(SearchDataOverviews);
}
}
protected override void OnInitialized() protected override void OnInitialized()
{ {
@ -172,7 +197,7 @@
// ListTabs.Add($"{EnumTabs.OverviewC1}", EnumTabs.OverviewC1); // ListTabs.Add($"{EnumTabs.OverviewC1}", EnumTabs.OverviewC1);
} }
private void OnSelectRowOverview(OverviewMerged overview) private void OnSelectRowOverview(IDataModel overview)
{ {
// SelectionStationName = $"{overview.StationName} ({overview.Host},{overview.Section})"; // SelectionStationName = $"{overview.StationName} ({overview.Host},{overview.Section})";
// SelectionProductNO = $"{overview.ProductNo} ({overview.TestCode})"; // SelectionProductNO = $"{overview.ProductNo} ({overview.TestCode})";
@ -216,4 +241,14 @@
} }
tabs.Reload(); tabs.Reload();
} }
async Task OnChangeMergePartNumberOption()
{
PopupService.OpenIndicator("");
await GetOverviews();
await Task.Delay(300);
PopupService.CloseIndicator();
}
} }

View File

@ -30,9 +30,9 @@ public static class ObjectExtend
}; };
} }
public static OverviewMerged ToOverviewMerged(this IEnumerable<SearchData> data) public static Overview ToOverviewMerged(this IEnumerable<SearchData> data)
{ {
return new OverviewMerged return new Overview
{ {
TestDate = data.Max(x => x.Summary.TestDT.Date), TestDate = data.Max(x => x.Summary.TestDT.Date),
ModelName = data.Last().TestInfo?.PROD_Group?.ModelName, ModelName = data.Last().TestInfo?.PROD_Group?.ModelName,

View File

@ -25,24 +25,24 @@
public string TestListCntID { get; set; } public string TestListCntID { get; set; }
} }
public class OverviewMerged : IDataModel //public class OverviewMerged : IDataModel
{ //{
public DateTime? TestDate { get; set; } // public DateTime? TestDate { get; set; }
public string ModelName { get; set; } // public string ModelName { get; set; }
public string TestType { get; set; } // public string TestType { get; set; }
public string ProductNo { get; set; } // public string ProductNo { get; set; }
public string TestCode { get; set; } // public string TestCode { get; set; }
public string ParentNo { get; set; } // public string ParentNo { get; set; }
public int? TestListFileNo { get; set; } // public int? TestListFileNo { get; set; }
public int? TestListVariantNo { get; set; } // public int? TestListVariantNo { get; set; }
public string FileCode { get; set; } // public string FileCode { get; set; }
public string FileVersion { get; set; } // public string FileVersion { get; set; }
public int? StepVersion { get; set; } // public int? StepVersion { get; set; }
public string FirstTestTime { get; set; } // public string FirstTestTime { get; set; }
public string FinalTestTime { get; set; } // public string FinalTestTime { get; set; }
public int Total { get; set; } // public int Total { get; set; }
public int OK { get; set; } // public int OK { get; set; }
public int NG { get; set; } // public int NG { get; set; }
public int RN { get; set; } // public int RN { get; set; }
} //}
} }

View File

@ -20,9 +20,9 @@ namespace Web.Tra.Services
} }
//Get Overview //Get Overview
public async Task<List<Overview>> GetOverview(RequestSearch request) public async Task<List<SearchData>> GetSearchDataOverview(RequestSearch request)
{ {
List<Overview> overview = new List<Overview>(); List<SearchData> searchData = new List<SearchData>();
int startYear = request.SearchStart.Year; int startYear = request.SearchStart.Year;
int endYear = request.SearchEnd.Year; int endYear = request.SearchEnd.Year;
@ -67,73 +67,31 @@ namespace Web.Tra.Services
}); });
var ListSearchData = search var ListSearchData = search
.Where(x => x.Summary.TestListVariantNo > 0) // .Where(x => x.Summary.TestListVariantNo > 0)
.OrderBy(x => x.Summary.TestDT).ToList(); .OrderBy(x => x.Summary.TestDT).ToList();
var group = ListSearchData searchData.AddRange(ListSearchData);
}
}
}
return searchData;
}
public async Task<List<Overview>> GetOverviews(List<SearchData> request)
{
var group = request
.GroupBy(x => (x.Summary.HostID, x.Summary.Section)) .GroupBy(x => (x.Summary.HostID, x.Summary.Section))
.Select(x => x.ToOverview()) .Select(x => x.ToOverview())
.OrderBy(x => x.Host); .OrderBy(x => x.Host);
overview.AddRange(group); await Task.CompletedTask;
} return group.OrderBy(x => x.TestDate).ToList();
}
} }
return overview.OrderBy(x=>x.TestDate).ToList(); public async Task<List<Overview>> GetOverviewMerged(List<SearchData> request)
}
public async Task<List<OverviewMerged>> GetOverviewMerged(RequestSearch request)
{ {
List<OverviewMerged> overview = new List<OverviewMerged>(); var group = request.OrderByDescending(x=>x.Summary.TestDT).GroupBy(x =>
int startYear = request.SearchStart.Year;
int endYear = request.SearchEnd.Year;
//search log
List<HIST_LogSummary> SearchLogList = new List<HIST_LogSummary>();
for (int i = startYear; i <= endYear; i++)
{
using (var scope = _scopeFactory.CreateScope())
{
var provider = scope.ServiceProvider.GetRequiredService<DbContextProvider>();
using (var context = GetDBContext<CPXV2Log>(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<DbContextProvider>();
using (var context = GetDBContext<CPXV2>(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), (DateOnly.FromDateTime(x.Summary.TestDT.Date),
x.Summary.TestType, x.Summary.TestType,
x.Summary.ProdNo_C, x.Summary.ProdNo_C,
@ -145,16 +103,12 @@ namespace Web.Tra.Services
x.Summary.Version, x.Summary.Version,
x.Summary.StepVersion)) x.Summary.StepVersion))
.Select(x => x.ToOverviewMerged()) .Select(x => x.ToOverviewMerged())
.DistinctBy(x => (x.ModelName, x.TestType, x.ProductNo, x.TestCode, x.ParentNo, .DistinctBy(x => (x.TestType, x.ProductNo, x.TestCode,
x.TestListFileNo, x.TestListVariantNo, x.FileCode, x.FileVersion)) x.ParentNo,x.FileCode, x.FileVersion))
.OrderBy(x => (x.ProductNo, x.ParentNo, x.TestDate)); .OrderBy(x => (x.ProductNo, x.ParentNo));
overview.AddRange(group); await Task.CompletedTask;
} return group.ToList();
}
}
return overview;
} }
//Get DBContext //Get DBContext