[성현모] 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())
{
if (col.Name.ToLower().Equals("rn") || col.Name.ToLower().Equals("stepversion"))
if(DisableColums?.Contains(col.Name.ToLower()) == true)
continue;
@*
if (col.Name.ToLower().Equals("rn") || col.Name.ToLower().Equals("stepversion"))
continue; *@
if (col.Name.ToLower().Equals("testdate"))
{
@ -85,6 +89,9 @@
[Parameter]
public int PageSize { get; set; } = 30;
[Parameter]
public List<string> DisableColums { get; set; }
private IList<TDataModel> SelectedRow;
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="width: 18rem;" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.SpaceBetween">
<RadzenLabel Text="Merge By PartNumber"></RadzenLabel>
<RadzenSwitch @bind-Value=@IsMergePartNumberOption></RadzenSwitch>
<RadzenSwitch @bind-Value=@IsMergePartNumberOption Change="@OnChangeMergePartNumberOption"></RadzenSwitch>
</RadzenStack>
<RadzenStack Style="width: 18rem;" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.SpaceBetween">
<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>
@ -87,8 +87,8 @@
<ChildContent>
@if (tab.Key == EnumTabs.OverviewC1.ToString())
{
<TraGrid TDataModel="OverviewMerged" DataList="@Overviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize">
<TraGrid TDataModel="Overview" DataList="@Overviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@DisableColums">
</TraGrid>
}
@ -122,12 +122,15 @@
private bool IsMergePartNumberOption = false;
private int PageSize = 30;
private List<string> DisableColums = new List<string>();
RadzenTabs tabs;
int SelectedTabIndex = 0;
Dictionary<string, EnumTabs> ListTabs = new Dictionary<string, EnumTabs>();
List<OverviewMerged> Overviews = new List<OverviewMerged>();
List<Overview> DetailOverviews = new List<Overview>();
List<SearchData> SearchDataOverviews = new List<SearchData>();
List<Overview> Overviews = new List<Overview>();
//List<Overview> DetailOverviews = new List<Overview>();
// List<TestHistory> TestHistories = new List<TestHistory>();
protected override async Task OnInitializedAsync()
@ -145,13 +148,35 @@
PopupService.OpenIndicator("Search Data");
Overviews = await CPXV2LogService.GetOverviewMerged(RequestSearch);
SearchDataOverviews = await CPXV2LogService.GetSearchDataOverview(RequestSearch);
await GetOverviews();
if (ListTabs.ContainsKey(EnumTabs.OverviewC1.ToString()) == false)
ListTabs.Add($"{EnumTabs.OverviewC1}", EnumTabs.OverviewC1);
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()
{
@ -172,7 +197,7 @@
// ListTabs.Add($"{EnumTabs.OverviewC1}", EnumTabs.OverviewC1);
}
private void OnSelectRowOverview(OverviewMerged overview)
private void OnSelectRowOverview(IDataModel overview)
{
// SelectionStationName = $"{overview.StationName} ({overview.Host},{overview.Section})";
// SelectionProductNO = $"{overview.ProductNo} ({overview.TestCode})";
@ -216,4 +241,14 @@
}
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),
ModelName = data.Last().TestInfo?.PROD_Group?.ModelName,

View File

@ -25,24 +25,24 @@
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; }
}
//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; }
//}
}

View File

@ -20,9 +20,9 @@ namespace Web.Tra.Services
}
//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 endYear = request.SearchEnd.Year;
@ -67,94 +67,48 @@ namespace Web.Tra.Services
});
var ListSearchData = search
.Where(x => x.Summary.TestListVariantNo > 0)
// .Where(x => x.Summary.TestListVariantNo > 0)
.OrderBy(x => x.Summary.TestDT).ToList();
var group = ListSearchData
.GroupBy(x => (x.Summary.HostID, x.Summary.Section))
.Select(x => x.ToOverview())
.OrderBy(x => x.Host);
overview.AddRange(group);
searchData.AddRange(ListSearchData);
}
}
}
return overview.OrderBy(x=>x.TestDate).ToList();
return searchData;
}
public async Task<List<OverviewMerged>> GetOverviewMerged(RequestSearch request)
public async Task<List<Overview>> GetOverviews(List<SearchData> request)
{
List<OverviewMerged> overview = new List<OverviewMerged>();
var group = request
.GroupBy(x => (x.Summary.HostID, x.Summary.Section))
.Select(x => x.ToOverview())
.OrderBy(x => x.Host);
int startYear = request.SearchStart.Year;
int endYear = request.SearchEnd.Year;
await Task.CompletedTask;
return group.OrderBy(x => x.TestDate).ToList();
}
//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());
}
}
}
}
public async Task<List<Overview>> GetOverviewMerged(List<SearchData> request)
{
var group = request.OrderByDescending(x=>x.Summary.TestDT).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.TestType, x.ProductNo, x.TestCode,
x.ParentNo,x.FileCode, x.FileVersion))
.OrderBy(x => (x.ProductNo, x.ParentNo));
//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),
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;
await Task.CompletedTask;
return group.ToList();
}
//Get DBContext