[성현모] HistoryMerged 조회 추가

This commit is contained in:
SHM
2025-09-05 09:15:48 +09:00
parent db28cfdec0
commit 95f137d543
6 changed files with 118 additions and 39 deletions

View File

@ -0,0 +1,13 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "9.0.8",
"commands": [
"dotnet-ef"
],
"rollForward": false
}
}
}

View File

@ -3,7 +3,7 @@
@inject ContextMenuService ContextMenuService @inject ContextMenuService ContextMenuService
<RadzenDataGrid Style="height:calc(100vh - 23rem); font-size: 20px;" TItem="TDataModel" Data="@DataList" AllowPaging PageSize="@PageSize" <RadzenDataGrid Style="height:calc(100vh - 23rem); font-size: 20px;" TItem="TDataModel" Data="@DataList" AllowPaging PageSize="@PageSize"
AllowFiltering FilterMode="FilterMode.Advanced" CellRender="@CellRender" AllowFiltering FilterMode="FilterMode.Advanced" CellRender="@CellRender" AllowColumnResize
SelectionMode="DataGridSelectionMode.Single" @bind-Value="@SelectedRow" SelectionMode="DataGridSelectionMode.Single" @bind-Value="@SelectedRow"
CellContextMenu="@OnCellContextMenu" RowSelect="@SelectRow" RowDoubleClick="@OnRowDoublClick"> CellContextMenu="@OnCellContextMenu" RowSelect="@SelectRow" RowDoubleClick="@OnRowDoublClick">
<Columns> <Columns>
@ -12,7 +12,9 @@
{ {
<RadzenDataGridColumn Title="No."> <RadzenDataGridColumn Title="No.">
<Template> <Template>
<span class="custom-rz-value">
@(DataList.ToList().IndexOf(context) + 1) @(DataList.ToList().IndexOf(context) + 1)
</span>
</Template> </Template>
</RadzenDataGridColumn> </RadzenDataGridColumn>
} }
@ -130,6 +132,9 @@
if (args.Column.Property.ToLower().Equals("host")) if (args.Column.Property.ToLower().Equals("host"))
{ {
if (HostColumnMerge == false)
return;
int rowCount = 0; int rowCount = 0;
var take = DataList.Skip(index).Take(((index / PageSize) + 1) * PageSize - index); var take = DataList.Skip(index).Take(((index / PageSize) + 1) * PageSize - index);
foreach (var r in take) foreach (var r in take)

View File

@ -89,16 +89,24 @@
@if (tab.Key == EnumTabs.OverviewC1.ToString()) @if (tab.Key == EnumTabs.OverviewC1.ToString())
{ {
<TraGrid TDataModel="Overview" DataList="@Overviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu" <TraGrid TDataModel="Overview" DataList="@Overviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@DisableColums" OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@OverviewDisableColums"
OnDoubleClickRow="@OnDoubleClickRowOverview"> OnDoubleClickRow="@OnDoubleClickRowOverview" HostColumnMerge>
</TraGrid> </TraGrid>
} }
@if (tab.Key == EnumTabs.OverviewC1Detail.ToString()) @if (tab.Key == EnumTabs.OverviewC1Detail.ToString())
{ {
<TraGrid TDataModel="Overview" DataList="@DetailOverviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu" <TraGrid TDataModel="Overview" DataList="@DetailOverviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@DisableColums" OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@OverviewDisableColums"
OnDoubleClickRow="@OnDoubleClickRowOverview"> OnDoubleClickRow="@OnDoubleClickRowDetailOverview" HostColumnMerge>
</TraGrid>
}
@if (tab.Key.Contains(EnumTabs.TestHistoryC1.ToString()))
{
<TraGrid TDataModel="TestHistory" DataList="@TestHistories.Where(x=>x.Key == tab.Key).First().Value" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@HistoryDisableColums"
VisibleRowNo HostColumnMerge="false">
</TraGrid> </TraGrid>
} }
</ChildContent> </ChildContent>
@ -121,7 +129,8 @@
//options //options
private bool IsMergePartNumberOption = false; private bool IsMergePartNumberOption = false;
private int PageSize = 30; private int PageSize = 30;
private List<string> DisableColums = new List<string>(); private List<string> OverviewDisableColums = new List<string>();
private List<string> HistoryDisableColums = new List<string> { "testdate", "modelname", "firsttesttime", "finaltesttime", "testlistcntid" };
//tab //tab
RadzenTabs tabs; RadzenTabs tabs;
@ -132,6 +141,7 @@
List<SearchData> SearchDataOverviews = new List<SearchData>(); List<SearchData> SearchDataOverviews = new List<SearchData>();
List<Overview> Overviews = new List<Overview>(); List<Overview> Overviews = new List<Overview>();
List<Overview> DetailOverviews = new List<Overview>(); List<Overview> DetailOverviews = new List<Overview>();
Dictionary<string,List<TestHistory>> TestHistories = new();
private async Task OnSearch() private async Task OnSearch()
{ {
@ -155,9 +165,9 @@
private async Task GetOverviews() private async Task GetOverviews()
{ {
DisableColums.Clear(); OverviewDisableColums.Clear();
DisableColums.Add("rn"); OverviewDisableColums.Add("rn");
DisableColums.Add("stepversion"); OverviewDisableColums.Add("stepversion");
if (IsMergePartNumberOption == false) if (IsMergePartNumberOption == false)
{ {
@ -165,10 +175,10 @@
} }
else else
{ {
DisableColums.Add("stationname"); OverviewDisableColums.Add("stationname");
DisableColums.Add("host"); OverviewDisableColums.Add("host");
DisableColums.Add("section"); OverviewDisableColums.Add("section");
DisableColums.Add("testlistcntid"); OverviewDisableColums.Add("testlistcntid");
Overviews = await CPXV2LogService.GetOverviewMerged(SearchDataOverviews); Overviews = await CPXV2LogService.GetOverviewMerged(SearchDataOverviews);
} }
} }
@ -204,6 +214,29 @@
SelectedTabIndex = ListTabs.Keys.ToList().IndexOf(EnumTabs.OverviewC1Detail.ToString()); SelectedTabIndex = ListTabs.Keys.ToList().IndexOf(EnumTabs.OverviewC1Detail.ToString());
} }
private async Task OnDoubleClickRowDetailOverview(IDataModel row)
{
var historyIndex = TestHistories.Count();
string histoiresKey = $"{EnumTabs.TestHistoryC1.ToString()}({historyIndex + 1})";
if (IsMergePartNumberOption == false)
{
var getHistories = await CPXV2LogService.GetTestHistory(SearchDataOverviews, row);
TestHistories.Add(histoiresKey, getHistories);
}
else
{
var getHistories = await CPXV2LogService.GetTestHistoryMerged(SearchDataOverviews, row);
TestHistories.Add(histoiresKey, getHistories);
}
//tab control
ListTabs.Add(histoiresKey, EnumTabs.TestHistoryC1);
tabs.Reload();
SelectedTabIndex = ListTabs.Count - 1;
}
private void OnClickDetailOverviewContextMenu() private void OnClickDetailOverviewContextMenu()
{ {
// DetailOverviews = OverviewService.SearchDetailOverview(SelectedDataService.SelectedOverview); // DetailOverviews = OverviewService.SearchDetailOverview(SelectedDataService.SelectedOverview);

View File

@ -59,26 +59,28 @@ public static class ObjectExtend
return data.ToOverview(); return data.ToOverview();
} }
public static TestHistory ToTestHistory(this IEnumerable<SearchData> data) public static TestHistory ToTestHistory(this SearchData data)
{ {
return new TestHistory return new TestHistory
{ {
No = data.Last().Summary.No, No = data.Summary.No,
TestDateTime = data.Last().Summary.TestDT, TestDate = data.Summary.TestDT,
StationName = data.Last().Summary.StationName, TestDateTime = data.Summary.TestDT,
Host = data.Last().Summary.HostID, StationName = data.Summary.StationName,
Section = data.Last().Summary.Section, Host = data.Summary.HostID,
ProductID = data.Last().Summary.ProductID, Section = data.Summary.Section,
TestType = data.Last().Summary.TestType, ProductID = data.Summary.ProductID,
ProductNo = data.Last().Summary.ProdNo_C, TestType = data.Summary.TestType,
TestCode = data.Last().Summary.Testcode, ProductNo = data.Summary.ProdNo_C,
ParentNo = data.Last().Summary.ProdNo_P, TestCode = data.Summary.Testcode,
FileCode = data.Last().Summary.ProdCode, ParentNo = data.Summary.ProdNo_P,
FileVersion = data.Last().Summary.Version, FileCode = data.Summary.ProdCode,
StepVersion = data.Last().Summary.StepVersion, FileVersion = data.Summary.Version,
Duration = data.Last().Summary.Duration, StepVersion = data.Summary.StepVersion,
TestResult = data.Last().Summary.Result, Duration = data.Summary.Duration,
TestlistReqID = data.Last().Summary.TestListCntID, TestResult = data.Summary.Result,
TestListCntID = data.Summary.TestListCntID,
TestListReqID = data.Summary.TestListCntID
}; };
} }
} }

View File

@ -2,11 +2,10 @@
{ {
public class TestHistory : IDataModel public class TestHistory : IDataModel
{ {
public DateTime? TestDate { get; set; }
public string ModelName { get; set; }
public long No { get; set; } public long No { get; set; }
public DateTime TestDateTime { get; set; } public DateTime? TestDate { get; set; }
public DateTime? TestDateTime { get; set; }
public string ModelName { get; set; } //no use
public string StationName { get; set; } public string StationName { get; set; }
public string Host { get; set; } public string Host { get; set; }
public string Section { get; set; } public string Section { get; set; }
@ -20,10 +19,9 @@
public int? StepVersion { get; set; } public int? StepVersion { get; set; }
public string Duration { get; set; } public string Duration { get; set; }
public string TestResult { get; set; } public string TestResult { get; set; }
public string TestlistReqID { get; set; }
public string FirstTestTime { get; set; } public string FirstTestTime { get; set; }
public string FinalTestTime { get; set; } public string FinalTestTime { get; set; }
public string TestListCntID { get; set; } public string TestListCntID { get; set; }
public string TestListReqID { get; set; }
} }
} }

View File

@ -151,6 +151,34 @@ namespace Web.Tra.Services
return detailOverview.ToList(); return detailOverview.ToList();
} }
public async Task<List<TestHistory>> GetTestHistory(List<SearchData> request, IDataModel row)
{
var testHistory = request
.Where(x => x.Summary.TestDT.Date == row.TestDate.Value.Date &&
x.Summary.HostID == row.Host &&
x.Summary.Section == row.Section &&
x.Summary.ProdNo_C == row.ProductNo &&
x.Summary.ProdNo_P == row.ParentNo &&
x.Summary.TestListCntID == row.TestListCntID)
.Select(x=>x.ToTestHistory())
.OrderBy(x => x.No);
await Task.CompletedTask;
return testHistory.ToList();
}
public async Task<List<TestHistory>> GetTestHistoryMerged(List<SearchData> request, IDataModel row)
{
var testHistory = request
.Where(x => x.Summary.TestDT.Date == row.TestDate.Value.Date &&
x.Summary.Testcode == row.TestCode&&
x.Summary.ProdNo_C == row.ProductNo &&
x.Summary.ProdNo_P == row.ParentNo)
.Select(x => x.ToTestHistory())
.OrderBy(x => (x.TestListReqID, x.No));
await Task.CompletedTask;
return testHistory.ToList();
}
//Get DBContext //Get DBContext
private T? GetDBContext<T>(DbContextProvider provider, int dbID) where T : DbContext private T? GetDBContext<T>(DbContextProvider provider, int dbID) where T : DbContext
{ {