[성현모] Summary 추가, GridFilter 컨피그 분리

This commit is contained in:
SHM
2025-09-19 14:40:06 +09:00
parent ab9bfdfc18
commit 0ff010019d
17 changed files with 428 additions and 115 deletions

View File

@ -14,5 +14,50 @@
"UserID": "Alis",
"Password": "Kefico!@34"
}
],
"GridDisableFilter": [
{
"EnumTabs": 1,
"Filter": [
"Navigation",
"StepVersion",
"IsGlobal",
"UpdateDT",
"Enable",
"testlistfilenonavigation"
]
},
{
"EnumTabs": 11,
"Filter": [
"StationName",
"Host",
"Section",
"TestListCntID"
]
},
{
"EnumTabs": 21,
"Filter": [
"StationName",
"Host",
"Section",
"TestListCntID"
]
},
{
"EnumTabs": 30,
"Filter": [
"TestListFileName",
"TestListFileNo",
"TestListFVariantNo"
]
},
{
"EnumTabs": 1000,
"Filter": [
"TestListFileNo"
]
}
]
}

View File

@ -1,9 +1,4 @@
@using SystemX.Core.Services
@using WebClient.Library.Config
@inherits LayoutComponentBase
@inject ConfigService<WebClientConfig> configService
@inject NavigationManager NavigationManager
@inherits LayoutComponentBase
<RadzenLayout>
<RadzenHeader Style="height: 5rem; font-size: 2rem;" class="rz-px-5">

View File

@ -1,4 +1,5 @@
@typeparam TDataModel
@using WebClient.Library.Model
@typeparam TDataModel
<RadzenDataGrid class="rz-shadow-1" TItem="TDataModel" Data="@DataList" GridLines="DataGridGridLines.Both"
AllowFiltering FilterMode="FilterMode.Advanced" CellRender="@CellRender" AllowColumnResize AllowVirtualization
@ -18,10 +19,13 @@
@foreach (var col in typeof(TDataModel).GetProperties())
{
if (col.Name.ToLower().Contains("navigation") || col.Name.ToLower().Contains("stepversion") || col.Name.ToLower().Contains("isglobal")
|| col.Name.ToLower().Contains("updatedt") || col.Name.ToLower().Contains("enable"))
//disable filter
if (GlobalGridDisableFilter?.Filter?.Exists(x => x.ToLower() == col.Name.ToLower()) == true)
continue;
if (GridDisableFilter?.Filter?.Exists(x=>x.ToLower() == col.Name.ToLower()) == true)
continue;
if (col.Name.ToLower().Equals("testdate"))
{
<RadzenDataGridColumn Property="@col.Name" Title="@col.Name" Width="10rem">
@ -109,73 +113,84 @@
public bool VisibleRowNo { get; set; }
[Parameter]
public bool HostColumnMerge { get; set; }
public bool HostColumnMerge { get; set; }
[Parameter]
public EnumTabs EnumTab { get; set; }
private GridDisableFilter GlobalGridDisableFilter = new();
private GridDisableFilter GridDisableFilter = new();
private IList<TDataModel> SelectedRow;
private string SummaryTestResult = string.Empty;
private string SummaryTestTime = string.Empty;
protected override async Task OnParametersSetAsync()
{
GlobalGridDisableFilter = configService?.GetConfig()?.GridDisableFilter.Where(x => x.EnumTabs == 1)?.FirstOrDefault();
GridDisableFilter = configService?.GetConfig()?.GridDisableFilter.Where(x => x.EnumTabs == (int)EnumTab)?.FirstOrDefault();
}
private void CellRender(DataGridCellRenderEventArgs<TDataModel> args)
{
if (args.Column.Property == null)
return;
// if (args.Column.Property == null)
// return;
var cellData = args.Data as Overview;
if (cellData is null)
return;
// var cellData = args.Data as Overview;
// if (cellData is null)
// return;
if ((args.Column.Property.ToLower().Equals("testdate") || args.Column.Property.ToLower().Equals("host")) == false)
return;
// if ((args.Column.Property.ToLower().Equals("testdate") || args.Column.Property.ToLower().Equals("host")) == false)
// return;
int index = DataList.ToList().FindIndex(x => x.Equals(args.Data));
// int index = DataList.ToList().FindIndex(x => x.Equals(args.Data));
//testdate 컬럼일때 날짜 병합
if (args.Column.Property.ToLower().Equals("testdate"))
{
int rowCount = 0;
var take = DataList.Skip(index).Cast<Overview>();
foreach (var r in take)
{
if (r.TestDate.Value.Date == cellData.TestDate.Value.Date)
{
if (r.ModelName == cellData.ModelName)
{
rowCount += 1;
}
}
else
{
break;
}
}
args.Attributes.Clear();
if (rowCount > 0)
args.Attributes.Add("rowspan", rowCount);
}
// //testdate 컬럼일때 날짜 병합
// if (args.Column.Property.ToLower().Equals("testdate"))
// {
// int rowCount = 0;
// var take = DataList.Skip(index).Cast<Overview>();
// foreach (var r in take)
// {
// if (r.TestDate.Value.Date == cellData.TestDate.Value.Date)
// {
// if (r.ModelName == cellData.ModelName)
// {
// rowCount += 1;
// }
// }
// else
// {
// break;
// }
// }
// args.Attributes.Clear();
// if (rowCount > 0)
// args.Attributes.Add("rowspan", rowCount);
// }
if (args.Column.Property.ToLower().Equals("host"))
{
if (HostColumnMerge == false)
return;
// if (args.Column.Property.ToLower().Equals("host"))
// {
// if (HostColumnMerge == false)
// return;
int rowCount = 0;
var take = DataList.Skip(index).Cast<Overview>();
foreach (var r in take)
{
if (r.Host == cellData.Host)
{
rowCount += 1;
}
else
{
break;
}
}
args.Attributes.Clear();
if (rowCount > 0)
args.Attributes.Add("rowspan", rowCount);
}
// int rowCount = 0;
// var take = DataList.Skip(index).Cast<Overview>();
// foreach (var r in take)
// {
// if (r.Host == cellData.Host)
// {
// rowCount += 1;
// }
// else
// {
// break;
// }
// }
// args.Attributes.Clear();
// if (rowCount > 0)
// args.Attributes.Add("rowspan", rowCount);
// }
}
private async Task SelectRow(TDataModel data)

View File

@ -65,6 +65,22 @@
</RadzenStack>
</RadzenStack>
<!--Function Block-->
<RadzenStack Style="height:10rem; width:fit-content;" class="rz-border-right rz-pr-5" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Start">
<RadzenStack Style="font-size:1.5rem;" Orientation="Orientation.Vertical" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Center">
<RadzenStack Style="cursor: pointer;" class="" Orientation="Orientation.Vertical" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Start" @onclick="@OnSummary">
<RadzenIcon Style="font-size: 3.5rem; font-weight:400; color:var(--rz-info)" Icon="ssid_chart"></RadzenIcon>
<RadzenLabel Style="font-size: 1.5rem; cursor:pointer; color:var(--rz-info)" Text="Summary"></RadzenLabel>
</RadzenStack>
</RadzenStack>
<RadzenStack Style="font-size:1.5rem;" Orientation="Orientation.Vertical" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Center">
<RadzenStack Style="cursor: pointer;" class="" Orientation="Orientation.Vertical" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Start" @onclick="@OnExportExcel">
<RadzenIcon Style="font-size: 3.5rem; font-weight:400; color:var(--rz-success)" Icon="file_export"></RadzenIcon>
<RadzenLabel Style="font-size: 1.5rem; cursor:pointer; color:var(--rz-success)" Text="Export Excel"></RadzenLabel>
</RadzenStack>
</RadzenStack>
</RadzenStack>
<!--Option Block-->
<RadzenStack Style="height:10rem; width:fit-content;" class="rz-border-right rz-pr-5" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Start">
<RadzenStack Style="font-size:1.5rem;" Orientation="Orientation.Vertical" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Center">
@ -98,23 +114,23 @@
</RadzenStack>
<RadzenStack Style="height:calc(100vh - 29rem);">
@if (tab.Key.EnumTab == EnumTabs.OverviewC1)
@if (tab.Key.EnumTab == EnumTabs.OverviewC1 || tab.Key.EnumTab == EnumTabs.OverviewC1Merged)
{
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())"
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())" EnumTab="@tab.Key.EnumTab"
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowOverview" HostColumnMerge>
</TraGrid>
}
@if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail)
@if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail || tab.Key.EnumTab == EnumTabs.OverviewC1DetailMerged)
{
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())"
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())" EnumTab="@tab.Key.EnumTab"
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowDetailOverview" HostColumnMerge>
</TraGrid>
}
@if (tab.Key.EnumTab == EnumTabs.TestHistoryC1)
{
<TraGrid TDataModel="TestHistory" DataList="@(tab.Value.Cast<TestHistory>())"
<TraGrid TDataModel="TestHistory" DataList="@(tab.Value.Cast<TestHistory>())" EnumTab="@tab.Key.EnumTab"
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowHistory" VisibleRowNo HostColumnMerge="false">
</TraGrid>
}
@ -157,12 +173,45 @@
@if(tab.Value?.Count > 0)
{
<TraGrid TDataModel="ParseTestResult" DataList="@(tab.Value.Cast<ParseTestResult>())"
HostColumnMerge="false">
HostColumnMerge="false" EnumTab="@tab.Key.EnumTab">
</TraGrid>
}
</RadzenStack>
</RadzenStack>
}
@if (tab.Key.EnumTab == EnumTabs.TestSummaryC1)
{
<RadzenStack Style="height:inherit;" Orientation="Orientation.Horizontal">
<!--Test Info-->
<RadzenStack Style="width:35rem; font-size: 1.5rem; height: inherit;">
@{
var history = tab.Key.Parent as TestSummaryInformation;
<TitleCard HeaderText="Test Information" ContentsHeight="calc(100% - 5rem);" CardStyle="overflow:auto;">
<RadzenStack Style="padding:1rem; color: var(--rz-grid-hover-color); overflow-y:auto; align-items:flex-start;">
@foreach (var prop in history.GetType().GetProperties())
{
<RadzenStack Style="width:100%; background-color:transparent;" class="rz-border-bottom rz-p-1 rz-pb-2" Orientation="Orientation.Horizontal">
<span style="width:12rem; min-width:12rem; font-size: 1.3rem;">@prop.Name</span>
<BlockLabel Text="@prop.GetValue(history).ToString()" MaxWidth="20rem"></BlockLabel>
</RadzenStack>
}
</RadzenStack>
</TitleCard>
}
</RadzenStack>
<!--TestResult-->
<RadzenStack Style="height:inherit;">
@if (tab.Value?.Count > 0)
{
<TraGrid TDataModel="ParseTestSummary" DataList="@(tab.Value.Cast<ParseTestSummary>())"
HostColumnMerge="false" EnumTab="@tab.Key.EnumTab">
</TraGrid>
}
</RadzenStack>
</RadzenStack>
}
</RadzenStack>
</RadzenStack>
</ChildContent>
@ -215,25 +264,27 @@
{
List<Overview> overviews = new();
int tabId = 0;
if (Tabs.Count > 0)
{
tabId = Tabs.Max(x => x.Key.Id) + 1;
}
if (IsMergePartNumberOption == false)
{
overviews = await CPXV2LogService.GetOverviews(SearchDataOverviews);
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})", EnumTab = EnumTabs.OverviewC1, Parent = null },
key => overviews.Cast<IDataModel>().ToList(), (key, oldValue) => overviews.Cast<IDataModel>().ToList());
}
else
{
overviews = await CPXV2LogService.GetOverviewMerged(SearchDataOverviews);
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})", EnumTab = EnumTabs.OverviewC1Merged, Parent = null },
key => overviews.Cast<IDataModel>().ToList(), (key, oldValue) => overviews.Cast<IDataModel>().ToList());
}
int tabId = 0;
if(Tabs.Count > 0)
{
tabId = Tabs.Max(x=>x.Key.Id) + 1;
}
Tabs.AddOrUpdate(
new OrderdTab {Id = tabId, TabName = $"{EnumTabs.OverviewC1} ({tabId})" , EnumTab = EnumTabs.OverviewC1, Parent = null },
key => overviews.Cast<IDataModel>().ToList(), (key, oldValue) => overviews.Cast<IDataModel>().ToList());
SelectedTabIndex = Tabs.Count - 1;
}
@ -262,23 +313,28 @@
if (IsMergePartNumberOption == false)
{
detailOverviews = await CPXV2LogService.GetDetailOverview(SearchDataOverviews, selectRow);
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1Detail, Parent = row },
key => detailOverviews.Cast<IDataModel>().ToList(), (key, oldValue) => detailOverviews.Cast<IDataModel>().ToList());
}
else
{
detailOverviews = await CPXV2LogService.GetDetailOverviewMerged(SearchDataOverviews, selectRow);
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1DetailMerged, Parent = row },
key => detailOverviews.Cast<IDataModel>().ToList(), (key, oldValue) => detailOverviews.Cast<IDataModel>().ToList());
}
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.OverviewC1Detail} ({tabId})", EnumTab = EnumTabs.OverviewC1Detail, Parent = row },
key => detailOverviews.Cast<IDataModel>().ToList(), (key, oldValue) => detailOverviews.Cast<IDataModel>().ToList());
tabs.Reload();
SelectedTabIndex = Tabs.Count - 1;
}
}
private async Task OnDoubleClickRowDetailOverview(IOverviewModel row)
private async Task OnDoubleClickRowDetailOverview(IDataModel row)
{
List<TestHistory> histories = new();
if (IsMergePartNumberOption == false)
@ -319,12 +375,12 @@
SelectedTabIndex = Tabs.Count - 1;
}
void OnClickClose(int tabId)
private void OnClickClose(int tabId)
{
CloseTab(tabId);
}
void CloseTab(int tabId)
private void CloseTab(int tabId)
{
var removeTab = Tabs.Where(x => x.Key.Id == tabId)?.First().Key;
@ -347,7 +403,7 @@
tabs.Reload();
}
async Task OnChangeMergePartNumberOption()
private async Task OnChangeMergePartNumberOption()
{
PopupService.OpenIndicator("");
await GetOverviews();
@ -356,8 +412,52 @@
PopupService.CloseIndicator();
}
async Task OnClickDisplayTestList(TestHistory history)
private async Task OnClickDisplayTestList(TestHistory history)
{
await JS.InvokeVoidAsync("open", $"/testlist/{history.ProductNo}/{history.TestCode}/{SelectionStepVersion}", "_blank");
}
private async Task OnSummary()
{
var selectedTab = Tabs.Select(x => x.Key)?.FirstOrDefault(x=>x.Id == SelectedTabIndex);
if(selectedTab is not null)
{
//history에서만 summary 사용
if(selectedTab.EnumTab == EnumTabs.TestHistoryC1)
{
if(Tabs.TryGetValue(selectedTab, out var data) == true)
{
if(Int32.TryParse(SelectionStepVersion, out int stepVersion) == true)
{
var testHistories = data.Cast<TestHistory>().ToList();
var summary = await CPXV2LogService.GetTestSummary(testHistories, stepVersion);
var summaryInformation = testHistories.GetTestSummaryInformation();
if(summary is not null && summaryInformation is not null)
{
summaryInformation.SearchRangeStart = (DateTime)new DateTime(RequestSearch.SearchStart, TimeOnly.MinValue);
summaryInformation.SearchRangeEnd = (DateTime)new DateTime(RequestSearch.SearchEnd, TimeOnly.MaxValue);
int tabId = Tabs.Max(x => x.Key.Id) + 1;
Tabs.AddOrUpdate(
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestSummaryC1}({tabId})", EnumTab = EnumTabs.TestSummaryC1, Parent = summaryInformation },
key => summary?.ParseTestSummary?.Cast<IDataModel>()?.ToList(), (key, oldValue) => summary?.ParseTestSummary?.Cast<IDataModel>()?.ToList());
tabs.Reload();
SelectedTabIndex = Tabs.Count - 1;
}
}
}
}
else
{
LogXnet.WriteLine("Not history",LogXLabel.Warning);
}
}
}
private async Task OnExportExcel()
{
}
}

View File

@ -96,7 +96,7 @@
<RadzenStack Style="height:90vh;" class="rz-pb-3">
<TraGrid TDataModel="VRFY_TestListFileRelease" DataList="@GetTestList.TestListFile"
HostColumnMerge="false">
HostColumnMerge="false" EnumTab="EnumTabs.TestListFile">
</TraGrid>
</RadzenStack>

View File

@ -14,3 +14,9 @@
@using Radzen
@using Radzen.Blazor
@using SystemX.Core.Services
@using WebClient.Library.Config
@inject ConfigService<WebClientConfig> configService
@inject NavigationManager NavigationManager

View File

@ -105,7 +105,7 @@ public static class ObjectExtend
return testResult;
}
public static ParseTestResult ParseTestResult(this DecompressTestResult logData, TestList testList = null)
private static ParseTestResult ParseTestResult(this DecompressTestResult logData, TestList testList = null)
{
var selectData = testList.TestListFile.Where(x => x.StepID == logData.StepID)?.FirstOrDefault();
if (selectData is not null)
@ -163,4 +163,72 @@ public static class ObjectExtend
return null;
}
public static TestSummary ToTestSummary(this List<TestResult> testResults)
{
TestSummary testSummary = new TestSummary();
testSummary.ParseTestSummary = new List<ParseTestSummary>();
if(testResults?.Count > 0)
{
var parseTestResults = testResults.SelectMany(x => x.ParseTestResult??=new()).ToList();
var rowGroup = parseTestResults.GroupBy(x => x.StepNo).ToList().OrderBy(x => x.Key);
foreach(var rows in rowGroup)
{
var summary = new ParseTestSummary
{
StepNo = rows.First().StepNo,
Variant = rows.First().Variant,
Gate = rows.First().Gate,
MO = rows.First().MO,
Function = rows.First().Function,
Min = rows.First().Min,
Average = rows.First().MeasuredValue,
Max = rows.First().Max,
Dimension = rows.First().Dimension,
Total = rows.Count(),
OK = rows.Count(x => x.Result.ToLower().Equals("ok") || x.Result.ToLower().Equals("none")),
NG = rows.Count(x => !(x.Result.ToLower().Equals("ok") || x.Result.ToLower().Equals("none"))),
};
//calculate dim
if (rows.FirstOrDefault().Dimension.ToLower() == "dez" || rows.FirstOrDefault().Dimension.ToLower() == "v" ||
rows.FirstOrDefault().Dimension.ToLower() == "float" || rows.FirstOrDefault().Dimension.ToLower() == "int")
{
summary.Average = rows.Average(x => Convert.ToDouble(x.MeasuredValue)).ToString();
}
else
{
if (summary.Average == "0.0")
summary.Average = string.Empty;
}
testSummary.ParseTestSummary.Add(summary);
}
}
return testSummary;
}
public static TestSummaryInformation GetTestSummaryInformation(this List<TestHistory> testHistories)
{
return new TestSummaryInformation
{
StartTime = (DateTime)testHistories.Min(x => x.TestDateTime),
EndTime = (DateTime)testHistories.Max(x => x.TestDateTime),
StationName = testHistories.GroupBy(x=>x.StationName)?.Count() > 1 ? string.Empty : testHistories.FirstOrDefault().StationName,
HostID = testHistories.GroupBy(x => x.Host)?.Count() > 1 ? string.Empty : testHistories.FirstOrDefault().Host,
SectionID = testHistories.GroupBy(x => x.Section)?.Count() > 1 ? string.Empty : testHistories.FirstOrDefault().Section,
TestType = testHistories.FirstOrDefault().TestType,
ProductNo = testHistories.FirstOrDefault().ProductNo,
TestCode = testHistories.FirstOrDefault().TestCode,
ParentNo = testHistories.FirstOrDefault().ParentNo,
TestListFileNo = Convert.ToInt32(testHistories.FirstOrDefault().TestListFileNo),
TestListVariantNo = Convert.ToInt32(testHistories.FirstOrDefault().TestListVariantNo),
ProductionCode = testHistories.FirstOrDefault().FileCode,
FileVersion = testHistories.FirstOrDefault().FileVersion,
StepVersion = testHistories.FirstOrDefault().StepVersion,
TestRequestsID = testHistories.FirstOrDefault().TestListReqID,
};
}
}

View File

@ -3,10 +3,21 @@
public enum EnumTabs
{
None = 0,
OverviewC1 = 10,
OverviewC1Merged = 11,
OverviewC1Detail = 20,
OverviewC1DetailMerged = 21,
TestHistoryC1 = 30,
TestResultC1 = 40,
TestSummaryC1 = 50,
TestListFile = 1000,
End = 10000
}
}

View File

@ -1,6 +0,0 @@
namespace Web.Tra.Model
{
public interface IOverviewModel : IDataModel
{
}
}

View File

@ -1,6 +0,0 @@
namespace Web.Tra.Model
{
public interface ITestResultModel : IDataModel
{
}
}

View File

@ -1,6 +1,6 @@
namespace Web.Tra.Model
{
public class Overview : IOverviewModel
public class Overview : IDataModel
{
public DateTime? TestDate { get; set; }
public string StationName { get; set; }

View File

@ -1,6 +1,6 @@
namespace Web.Tra.Model
{
public class TestHistory : IOverviewModel
public class TestHistory : IDataModel
{
public long No { get; set; }
public DateTime? TestDateTime { get; set; }

View File

@ -3,7 +3,7 @@ using SystemX.Core.DB;
namespace Web.Tra.Model
{
public class TestResult : ITestResultModel
public class TestResult : IDataModel
{
//log data
public List<DecompressTestResult> DecompressTestResult { get; set; }
@ -13,7 +13,7 @@ namespace Web.Tra.Model
public TestList? TestList { get; set; }
}
public class DecompressTestResult : ITestResultModel
public class DecompressTestResult : IDataModel
{
public int StepID { get; set; }
public double MeasVal { get; set; }
@ -26,7 +26,7 @@ namespace Web.Tra.Model
public string SpentTime { get; set; }
}
public class ParseTestResult : ITestResultModel
public class ParseTestResult : IDataModel
{
public int StepNo { get; set; }
public long Position { get; set; }

View File

@ -0,0 +1,44 @@
namespace Web.Tra.Model
{
public class TestSummary : IDataModel
{
public List<ParseTestSummary> ParseTestSummary { get; set; }
}
public class ParseTestSummary : IDataModel
{
public int StepNo { get; set; }
public string Variant { get; set; }
public string Gate { get; set; }
public string MO { get; set; }
public string Function { get; set; }
public string Min { get; set; }
public string Average { get; set; }
public string Max { get; set; }
public string Dimension { get; set; }
public int Total { get; set; }
public int OK { get; set; }
public int NG { get; set; }
}
public class TestSummaryInformation : IDataModel
{
public DateTime SearchRangeStart { get; set; }
public DateTime SearchRangeEnd { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public string StationName { get; set; }
public string HostID { get; set; }
public string SectionID { 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 ProductionCode { get; set; }
public string FileVersion { get; set; }
public int StepVersion { get; set; }
public string TestRequestsID { get; set; }
}
}

View File

@ -115,7 +115,7 @@ namespace Web.Tra.Services
return group.ToList();
}
public async Task<List<Overview>> GetDetailOverview(List<SearchData> request, IOverviewModel row)
public async Task<List<Overview>> GetDetailOverview(List<SearchData> request, IDataModel row)
{
var selectRow = row as Overview;
List<Overview> detailOverview = new List<Overview>();
@ -142,7 +142,7 @@ namespace Web.Tra.Services
return detailOverview;
}
public async Task<List<Overview>> GetDetailOverviewMerged(List<SearchData> request, IOverviewModel row)
public async Task<List<Overview>> GetDetailOverviewMerged(List<SearchData> request, IDataModel row)
{
var selectRow = row as Overview;
List<Overview> detailOverview = new List<Overview>();
@ -166,7 +166,7 @@ namespace Web.Tra.Services
return detailOverview;
}
public async Task<List<TestHistory>> GetTestHistory(List<SearchData> request, IOverviewModel row)
public async Task<List<TestHistory>> GetTestHistory(List<SearchData> request, IDataModel row)
{
var selectRow = row as Overview;
List<TestHistory> testHistory = new List<TestHistory>();
@ -189,7 +189,7 @@ namespace Web.Tra.Services
return testHistory;
}
public async Task<List<TestHistory>> GetTestHistoryMerged(List<SearchData> request, IOverviewModel row)
public async Task<List<TestHistory>> GetTestHistoryMerged(List<SearchData> request, IDataModel row)
{
var selectRow = row as Overview;
List<TestHistory> testHistory = new List<TestHistory>();
@ -200,7 +200,8 @@ namespace Web.Tra.Services
.Where(x => x.Summary.TestDT.Date == selectRow.TestDate.Value.Date &&
x.Summary.Testcode == selectRow.TestCode &&
x.Summary.ProdNo_C == selectRow.ProductNo &&
x.Summary.ProdNo_P == selectRow.ParentNo)
x.Summary.ProdNo_P == selectRow.ParentNo &&
x.Summary.StepVersion == selectRow.StepVersion)
.Select(x => x.ToTestHistory())
.OrderBy(x => (x.TestListReqID, x.No))
.ToList();
@ -306,6 +307,28 @@ namespace Web.Tra.Services
return result;
}
public async Task<TestSummary> GetTestSummary(List<TestHistory> histories, int stepVersion)
{
TestSummary result = new TestSummary();
if (histories?.Count() > 0)
{
List<TestResult> getTestResults = new List<TestResult>();
//test result parse
foreach (var hist in histories)
{
getTestResults.Add(await GetTestResult(hist, stepVersion));
}
result = getTestResults.ToTestSummary();
}
await Task.CompletedTask;
return result;
}
public bool TryParseTestCode(string testCode, out int outValue)
{
bool result = false;

View File

@ -6,6 +6,7 @@ using System.Text.Json.Serialization;
using System.Threading.Tasks;
using SystemX.Core.Config;
using SystemX.Core.Config.Model;
using WebClient.Library.Model;
namespace WebClient.Library.Config
{
@ -16,5 +17,8 @@ namespace WebClient.Library.Config
[JsonPropertyName("ApplicationName")]
public string? ApplicationName { get; set; }
[JsonPropertyName("GridDisableFilter")]
public List<GridDisableFilter>? GridDisableFilter { get; set; }
}
}

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WebClient.Library.Model
{
public class GridDisableFilter
{
public int EnumTabs { get; set; }
public List<string> Filter { get; set; }
}
}