[성현모] 테스트리스트 조회 기능 추가
This commit is contained in:
@ -1,6 +1,4 @@
|
|||||||
@typeparam TDataModel where TDataModel : IDataModel
|
@typeparam TDataModel
|
||||||
|
|
||||||
@inject ContextMenuService ContextMenuService
|
|
||||||
|
|
||||||
<RadzenDataGrid class="rz-shadow-1" TItem="TDataModel" Data="@DataList" GridLines="DataGridGridLines.Both"
|
<RadzenDataGrid class="rz-shadow-1" TItem="TDataModel" Data="@DataList" GridLines="DataGridGridLines.Both"
|
||||||
AllowFiltering FilterMode="FilterMode.Advanced" CellRender="@CellRender" AllowColumnResize AllowVirtualization
|
AllowFiltering FilterMode="FilterMode.Advanced" CellRender="@CellRender" AllowColumnResize AllowVirtualization
|
||||||
@ -97,9 +95,6 @@
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public EventCallback<TDataModel> OnDoubleClickRow{ get; set; }
|
public EventCallback<TDataModel> OnDoubleClickRow{ get; set; }
|
||||||
|
|
||||||
[Parameter]
|
|
||||||
public EventCallback OnClickContextMenu { get; set; }
|
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public bool VisibleRowNo { get; set; }
|
public bool VisibleRowNo { get; set; }
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,8 @@
|
|||||||
@using Web.Tra.Services
|
@using Web.Tra.Services
|
||||||
@inject CPXV2LogService CPXV2LogService
|
@inject CPXV2LogService CPXV2LogService
|
||||||
@inject PopupService PopupService
|
@inject PopupService PopupService
|
||||||
|
@inject NavigationManager Navigation
|
||||||
|
@inject IJSRuntime JS
|
||||||
|
|
||||||
<RadzenStack Style="width:100%; background-color:var(--rz-primary-lighter);" class="rz-border-bottom rz-p-3" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Start">
|
<RadzenStack Style="width:100%; background-color:var(--rz-primary-lighter);" class="rz-border-bottom rz-p-3" Orientation="Orientation.Horizontal" AlignItems="AlignItems.Start" JustifyContent="JustifyContent.Start">
|
||||||
<!--Search Block-->
|
<!--Search Block-->
|
||||||
@ -103,21 +105,21 @@
|
|||||||
<RadzenStack Style="height:calc(100vh - 29rem);">
|
<RadzenStack Style="height:calc(100vh - 29rem);">
|
||||||
@if (tab.Key.EnumTab == EnumTabs.OverviewC1)
|
@if (tab.Key.EnumTab == EnumTabs.OverviewC1)
|
||||||
{
|
{
|
||||||
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
|
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())"
|
||||||
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowOverview" HostColumnMerge>
|
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowOverview" HostColumnMerge>
|
||||||
</TraGrid>
|
</TraGrid>
|
||||||
}
|
}
|
||||||
|
|
||||||
@if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail)
|
@if (tab.Key.EnumTab == EnumTabs.OverviewC1Detail)
|
||||||
{
|
{
|
||||||
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
|
<TraGrid TDataModel="Overview" DataList="@(tab.Value.Cast<Overview>())"
|
||||||
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowDetailOverview" HostColumnMerge>
|
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowDetailOverview" HostColumnMerge>
|
||||||
</TraGrid>
|
</TraGrid>
|
||||||
}
|
}
|
||||||
|
|
||||||
@if (tab.Key.EnumTab == EnumTabs.TestHistoryC1)
|
@if (tab.Key.EnumTab == EnumTabs.TestHistoryC1)
|
||||||
{
|
{
|
||||||
<TraGrid TDataModel="TestHistory" DataList="@(tab.Value.Cast<TestHistory>())" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
|
<TraGrid TDataModel="TestHistory" DataList="@(tab.Value.Cast<TestHistory>())"
|
||||||
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowHistory" VisibleRowNo HostColumnMerge="false">
|
OnSelectRow="@OnSelectRowOverview" OnDoubleClickRow="@OnDoubleClickRowHistory" VisibleRowNo HostColumnMerge="false">
|
||||||
</TraGrid>
|
</TraGrid>
|
||||||
}
|
}
|
||||||
@ -149,22 +151,27 @@
|
|||||||
<RadzenStack Style="padding:1rem; color: var(--rz-grid-hover-color); overflow-y:auto;">
|
<RadzenStack Style="padding:1rem; color: var(--rz-grid-hover-color); overflow-y:auto;">
|
||||||
@foreach (var prop in history.GetType().GetProperties())
|
@foreach (var prop in history.GetType().GetProperties())
|
||||||
{
|
{
|
||||||
<RadzenStack Style="width:31rem; background-color:transparent;" class="rz-border-bottom rz-p-1 rz-pb-2" Orientation="Orientation.Horizontal">
|
<RadzenStack Style="width:100%; background-color:transparent;" class="rz-border-bottom rz-p-1 rz-pb-2" Orientation="Orientation.Horizontal">
|
||||||
<span style="width:12rem;">@prop.Name</span>
|
<span style="width:12rem; min-width:12rem; font-size: 1.3rem;">@prop.Name</span>
|
||||||
<span>@prop.GetValue(history)</span>
|
<span style="font-size:1.3rem; width:20rem; max-width:20rem; display:inline-block;white-space:normal;word-wrap:break-word;">@prop.GetValue(history)</span>
|
||||||
</RadzenStack>
|
</RadzenStack>
|
||||||
}
|
}
|
||||||
</RadzenStack>
|
</RadzenStack>
|
||||||
</RadzenStack>
|
</RadzenStack>
|
||||||
</RadzenCard>
|
</RadzenCard>
|
||||||
|
<!--display TestList-->
|
||||||
|
<RadzenButton ButtonStyle="ButtonStyle.Warning" Text="Display TestList" Click="@(() => OnClickDisplayTestList(history))"></RadzenButton>
|
||||||
}
|
}
|
||||||
</RadzenStack>
|
</RadzenStack>
|
||||||
|
|
||||||
<!--TestResult-->
|
<!--TestResult-->
|
||||||
<RadzenStack Style="height:inherit;">
|
<RadzenStack Style="height:inherit;">
|
||||||
<TraGrid TDataModel="ParseTestResult" DataList="@(tab.Value.Cast<ParseTestResult>())" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
|
@if(tab.Value?.Count > 0)
|
||||||
|
{
|
||||||
|
<TraGrid TDataModel="ParseTestResult" DataList="@(tab.Value.Cast<ParseTestResult>())"
|
||||||
HostColumnMerge="false">
|
HostColumnMerge="false">
|
||||||
</TraGrid>
|
</TraGrid>
|
||||||
|
}
|
||||||
</RadzenStack>
|
</RadzenStack>
|
||||||
</RadzenStack>
|
</RadzenStack>
|
||||||
}
|
}
|
||||||
@ -318,35 +325,12 @@
|
|||||||
int tabId = Tabs.Max(x => x.Key.Id) + 1;
|
int tabId = Tabs.Max(x => x.Key.Id) + 1;
|
||||||
Tabs.AddOrUpdate(
|
Tabs.AddOrUpdate(
|
||||||
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestResultC1}({tabId})", EnumTab = EnumTabs.TestResultC1, Parent = row },
|
new OrderdTab { Id = tabId, TabName = $"{EnumTabs.TestResultC1}({tabId})", EnumTab = EnumTabs.TestResultC1, Parent = row },
|
||||||
key => s.ParseTestResult.Cast<IDataModel>().ToList(), (key, oldValue) => s.ParseTestResult.Cast<IDataModel>().ToList());
|
key => s?.ParseTestResult?.Cast<IDataModel>()?.ToList(), (key, oldValue) => s?.ParseTestResult?.Cast<IDataModel>()?.ToList());
|
||||||
|
|
||||||
tabs.Reload();
|
tabs.Reload();
|
||||||
SelectedTabIndex = Tabs.Count - 1;
|
SelectedTabIndex = Tabs.Count - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnClickDetailOverviewContextMenu()
|
|
||||||
{
|
|
||||||
// DetailOverviews = OverviewService.SearchDetailOverview(SelectedDataService.SelectedOverview);
|
|
||||||
|
|
||||||
// if (ListTabs.ContainsKey(EnumTabs.OverviewC1Detail.ToString()) == false)
|
|
||||||
// ListTabs.Add($"{EnumTabs.OverviewC1Detail.ToString()}", EnumTabs.OverviewC1Detail);
|
|
||||||
// tabs.Reload();
|
|
||||||
|
|
||||||
// SelectedTabIndex = ListTabs.Keys.ToList().IndexOf(EnumTabs.OverviewC1Detail.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnClickHistoryContextMenu()
|
|
||||||
{
|
|
||||||
// TestHistories = OverviewService.SearchTestHistory(SelectedDataService.SelectedOverview);
|
|
||||||
|
|
||||||
// int index = ListTabs.Count(x => x.Key.Contains(EnumTabs.TestHistoryC1.ToString())) + 1;
|
|
||||||
|
|
||||||
// ListTabs.Add($"{EnumTabs.TestHistoryC1}({index})", EnumTabs.TestHistoryC1);
|
|
||||||
// tabs.Reload();
|
|
||||||
|
|
||||||
// SelectedTabIndex = ListTabs.Keys.ToList().IndexOf($"{EnumTabs.TestHistoryC1}({index})");
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnClickClose(int tabId)
|
void OnClickClose(int tabId)
|
||||||
{
|
{
|
||||||
CloseTab(tabId);
|
CloseTab(tabId);
|
||||||
@ -372,26 +356,20 @@
|
|||||||
{
|
{
|
||||||
SelectedTabIndex = Tabs.Count - 1;
|
SelectedTabIndex = Tabs.Count - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tabs.Reload();
|
tabs.Reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
async Task OnChangeMergePartNumberOption()
|
async Task OnChangeMergePartNumberOption()
|
||||||
{
|
{
|
||||||
PopupService.OpenIndicator("");
|
PopupService.OpenIndicator("");
|
||||||
|
|
||||||
// foreach(var tab in Tabs)
|
|
||||||
// {
|
|
||||||
// if (tab.Value == EnumTabs.OverviewC1)
|
|
||||||
// continue;
|
|
||||||
|
|
||||||
// CloseTab(tab.Key.ToString());
|
|
||||||
// }
|
|
||||||
|
|
||||||
await GetOverviews();
|
await GetOverviews();
|
||||||
|
|
||||||
await Task.Delay(300);
|
await Task.Delay(300);
|
||||||
PopupService.CloseIndicator();
|
PopupService.CloseIndicator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async Task OnClickDisplayTestList(TestHistory history)
|
||||||
|
{
|
||||||
|
await JS.InvokeVoidAsync("open", $"/testlist/{history.ProductNo}/{history.TestCode}/{SelectionStepVersion}", "_blank");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
@using SystemX.Core.DB
|
||||||
|
@using Web.Tra.Services
|
||||||
|
|
||||||
|
@page "/testlist/{ProductNo}/{TestCode}/{StepVersion}"
|
||||||
|
@inject CPXV2LogService CPXV2LogService
|
||||||
|
|
||||||
|
<RadzenStack Style="height:80vh;">
|
||||||
|
<TraGrid TDataModel="VRFY_TestListFileRelease" DataList="@GetTestList.TestListFile"
|
||||||
|
HostColumnMerge="false">
|
||||||
|
</TraGrid>
|
||||||
|
|
||||||
|
</RadzenStack>
|
||||||
|
@code {
|
||||||
|
[Parameter]
|
||||||
|
public string ProductNo { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public string TestCode { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public string StepVersion { get; set; }
|
||||||
|
|
||||||
|
private TestList GetTestList = new TestList();
|
||||||
|
|
||||||
|
protected override async Task OnParametersSetAsync()
|
||||||
|
{
|
||||||
|
GetTestList = await CPXV2LogService?.GetTestList(ProductNo, TestCode, Convert.ToInt32(StepVersion));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -79,7 +79,11 @@ public static class ObjectExtend
|
|||||||
StepVersion = Convert.ToInt32(data.Summary.StepVersion),
|
StepVersion = Convert.ToInt32(data.Summary.StepVersion),
|
||||||
Duration = data.Summary.Duration,
|
Duration = data.Summary.Duration,
|
||||||
TestResult = data.Summary.Result,
|
TestResult = data.Summary.Result,
|
||||||
TestListReqID = data.Summary.TestListCntID
|
TestListReqID = data.Summary.TestListCntID,
|
||||||
|
|
||||||
|
TestListFileName = data.Summary.TestListFileName,
|
||||||
|
TestListFileNo = data.Summary.TestListFileNo.ToString(),
|
||||||
|
TestListVariantNo = data.Summary.TestListVariantNo.ToString()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -18,5 +18,9 @@
|
|||||||
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 TestListReqID { get; set; }
|
||||||
|
|
||||||
|
public string TestListFileName { get; set; }
|
||||||
|
public string TestListFileNo { get; set; }
|
||||||
|
public string TestListVariantNo { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Storage;
|
using Microsoft.EntityFrameworkCore.Storage;
|
||||||
|
using Microsoft.JSInterop;
|
||||||
using Radzen;
|
using Radzen;
|
||||||
using SystemX.Core.Config.Model;
|
using SystemX.Core.Config.Model;
|
||||||
using SystemX.Core.DB;
|
using SystemX.Core.DB;
|
||||||
|
|||||||
@ -210,15 +210,12 @@ namespace Web.Tra.Services
|
|||||||
return testHistory.ToList();
|
return testHistory.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<TestResult> GetTestResult(IDataModel row, int stepVersion)
|
public async Task<TestList> GetTestList(string productNo, string testCode, int stepVersion)
|
||||||
{
|
|
||||||
TestResult result = new TestResult();
|
|
||||||
|
|
||||||
var selectRow = row as TestHistory;
|
|
||||||
if(selectRow is not null)
|
|
||||||
{
|
{
|
||||||
TestList testList = new TestList();
|
TestList testList = new TestList();
|
||||||
|
|
||||||
|
if (TryParseTestCode(testCode, out var outTestCode) == true)
|
||||||
|
{
|
||||||
//cpxv2
|
//cpxv2
|
||||||
using (var scope = _scopeFactory.CreateScope())
|
using (var scope = _scopeFactory.CreateScope())
|
||||||
{
|
{
|
||||||
@ -227,9 +224,7 @@ namespace Web.Tra.Services
|
|||||||
{
|
{
|
||||||
if (context is not null)
|
if (context is not null)
|
||||||
{
|
{
|
||||||
int testCode = (int)context.STAT_TestCodes.Where(x => x.TestCode == selectRow.TestCode)?.First()?.No;
|
var prodRelease = context.PROD_Releases.Where(x => x.ProdNo_C == productNo && x.TestCodeNo == outTestCode)?.FirstOrDefault();
|
||||||
|
|
||||||
var prodRelease = context.PROD_Releases.Where(x => x.ProdNo_C == selectRow.ProductNo && x.TestCodeNo == testCode)?.FirstOrDefault();
|
|
||||||
var prodVariant = context.PROD_Variants.Where(x => x.No == prodRelease.VariantNo)?.FirstOrDefault();
|
var prodVariant = context.PROD_Variants.Where(x => x.No == prodRelease.VariantNo)?.FirstOrDefault();
|
||||||
var prodGroup = context.PROD_Groups.Where(x => x.No == prodVariant.GroupNo)?.FirstOrDefault();
|
var prodGroup = context.PROD_Groups.Where(x => x.No == prodVariant.GroupNo)?.FirstOrDefault();
|
||||||
var statTestCode = context.STAT_TestCodes.Where(x => x.No == prodRelease.TestCodeNo)?.FirstOrDefault();
|
var statTestCode = context.STAT_TestCodes.Where(x => x.No == prodRelease.TestCodeNo)?.FirstOrDefault();
|
||||||
@ -263,8 +258,28 @@ namespace Web.Tra.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return testList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<TestResult> GetTestResult(IDataModel row, int stepVersion)
|
||||||
|
{
|
||||||
|
TestResult result = new TestResult();
|
||||||
|
|
||||||
|
var selectRow = row as TestHistory;
|
||||||
|
if(selectRow is not null)
|
||||||
|
{
|
||||||
|
TestList testList = new TestList();
|
||||||
|
|
||||||
|
//if (TryParseTestCode(selectRow.TestCode, out var testCode) == true)
|
||||||
|
{
|
||||||
|
//testlist info
|
||||||
|
var testListInfo = await GetTestList(selectRow.ProductNo, selectRow.TestCode, stepVersion);
|
||||||
|
|
||||||
//log
|
//log
|
||||||
|
if(testListInfo?.TestListFile is not null)
|
||||||
|
{
|
||||||
if (Int32.TryParse(selectRow.TestDateTime?.Year.ToString(), out var year) == true)
|
if (Int32.TryParse(selectRow.TestDateTime?.Year.ToString(), out var year) == true)
|
||||||
{
|
{
|
||||||
using (var scope = _scopeFactory.CreateScope())
|
using (var scope = _scopeFactory.CreateScope())
|
||||||
@ -275,7 +290,9 @@ namespace Web.Tra.Services
|
|||||||
if (context is not null)
|
if (context is not null)
|
||||||
{
|
{
|
||||||
var testResult = context.HIST_TestResults.Where(x => x.No == selectRow.No)?.First();
|
var testResult = context.HIST_TestResults.Where(x => x.No == selectRow.No)?.First();
|
||||||
result = testResult.ToTestResult(testList);
|
result = testResult.ToTestResult(testListInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -286,6 +303,32 @@ namespace Web.Tra.Services
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool TryParseTestCode(string testCode, out int outValue)
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
outValue = -1;
|
||||||
|
|
||||||
|
//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 selectTestCode = context.STAT_TestCodes.Where(x => x.TestCode == testCode)?.FirstOrDefault();
|
||||||
|
if(selectTestCode is not null)
|
||||||
|
{
|
||||||
|
outValue = selectTestCode.No;
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//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
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user