[성현모] 테스트리스트 조회 기능 추가
This commit is contained in:
@ -1,6 +1,4 @@
|
||||
@typeparam TDataModel where TDataModel : IDataModel
|
||||
|
||||
@inject ContextMenuService ContextMenuService
|
||||
@typeparam TDataModel
|
||||
|
||||
<RadzenDataGrid class="rz-shadow-1" TItem="TDataModel" Data="@DataList" GridLines="DataGridGridLines.Both"
|
||||
AllowFiltering FilterMode="FilterMode.Advanced" CellRender="@CellRender" AllowColumnResize AllowVirtualization
|
||||
@ -97,9 +95,6 @@
|
||||
[Parameter]
|
||||
public EventCallback<TDataModel> OnDoubleClickRow{ get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback OnClickContextMenu { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public bool VisibleRowNo { get; set; }
|
||||
|
||||
|
||||
@ -7,6 +7,8 @@
|
||||
@using Web.Tra.Services
|
||||
@inject CPXV2LogService CPXV2LogService
|
||||
@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">
|
||||
<!--Search Block-->
|
||||
@ -103,21 +105,21 @@
|
||||
<RadzenStack Style="height:calc(100vh - 29rem);">
|
||||
@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>
|
||||
</TraGrid>
|
||||
}
|
||||
|
||||
@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>
|
||||
</TraGrid>
|
||||
}
|
||||
|
||||
@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">
|
||||
</TraGrid>
|
||||
}
|
||||
@ -131,7 +133,7 @@
|
||||
var history = tab.Key.Parent as TestHistory;
|
||||
if(history.TestResult.ToLower().Contains("ok") == true)
|
||||
{
|
||||
<RadzenLabel Style="width:inherit; height: 5rem; min-height:5rem; background:var(--rz-success); border: solid 2px var(--rz-grid-hover-color); overflow:auto;" class="rz-shadow-1" />
|
||||
<RadzenLabel Style="width:inherit; height: 5rem; min-height:5rem; background:var(--rz-success); border: solid 2px var(--rz-grid-hover-color); overflow:auto;" class="rz-shadow-1"/>
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -149,22 +151,27 @@
|
||||
<RadzenStack Style="padding:1rem; color: var(--rz-grid-hover-color); overflow-y:auto;">
|
||||
@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">
|
||||
<span style="width:12rem;">@prop.Name</span>
|
||||
<span>@prop.GetValue(history)</span>
|
||||
<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>
|
||||
<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>
|
||||
</RadzenCard>
|
||||
<!--display TestList-->
|
||||
<RadzenButton ButtonStyle="ButtonStyle.Warning" Text="Display TestList" Click="@(() => OnClickDisplayTestList(history))"></RadzenButton>
|
||||
}
|
||||
</RadzenStack>
|
||||
|
||||
<!--TestResult-->
|
||||
<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">
|
||||
</TraGrid>
|
||||
}
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
}
|
||||
@ -318,35 +325,12 @@
|
||||
int tabId = Tabs.Max(x => x.Key.Id) + 1;
|
||||
Tabs.AddOrUpdate(
|
||||
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();
|
||||
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)
|
||||
{
|
||||
CloseTab(tabId);
|
||||
@ -372,26 +356,20 @@
|
||||
{
|
||||
SelectedTabIndex = Tabs.Count - 1;
|
||||
}
|
||||
|
||||
|
||||
tabs.Reload();
|
||||
}
|
||||
|
||||
async Task OnChangeMergePartNumberOption()
|
||||
{
|
||||
PopupService.OpenIndicator("");
|
||||
|
||||
// foreach(var tab in Tabs)
|
||||
// {
|
||||
// if (tab.Value == EnumTabs.OverviewC1)
|
||||
// continue;
|
||||
|
||||
// CloseTab(tab.Key.ToString());
|
||||
// }
|
||||
|
||||
await GetOverviews();
|
||||
|
||||
await Task.Delay(300);
|
||||
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),
|
||||
Duration = data.Summary.Duration,
|
||||
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 TestResult { 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.JSInterop;
|
||||
using Radzen;
|
||||
using SystemX.Core.Config.Model;
|
||||
using SystemX.Core.DB;
|
||||
|
||||
@ -210,15 +210,12 @@ namespace Web.Tra.Services
|
||||
return testHistory.ToList();
|
||||
}
|
||||
|
||||
public async Task<TestResult> GetTestResult(IDataModel row, int stepVersion)
|
||||
{
|
||||
TestResult result = new TestResult();
|
||||
|
||||
var selectRow = row as TestHistory;
|
||||
if(selectRow is not null)
|
||||
public async Task<TestList> GetTestList(string productNo, string testCode, int stepVersion)
|
||||
{
|
||||
TestList testList = new TestList();
|
||||
|
||||
if (TryParseTestCode(testCode, out var outTestCode) == true)
|
||||
{
|
||||
//cpxv2
|
||||
using (var scope = _scopeFactory.CreateScope())
|
||||
{
|
||||
@ -227,9 +224,7 @@ namespace Web.Tra.Services
|
||||
{
|
||||
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 == selectRow.ProductNo && x.TestCodeNo == testCode)?.FirstOrDefault();
|
||||
var prodRelease = context.PROD_Releases.Where(x => x.ProdNo_C == productNo && x.TestCodeNo == outTestCode)?.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 statTestCode = context.STAT_TestCodes.Where(x => x.No == prodRelease.TestCodeNo)?.FirstOrDefault();
|
||||
@ -241,7 +236,7 @@ namespace Web.Tra.Services
|
||||
{
|
||||
stepVersion = maxStepVersion.LatestStepVersion;
|
||||
}
|
||||
else if(stepVersion < 0)
|
||||
else if (stepVersion < 0)
|
||||
{
|
||||
stepVersion = 0;
|
||||
}
|
||||
@ -249,9 +244,9 @@ namespace Web.Tra.Services
|
||||
var findTestList = context.VRFY_TestListFileReleases
|
||||
.Where(x => x.TestListFileNo == prodVariant.TestListFileNo && x.StepVersion <= stepVersion)
|
||||
.OrderBy(x => x.StepID)
|
||||
.ThenByDescending(x=>x.StepVersion)
|
||||
.ThenByDescending(x => x.StepVersion)
|
||||
.AsEnumerable()
|
||||
.DistinctBy(x=>x.StepID)
|
||||
.DistinctBy(x => x.StepID)
|
||||
.ToList();
|
||||
|
||||
testList.ProdRelease = prodRelease;
|
||||
@ -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
|
||||
if(testListInfo?.TestListFile is not null)
|
||||
{
|
||||
if (Int32.TryParse(selectRow.TestDateTime?.Year.ToString(), out var year) == true)
|
||||
{
|
||||
using (var scope = _scopeFactory.CreateScope())
|
||||
@ -275,7 +290,9 @@ namespace Web.Tra.Services
|
||||
if (context is not null)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
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
|
||||
private T? GetDBContext<T>(DbContextProvider provider, int dbID) where T : DbContext
|
||||
{
|
||||
|
||||
@ -102,6 +102,6 @@ h1:focus {
|
||||
}
|
||||
|
||||
/*common*/
|
||||
span{
|
||||
span {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
Reference in New Issue
Block a user