diff --git a/Projects/WebClient/Web.Tra/.config/dotnet-tools.json b/Projects/WebClient/Web.Tra/.config/dotnet-tools.json new file mode 100644 index 0000000..837b189 --- /dev/null +++ b/Projects/WebClient/Web.Tra/.config/dotnet-tools.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "9.0.8", + "commands": [ + "dotnet-ef" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor index 7cbbc1f..c485b06 100644 --- a/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor +++ b/Projects/WebClient/Web.Tra/Components/Module/TraGrid.razor @@ -3,7 +3,7 @@ @inject ContextMenuService ContextMenuService @@ -12,7 +12,9 @@ { } @@ -130,6 +132,9 @@ if (args.Column.Property.ToLower().Equals("host")) { + if (HostColumnMerge == false) + return; + int rowCount = 0; var take = DataList.Skip(index).Take(((index / PageSize) + 1) * PageSize - index); foreach (var r in take) diff --git a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor index eab114d..77e08cd 100644 --- a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor +++ b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor @@ -89,16 +89,24 @@ @if (tab.Key == EnumTabs.OverviewC1.ToString()) { + OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@OverviewDisableColums" + OnDoubleClickRow="@OnDoubleClickRowOverview" HostColumnMerge> } @if (tab.Key == EnumTabs.OverviewC1Detail.ToString()) { + OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize" DisableColums="@OverviewDisableColums" + OnDoubleClickRow="@OnDoubleClickRowDetailOverview" HostColumnMerge> + + } + + @if (tab.Key.Contains(EnumTabs.TestHistoryC1.ToString())) + { + } @@ -121,7 +129,8 @@ //options private bool IsMergePartNumberOption = false; private int PageSize = 30; - private List DisableColums = new List(); + private List OverviewDisableColums = new List(); + private List HistoryDisableColums = new List { "testdate", "modelname", "firsttesttime", "finaltesttime", "testlistcntid" }; //tab RadzenTabs tabs; @@ -132,6 +141,7 @@ List SearchDataOverviews = new List(); List Overviews = new List(); List DetailOverviews = new List(); + Dictionary> TestHistories = new(); private async Task OnSearch() { @@ -155,9 +165,9 @@ private async Task GetOverviews() { - DisableColums.Clear(); - DisableColums.Add("rn"); - DisableColums.Add("stepversion"); + OverviewDisableColums.Clear(); + OverviewDisableColums.Add("rn"); + OverviewDisableColums.Add("stepversion"); if (IsMergePartNumberOption == false) { @@ -165,10 +175,10 @@ } else { - DisableColums.Add("stationname"); - DisableColums.Add("host"); - DisableColums.Add("section"); - DisableColums.Add("testlistcntid"); + OverviewDisableColums.Add("stationname"); + OverviewDisableColums.Add("host"); + OverviewDisableColums.Add("section"); + OverviewDisableColums.Add("testlistcntid"); Overviews = await CPXV2LogService.GetOverviewMerged(SearchDataOverviews); } } @@ -204,6 +214,29 @@ 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() { // DetailOverviews = OverviewService.SearchDetailOverview(SelectedDataService.SelectedOverview); diff --git a/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs b/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs index 3b91ea5..5c65df0 100644 --- a/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs +++ b/Projects/WebClient/Web.Tra/Extended/ObjectExtended.cs @@ -59,26 +59,28 @@ public static class ObjectExtend return data.ToOverview(); } - public static TestHistory ToTestHistory(this IEnumerable data) + public static TestHistory ToTestHistory(this SearchData data) { return new TestHistory { - No = data.Last().Summary.No, - TestDateTime = data.Last().Summary.TestDT, - StationName = data.Last().Summary.StationName, - Host = data.Last().Summary.HostID, - Section = data.Last().Summary.Section, - ProductID = data.Last().Summary.ProductID, - TestType = data.Last().Summary.TestType, - ProductNo = data.Last().Summary.ProdNo_C, - TestCode = data.Last().Summary.Testcode, - ParentNo = data.Last().Summary.ProdNo_P, - FileCode = data.Last().Summary.ProdCode, - FileVersion = data.Last().Summary.Version, - StepVersion = data.Last().Summary.StepVersion, - Duration = data.Last().Summary.Duration, - TestResult = data.Last().Summary.Result, - TestlistReqID = data.Last().Summary.TestListCntID, + No = data.Summary.No, + TestDate = data.Summary.TestDT, + TestDateTime = data.Summary.TestDT, + StationName = data.Summary.StationName, + Host = data.Summary.HostID, + Section = data.Summary.Section, + ProductID = data.Summary.ProductID, + TestType = data.Summary.TestType, + ProductNo = data.Summary.ProdNo_C, + TestCode = data.Summary.Testcode, + ParentNo = data.Summary.ProdNo_P, + FileCode = data.Summary.ProdCode, + FileVersion = data.Summary.Version, + StepVersion = data.Summary.StepVersion, + Duration = data.Summary.Duration, + TestResult = data.Summary.Result, + TestListCntID = data.Summary.TestListCntID, + TestListReqID = data.Summary.TestListCntID }; } } \ No newline at end of file diff --git a/Projects/WebClient/Web.Tra/Model/TestHistory.cs b/Projects/WebClient/Web.Tra/Model/TestHistory.cs index d4213c1..f35e1c3 100644 --- a/Projects/WebClient/Web.Tra/Model/TestHistory.cs +++ b/Projects/WebClient/Web.Tra/Model/TestHistory.cs @@ -2,13 +2,12 @@ { public class TestHistory : IDataModel { - public DateTime? TestDate { get; set; } - public string ModelName { 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 Host { get; set; } + public string Host { get; set; } public string Section { get; set; } public string ProductID { get; set; } public string TestType { get; set; } @@ -19,11 +18,10 @@ public string FileVersion { get; set; } public int? StepVersion { get; set; } public string Duration { get; set; } - public string TestResult { get; set; } - public string TestlistReqID { get; set; } - + public string TestResult { get; set; } public string FirstTestTime { get; set; } public string FinalTestTime { get; set; } public string TestListCntID { get; set; } + public string TestListReqID { get; set; } } } diff --git a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs index a2e6b8e..c3b207c 100644 --- a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs +++ b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs @@ -151,6 +151,34 @@ namespace Web.Tra.Services return detailOverview.ToList(); } + public async Task> GetTestHistory(List 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> GetTestHistoryMerged(List 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 private T? GetDBContext(DbContextProvider provider, int dbID) where T : DbContext {