[성현모] CPXV2 Init
This commit is contained in:
21
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMCommon.cs
Normal file
21
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMCommon.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public static class DMCommon
|
||||
{
|
||||
public static string SummaryHistTable = "HIST_TesterSummary";
|
||||
public static string SummaryLogTable = "HIST_LogSummary";
|
||||
|
||||
public static int nDefaultScanTime = 1800;
|
||||
public static int nFullScanTime = 7200;
|
||||
}
|
||||
}
|
||||
387
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMDetailOverview.cs
Normal file
387
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMDetailOverview.cs
Normal file
@ -0,0 +1,387 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.ALIS.Interface;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
using static SystemX.Product.CP.TRA.Commons;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public class DMDetailOverview
|
||||
{
|
||||
public enum eCommand
|
||||
{
|
||||
PowerON,
|
||||
PowerOFF,
|
||||
QUERY
|
||||
}
|
||||
|
||||
public enum eColList
|
||||
{
|
||||
TestDate,
|
||||
StationName,
|
||||
Host,
|
||||
Section,
|
||||
Start,
|
||||
Final,
|
||||
ProductNo,
|
||||
TestType,
|
||||
ParentNo,
|
||||
ProductID,
|
||||
TestListFileNo,
|
||||
TestListVariantNo,
|
||||
TestCode,
|
||||
FileVersion,
|
||||
FileCode,
|
||||
StepVersion,
|
||||
FirstTestTime,
|
||||
FinalTestTime,
|
||||
Total,
|
||||
OK,
|
||||
NG, //NOK,
|
||||
TestListCntID
|
||||
}
|
||||
|
||||
public enum eColListHide
|
||||
{
|
||||
TestListCntID,
|
||||
RN
|
||||
}
|
||||
|
||||
private SqlConnection DBConn { get; set; }
|
||||
|
||||
private SqlConnection ShortTermDBConn { get; set; }
|
||||
|
||||
private SqlConnection LongTermDBConn { get; set; }
|
||||
|
||||
private SqlCommand SQLCmd { get; set; }
|
||||
|
||||
private SelectedDataCollection SelectedOverViewItemData;
|
||||
|
||||
public string strDetailOverviewUseQuery;
|
||||
|
||||
public DataTable dtRaw;
|
||||
|
||||
public DataTable dtSubRaw;
|
||||
|
||||
eOverviewModelNameInfo GetSelectInfo;
|
||||
|
||||
public DMDetailOverview(eSelectDataView SelectView, eOverviewModelNameInfo SelectInfo, IDataBaseController getDBController)
|
||||
{
|
||||
GetSelectInfo = SelectInfo;
|
||||
|
||||
DBConn = getDBController.GetMainConn();
|
||||
|
||||
if (SelectView == eSelectDataView.DataDocumentViewC1)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn1();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn1();
|
||||
}
|
||||
else if (SelectView == eSelectDataView.DataDocumentViewC2)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn2();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn2();
|
||||
}
|
||||
|
||||
strDetailOverviewUseQuery = string.Empty;
|
||||
}
|
||||
|
||||
public DataTable GetDataView(SelectedDataCollection data, OverviewSearchOption inputOption)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
|
||||
SelectedOverViewItemData = data;
|
||||
|
||||
string strGetUseQuery = string.Empty;
|
||||
|
||||
dtRaw = GetRawResult(inputOption, out strGetUseQuery);
|
||||
|
||||
if (inputOption.DisplayByStation == false)
|
||||
dtSubRaw = GetSubRawResult();
|
||||
else
|
||||
dtSubRaw = null;
|
||||
|
||||
strDetailOverviewUseQuery = strGetUseQuery;
|
||||
|
||||
return dtRaw;
|
||||
}
|
||||
|
||||
DataTable GetRawResult(OverviewSearchOption inputOption, out string strGetSendQuery)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - SelectedOverViewItemData.SearchRangeStart.Year) + (dtNow.Month - SelectedOverViewItemData.SearchRangeStart.Month);
|
||||
bool bScanLongTermUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
strGetSendQuery = string.Empty;
|
||||
|
||||
strQuery += $"SELECT * FROM (";
|
||||
strQuery += $"SELECT ";
|
||||
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE) AS {eColList.TestDate.ToString()},";
|
||||
|
||||
if (inputOption.DisplayByStation)
|
||||
{
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[StationName] AS {eColList.StationName.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[HostID] AS {eColList.Host.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Section] AS {eColList.Section.ToString()},";
|
||||
}
|
||||
//
|
||||
strQuery += $"Y.ModelName,";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestType] AS {eColList.TestType.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C] AS {eColList.ProductNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode] AS {eColList.TestCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P] AS {eColList.ParentNo.ToString()},";
|
||||
|
||||
if (SelectedOverViewItemData.ProductID.Length > 0)
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProductID] as {eColList.ProductID.ToString()},";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo] AS {eColList.TestListFileNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo] AS {eColList.TestListVariantNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode] AS {eColList.FileCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Version] AS {eColList.FileVersion.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion] AS {eColList.StepVersion.ToString()},";
|
||||
strQuery += $"CONVERT(CHAR(8), MIN({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FirstTestTime.ToString()},";
|
||||
strQuery += $"CONVERT(CHAR(8), MAX({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FinalTestTime.ToString()},";
|
||||
strQuery += $"COUNT({DMCommon.SummaryLogTable}.[Result]) AS {eColList.Total.ToString()},";
|
||||
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] = 'OK' THEN 1 END) AS {eColList.OK.ToString()},";
|
||||
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] != 'OK' THEN 1 END) AS {eColList.NG.ToString()},";
|
||||
|
||||
if (inputOption.DisplayByStation)
|
||||
{
|
||||
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[ProdNo_P] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID] ";
|
||||
}
|
||||
else
|
||||
{
|
||||
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[ProdNo_P] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN ";
|
||||
//strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[Testcode] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN ";
|
||||
}
|
||||
|
||||
strQuery += $"FROM {DMCommon.SummaryLogTable} ";
|
||||
strQuery += $"WITH(NOLOCK) ";
|
||||
|
||||
switch (GetSelectInfo)
|
||||
{
|
||||
case eOverviewModelNameInfo.L:
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
case eOverviewModelNameInfo.P1:
|
||||
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
case eOverviewModelNameInfo.P2:
|
||||
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
}
|
||||
/*
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = CONVERT(NVARCHAR, {DMCommon.SummaryLogTable}.[TestListVariantNo]) ";
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
*/
|
||||
|
||||
strQuery += $"WHERE TestDT >= '{SelectedOverViewItemData.SearchRangeStart.ToString("yyyy-MM-dd HH:mm:ss")}' AND TestDT <= '{SelectedOverViewItemData.SearchRangeEnd.ToString("yyyy-MM-dd HH:mm:ss")}' AND ";
|
||||
|
||||
strQuery += $"ProdNo_C NOT IN('PowerON', 'PowerOFF', 'QUERY') AND ";
|
||||
strQuery += $"ProductID NOT IN('PowerON', 'PowerOFF', 'QUERY') ";
|
||||
|
||||
if (SelectedOverViewItemData.ProductID.Length > 0)
|
||||
{
|
||||
strQuery += $"AND ProductID = '{SelectedOverViewItemData.ProductID}' ";
|
||||
}
|
||||
|
||||
strQuery += $"GROUP BY ";
|
||||
|
||||
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE),";
|
||||
//
|
||||
strQuery += $"Y.ModelName,";
|
||||
|
||||
if (inputOption.DisplayByStation)
|
||||
{
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[StationName],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[HostID],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Section],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID],";
|
||||
}
|
||||
|
||||
if (SelectedOverViewItemData.ProductID.Length > 0)
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProductID,";
|
||||
|
||||
//strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID],";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestType],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Version],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion]";
|
||||
strQuery += " ";
|
||||
strQuery += ") AS X ";
|
||||
|
||||
if (inputOption.DisplayByStation)
|
||||
{
|
||||
strQuery += "WHERE X.Host = '" + SelectedOverViewItemData.HostID + "' AND X.Section = '" + SelectedOverViewItemData.SectionID + "' ";
|
||||
//strQuery += "ORDER BY X.TestDate, X.Host, X.Section ASC;";
|
||||
strQuery += "ORDER BY X.TestDate ASC, X.FirstTestTime ASC;";
|
||||
}
|
||||
else
|
||||
{
|
||||
strQuery += "WHERE X.ProductNo = '" + SelectedOverViewItemData.ProductNo + "' AND X.TestType = '" + SelectedOverViewItemData.TestType + "' AND X.TestCode = '" + SelectedOverViewItemData.TestCode + "' AND X.ParentNo = '" + SelectedOverViewItemData.ParentNo + "' ";
|
||||
//strQuery += "ORDER BY X.TestDate, X.ProductNo, X.ParentNo ASC;";
|
||||
strQuery += "ORDER BY X.TestDate ASC, X.FirstTestTime ASC;";
|
||||
}
|
||||
//
|
||||
strGetSendQuery = strQuery;
|
||||
|
||||
if (bScanLongTermUse)
|
||||
SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
|
||||
else
|
||||
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
DataTable GetSubRawResult()
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - SelectedOverViewItemData.SearchRangeStart.Year) + (dtNow.Month - SelectedOverViewItemData.SearchRangeStart.Month);
|
||||
bool bScanLongTermUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
strQuery += $"SELECT * FROM (";
|
||||
strQuery += $"SELECT ";
|
||||
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE) AS {eColList.TestDate.ToString()},";
|
||||
|
||||
strQuery += $"Y.ModelName,";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestType] AS {eColList.TestType.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C] AS {eColList.ProductNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode] AS {eColList.TestCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P] AS {eColList.ParentNo.ToString()},";
|
||||
|
||||
if (SelectedOverViewItemData.ProductID.Length > 0)
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProductID] as {eColList.ProductID.ToString()},";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo] AS {eColList.TestListFileNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo] AS {eColList.TestListVariantNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode] AS {eColList.FileCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Version] AS {eColList.FileVersion.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion] AS {eColList.StepVersion.ToString()},";
|
||||
strQuery += $"CONVERT(CHAR(8), MIN({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FirstTestTime.ToString()},";
|
||||
strQuery += $"CONVERT(CHAR(8), MAX({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FinalTestTime.ToString()},";
|
||||
strQuery += $"COUNT({DMCommon.SummaryLogTable}.[Result]) AS {eColList.Total.ToString()},";
|
||||
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] = 'OK' THEN 1 END) AS {eColList.OK.ToString()},";
|
||||
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] != 'OK' THEN 1 END) AS {eColList.NG.ToString()},";
|
||||
|
||||
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[ProdNo_P] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
|
||||
//strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[Testcode] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
|
||||
//strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID] ";
|
||||
|
||||
strQuery += $"FROM {DMCommon.SummaryLogTable} ";
|
||||
strQuery += $"WITH(NOLOCK) ";
|
||||
//strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = CONVERT(NVARCHAR, {DMCommon.SummaryLogTable}.[TestListVariantNo]) ";
|
||||
|
||||
switch (GetSelectInfo)
|
||||
{
|
||||
case eOverviewModelNameInfo.L:
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
case eOverviewModelNameInfo.P1:
|
||||
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
case eOverviewModelNameInfo.P2:
|
||||
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
*/
|
||||
|
||||
strQuery += $"WHERE TestDT >= '{SelectedOverViewItemData.SearchRangeStart.ToString("yyyy-MM-dd HH:mm:ss")}' AND TestDT <= '{SelectedOverViewItemData.SearchRangeEnd.ToString("yyyy-MM-dd HH:mm:ss")}' AND ";
|
||||
|
||||
strQuery += $"ProdNo_C NOT IN('PowerON', 'PowerOFF', 'QUERY') AND ";
|
||||
strQuery += $"ProductID NOT IN('PowerON', 'PowerOFF', 'QUERY') ";
|
||||
|
||||
if (SelectedOverViewItemData.ProductID.Length > 0)
|
||||
{
|
||||
strQuery += $"AND ProductID = '{SelectedOverViewItemData.ProductID}' ";
|
||||
}
|
||||
|
||||
strQuery += $"GROUP BY ";
|
||||
|
||||
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE),";
|
||||
//
|
||||
strQuery += $"Y.ModelName,";
|
||||
|
||||
if (SelectedOverViewItemData.ProductID.Length > 0)
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProductID,";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID],";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestType],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Version],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion]";
|
||||
strQuery += " ";
|
||||
strQuery += ") AS X ";
|
||||
|
||||
strQuery += "WHERE X.ProductNo = '" + SelectedOverViewItemData.ProductNo + "' AND X.TestType = '" + SelectedOverViewItemData.TestType + "' AND X.TestCode = '" + SelectedOverViewItemData.TestCode + "' AND X.ParentNo = '" + SelectedOverViewItemData.ParentNo + "' ";
|
||||
//strQuery += "ORDER BY X.TestDate, X.ProductNo, X.ParentNo ASC;";
|
||||
strQuery += "ORDER BY X.TestDate ASC, X.FirstTestTime ASC;";
|
||||
|
||||
if (bScanLongTermUse)
|
||||
SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
|
||||
else
|
||||
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
344
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMOverview.cs
Normal file
344
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMOverview.cs
Normal file
@ -0,0 +1,344 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.ALIS.Interface;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
using static SystemX.Product.CP.TRA.Commons;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public class DMOverview
|
||||
{
|
||||
public enum eCommand
|
||||
{
|
||||
PowerON,
|
||||
PowerOFF,
|
||||
QUERY
|
||||
}
|
||||
|
||||
public enum eColList
|
||||
{
|
||||
TestDate,
|
||||
StationName,
|
||||
Host,
|
||||
Section,
|
||||
ProductID,
|
||||
Start,
|
||||
Final,
|
||||
ProductNo,
|
||||
TestType,
|
||||
ParentNo,
|
||||
TestListFileNo,
|
||||
TestListVariantNo,
|
||||
TestCode,
|
||||
FileVersion,
|
||||
FileCode,
|
||||
StepVersion,
|
||||
FirstTestTime,
|
||||
FinalTestTime,
|
||||
Total,
|
||||
OK,
|
||||
NG, //NOK,
|
||||
TestListCntID
|
||||
}
|
||||
|
||||
public enum eColListHide
|
||||
{
|
||||
TestListCntID,
|
||||
RN
|
||||
}
|
||||
|
||||
private SqlConnection DBConn { get; set; }
|
||||
|
||||
private SqlConnection ShortTermDBConn { get; set; }
|
||||
|
||||
private SqlConnection LongTermDBConn { get; set; }
|
||||
|
||||
private SqlCommand SQLCmd { get; set; }
|
||||
|
||||
public void SetSqlCommandCancel()
|
||||
{
|
||||
CTS.Cancel();
|
||||
}
|
||||
|
||||
public bool GetSqlCommandCancelState()
|
||||
{
|
||||
return CTS.IsCancellationRequested;
|
||||
}
|
||||
|
||||
|
||||
public string strOverviewUseQuery;
|
||||
|
||||
eOverviewModelNameInfo GetSelectInfo;
|
||||
|
||||
CancellationTokenSource CTS;
|
||||
|
||||
CancellationToken CT;
|
||||
|
||||
public DMOverview(eSelectDataView SelectView, eOverviewModelNameInfo SelectInfo, IDataBaseController getDBController)
|
||||
{
|
||||
GetSelectInfo = SelectInfo;
|
||||
|
||||
DBConn = getDBController.GetMainConn();
|
||||
|
||||
if (SelectView == eSelectDataView.DataDocumentViewC1)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn1();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn1();
|
||||
}
|
||||
else if (SelectView == eSelectDataView.DataDocumentViewC2)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn2();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn2();
|
||||
}
|
||||
|
||||
strOverviewUseQuery = string.Empty;
|
||||
|
||||
CTS = new CancellationTokenSource();
|
||||
CT = CTS.Token;
|
||||
}
|
||||
|
||||
public async Task<DataTable> GetDataView(DateTime dtStart, DateTime dtEnd, OverviewSearchOption inputOption, bool bUseMainConn = false, string strTestQuery = "")
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
|
||||
string strGetUseQuery = string.Empty;
|
||||
|
||||
CTS = new CancellationTokenSource();
|
||||
CT = CTS.Token;
|
||||
|
||||
//For Test
|
||||
/*
|
||||
try
|
||||
{
|
||||
await Task.Delay(5000, CT);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
*/
|
||||
|
||||
Tuple<DataTable, string> dtRawInfo = await GetRawResult(dtStart, dtEnd, inputOption, bUseMainConn, strTestQuery);
|
||||
|
||||
strOverviewUseQuery = dtRawInfo.Item2;
|
||||
|
||||
return dtRawInfo.Item1;
|
||||
}
|
||||
|
||||
private async Task<Tuple<DataTable, string>> GetRawResult(DateTime dtStart, DateTime dtEnd, OverviewSearchOption inputOption, bool bUseMainConn = false, string strTestQuery = "")
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
|
||||
bool bFullScanOn = false;
|
||||
|
||||
string strQuery = string.Empty;
|
||||
//string strSubQuery = string.Empty;
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - dtStart.Year) + (dtNow.Month - dtStart.Month);
|
||||
bool bScanLongTermUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
string strGetSendQuery = string.Empty;
|
||||
|
||||
/*
|
||||
strSubQuery = $"SELECT Y.No, Y.GroupName, Y.ModelName, Y.Comment FROM [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) " +
|
||||
$"LEFT JOIN[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo " +
|
||||
$"WHERE X.No = ; ";
|
||||
|
||||
using (SqlCommand cmd = new SqlCommand(, DBConn))
|
||||
{
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
strQuery += $"SELECT * FROM (";
|
||||
strQuery += $"SELECT ";
|
||||
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE) AS {eColList.TestDate.ToString()},";
|
||||
|
||||
if (inputOption.DisplayByStation)
|
||||
{
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[StationName] AS {eColList.StationName.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[HostID] AS {eColList.Host.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Section] AS {eColList.Section.ToString()},";
|
||||
}
|
||||
//
|
||||
strQuery += $"Y.ModelName,";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestType] AS {eColList.TestType.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C] AS {eColList.ProductNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode] AS {eColList.TestCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P] AS {eColList.ParentNo.ToString()},";
|
||||
|
||||
if (inputOption.ProductID.Length > 0)
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProductID] as {eColList.ProductID.ToString()},";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo] AS {eColList.TestListFileNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo] AS {eColList.TestListVariantNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode] AS {eColList.FileCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[Version] AS {eColList.FileVersion.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion] AS {eColList.StepVersion.ToString()},";
|
||||
strQuery += $"CONVERT(CHAR(8), MIN({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FirstTestTime.ToString()},";
|
||||
strQuery += $"CONVERT(CHAR(8), MAX({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FinalTestTime.ToString()},";
|
||||
strQuery += $"COUNT({DMCommon.SummaryLogTable}.[Result]) AS {eColList.Total.ToString()},";
|
||||
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] = 'OK' THEN 1 END) AS {eColList.OK.ToString()},";
|
||||
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] != 'OK' THEN 1 END) AS {eColList.NG.ToString()},";
|
||||
|
||||
if (inputOption.DisplayByStation)
|
||||
{
|
||||
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[HostID], {DMCommon.SummaryLogTable}.[Section] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID]";
|
||||
}
|
||||
else
|
||||
{
|
||||
//strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[ProdNo_P] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
|
||||
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[Testcode] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
|
||||
//strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
|
||||
|
||||
strQuery = strQuery.Remove(strQuery.Length - 1, 1);
|
||||
}
|
||||
|
||||
strQuery += " ";
|
||||
|
||||
strQuery += $"FROM {DMCommon.SummaryLogTable} ";
|
||||
strQuery += $"WITH(NOLOCK) ";
|
||||
|
||||
//strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = CONVERT(NVARCHAR, {DMCommon.SummaryLogTable}.[TestListVariantNo]) ";
|
||||
|
||||
switch(GetSelectInfo)
|
||||
{
|
||||
case eOverviewModelNameInfo.L:
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
case eOverviewModelNameInfo.P1:
|
||||
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
case eOverviewModelNameInfo.P2:
|
||||
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
break;
|
||||
}
|
||||
/*
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
|
||||
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
|
||||
*/
|
||||
|
||||
strQuery += $"WHERE ";
|
||||
|
||||
if (inputOption.ProductID.Length > 0 && inputOption.FullScanData)
|
||||
{
|
||||
bFullScanOn = true;
|
||||
}
|
||||
else
|
||||
strQuery += $"TestDT >= '{dtStart.ToString("yyyy-MM-dd HH:mm:ss")}' AND TestDT <= '{dtEnd.ToString("yyyy-MM-dd HH:mm:ss")}' AND ";
|
||||
|
||||
strQuery += $"ProdNo_C NOT IN('PowerON', 'PowerOFF', 'QUERY') AND ";
|
||||
strQuery += $"ProductID NOT IN('PowerON', 'PowerOFF', 'QUERY') ";
|
||||
|
||||
if (inputOption.ProductID.Length > 0)
|
||||
{
|
||||
strQuery += $"AND ProductID = '{inputOption.ProductID}' ";
|
||||
}
|
||||
|
||||
strQuery += $"GROUP BY ";
|
||||
|
||||
strQuery += $"CAST({DMCommon.SummaryLogTable}.TestDT AS DATE),";
|
||||
//
|
||||
strQuery += $"Y.ModelName,";
|
||||
|
||||
if (inputOption.DisplayByStation)
|
||||
{
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.StationName,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.HostID,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Section,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.TestListCntID,";
|
||||
}
|
||||
|
||||
if (inputOption.ProductID.Length > 0)
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProductID,";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.TestType,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_C,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Testcode,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_P,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdCode,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Version,";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.StepVersion";
|
||||
strQuery += " ";
|
||||
strQuery += ") AS X WHERE X.RN = 1 ";
|
||||
|
||||
if (inputOption.DisplayByStation)
|
||||
{
|
||||
strQuery += "ORDER BY Host, Section ASC;";
|
||||
//strQuery += "ORDER BY Host, Section DESC;";
|
||||
}
|
||||
else
|
||||
{
|
||||
strQuery += "ORDER BY ProductNo, ParentNo ASC;";
|
||||
//strQuery += ";";
|
||||
}
|
||||
|
||||
if (strTestQuery.Length > 0)
|
||||
strQuery = strTestQuery;
|
||||
|
||||
strGetSendQuery = strQuery;
|
||||
|
||||
if (bUseMainConn)
|
||||
{
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bScanLongTermUse)
|
||||
SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
|
||||
else
|
||||
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
}
|
||||
|
||||
if(bFullScanOn)
|
||||
SQLCmd.CommandTimeout = DMCommon.nFullScanTime;
|
||||
else
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = null;
|
||||
|
||||
try
|
||||
{
|
||||
dtReader = await SQLCmd.ExecuteReaderAsync(CT);
|
||||
}
|
||||
catch
|
||||
{
|
||||
if (dtReader != null)
|
||||
{
|
||||
dtReader.Close();
|
||||
dtReader = null;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (dtReader != null)
|
||||
{
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
}
|
||||
}
|
||||
|
||||
return new Tuple<DataTable, string>(dtResult, strGetSendQuery);
|
||||
}
|
||||
}
|
||||
}
|
||||
196
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMProductHistory.cs
Normal file
196
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMProductHistory.cs
Normal file
@ -0,0 +1,196 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.ALIS.Interface;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
using static SystemX.Product.TRA.DataManager.DMOverview;
|
||||
using static SystemX.Product.CP.TRA.Commons;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public class DMProductHistory
|
||||
{
|
||||
public enum eColList
|
||||
{
|
||||
LastTestDateTime,
|
||||
ProductID,
|
||||
ProductNo,
|
||||
TestType,
|
||||
TestCode,
|
||||
ParentNo,
|
||||
FileVersion,
|
||||
FileCode,
|
||||
StepVersion,
|
||||
AvgDuration,
|
||||
TestResult,
|
||||
OK,
|
||||
NG, //NOK,
|
||||
TestlistNo,
|
||||
//TestID,
|
||||
LogNo,
|
||||
LogCount,
|
||||
AccessStart,
|
||||
AccessEnd,
|
||||
TestlistFile,
|
||||
TestlistReqID
|
||||
}
|
||||
|
||||
private SqlConnection DBConn { get; set; }
|
||||
|
||||
private SqlConnection ShortTermDBConn { get; set; }
|
||||
|
||||
private SqlConnection LongTermDBConn { get; set; }
|
||||
|
||||
|
||||
private SqlCommand SQLCmd { get; set; }
|
||||
|
||||
|
||||
public DMProductHistory(eSelectDataView SelectView, IDataBaseController getDBController)
|
||||
{
|
||||
DBConn = getDBController.GetMainConn();
|
||||
|
||||
if (SelectView == eSelectDataView.DataDocumentViewC1)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn1();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn1();
|
||||
}
|
||||
else if (SelectView == eSelectDataView.DataDocumentViewC2)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn2();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn2();
|
||||
}
|
||||
}
|
||||
|
||||
public DataTable SearchTestHistory(SelectedDataCollection data, TestHistorySearchOption option)
|
||||
{
|
||||
DataTable dtResult = GetRawResult(data, option);
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
DataTable GetRawResult(SelectedDataCollection data, TestHistorySearchOption option)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
DateTime dtCheckTime = DateTime.Now;
|
||||
|
||||
if (option.Time_WholeRange)
|
||||
dtCheckTime = data.SearchRangeStart;
|
||||
else if (option.Time_SelectedTest)
|
||||
dtCheckTime = data.StartTime;
|
||||
else if (option.Time_Day)
|
||||
dtCheckTime = data.StartTime;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - dtCheckTime.Year) + (dtNow.Month - dtCheckTime.Month);
|
||||
bool bScanLongTermUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
strQuery += $"select ";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProductID as {eColList.ProductID.ToString()},";
|
||||
//strQuery += $"CONVERT(char(20), {DMCommon.SummaryLogTable}.TestDT, 20) as {eColList.LastTestDateTime.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.TestType as {eColList.TestType.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_C as {eColList.ProductNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Testcode as {eColList.TestCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_P as {eColList.ParentNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdCode as {eColList.FileCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Version as {eColList.FileVersion.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.StepVersion as {eColList.StepVersion.ToString()},";
|
||||
strQuery += $"avg(CONVERT(int, {DMCommon.SummaryLogTable}.Duration)) as {eColList.AvgDuration.ToString()},";
|
||||
|
||||
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.Result = 'OK' THEN 1 ELSE 0 END) as {eColList.OK.ToString()},";
|
||||
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.Result = '-' THEN 0 WHEN {DMCommon.SummaryLogTable}.Result != 'OK' THEN 1 ELSE 0 END) as {eColList.NG.ToString()},";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestlistNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestlistFile]";
|
||||
|
||||
strQuery += " ";
|
||||
strQuery += $"from {DMCommon.SummaryLogTable} ";
|
||||
strQuery += $"WITH(NOLOCK) ";
|
||||
|
||||
if (option.Time_WholeRange)
|
||||
strQuery += $"where TestDT >= '{data.SearchRangeStart.ToString("yyyy-MM-dd 00:00:00")}' and TestDT <= '{data.SearchRangeEnd.ToString("yyyy-MM-dd 23:59:59")}' ";
|
||||
else if(option.Time_SelectedTest)
|
||||
strQuery += $"where TestDT >= '{data.StartTime.ToString("yyyy-MM-dd HH:mm:ss")}' and TestDT <= '{data.EndTime.ToString("yyyy-MM-dd HH:mm:ss")}' ";
|
||||
else if(option.Time_Day)
|
||||
strQuery += $"where TestDT >= '{data.StartTime.ToShortDateString()} 00:00:00' and TestDT <= '{data.EndTime.ToShortDateString()} 23:59:59' ";
|
||||
|
||||
if (option.Station && !string.IsNullOrWhiteSpace(data.StationName))
|
||||
strQuery += $" and (StationName = '{data.StationName}' or StationName = '-') ";
|
||||
if (option.Host && !string.IsNullOrWhiteSpace(data.HostID))
|
||||
strQuery += $" and (HostID = '{data.HostID}' or HostID = '-') ";
|
||||
if (option.Section && !string.IsNullOrWhiteSpace(data.SectionID))
|
||||
strQuery += $" and (Section = '{data.SectionID}' or Section = '-') ";
|
||||
if (option.TestType)
|
||||
strQuery += $" and (TestType = '{data.TestType}' or TestType = '-') ";
|
||||
if (option.ProductNo)
|
||||
{
|
||||
strQuery += $" and (ProdNo_C = '{data.ProductNo}' ";
|
||||
|
||||
if(option.Host && !string.IsNullOrWhiteSpace(data.HostID))
|
||||
{
|
||||
foreach(string strCmd in Enum.GetNames(typeof(eCommand)))
|
||||
strQuery += $"or ProdNo_C = '{strCmd}'";
|
||||
}
|
||||
strQuery += $" )";
|
||||
}
|
||||
if (option.TestCode)
|
||||
strQuery += $" and (Testcode = '{data.TestCode}' or Testcode = '-') ";
|
||||
if (option.ParentNo)
|
||||
strQuery += $" and (ProdNo_P = '{data.ParentNo}' or ProdNo_P = '-') ";
|
||||
if (option.ProductionCode)
|
||||
strQuery += $" and (ProdCode = '{data.ProductionCode}' or ProdCode = '-') ";
|
||||
if (option.FileVersion)
|
||||
strQuery += $" and (Version = '{data.FileVersion}' or Version = '-') ";
|
||||
if (option.StepVersion)
|
||||
strQuery += $" and (StepVersion = '{data.StepVersion}' or StepVersion = '-1') ";
|
||||
if (option.Time_SelectedTest)
|
||||
strQuery += $" and (TestListCntID = '{data.TestRequestID[0]}' or TestListCntID = '-') ";
|
||||
|
||||
strQuery += $" group by ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.ProductID, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.TestType, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.ProdNo_C, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.Testcode, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.ProdNo_P, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.ProdCode, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.Version, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.StepVersion, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.TestlistNo, ";
|
||||
strQuery += $" {DMCommon.SummaryLogTable}.TestlistFile ";
|
||||
|
||||
strQuery += " ";
|
||||
//strQuery += $"order by ";
|
||||
//strQuery += $"{DMCommon.SummaryLogTable}.TestDT";
|
||||
strQuery += ";";
|
||||
|
||||
if (bScanLongTermUse)
|
||||
SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
|
||||
else
|
||||
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
156
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMStepTrend.cs
Normal file
156
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMStepTrend.cs
Normal file
@ -0,0 +1,156 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.ALIS.Interface;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
using static SystemX.Product.TRA.DataManager.DMOverview;
|
||||
using static SystemX.Product.CP.TRA.Commons;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public class DMStepTrend
|
||||
{
|
||||
|
||||
public SqlConnection DBConn { get; private set; }
|
||||
public SqlConnection ShortTermDBConn { get; private set; }
|
||||
public SqlConnection LongTermDBConn { get; private set; }
|
||||
|
||||
private SqlCommand SQLCmd { get; set; }
|
||||
|
||||
|
||||
public DMStepTrend(eSelectDataView SelectView, IDataBaseController getDBController)
|
||||
{
|
||||
DBConn = getDBController.GetMainConn();
|
||||
|
||||
if (SelectView == eSelectDataView.DataDocumentViewC1)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn1();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn1();
|
||||
}
|
||||
else if (SelectView == eSelectDataView.DataDocumentViewC2)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn2();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn2();
|
||||
}
|
||||
}
|
||||
|
||||
public DataTable SearchTestResult(DateTime dtTest, ulong nAccStart, ulong nAccEnd)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
string strLongTerm = "HIST_TestResult";
|
||||
string strShortTerm = "HIST_TestResult";
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - dtTest.Year) + (dtNow.Month - dtTest.Month);
|
||||
|
||||
string strTableTerm = nDiffMonth > 3 ? strLongTerm : strShortTerm;
|
||||
bool bLongTermTableUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
strQuery += $"SELECT ";
|
||||
strQuery += $"*";
|
||||
strQuery += " ";
|
||||
strQuery += $"from {strTableTerm} ";
|
||||
strQuery += $"WITH(NOLOCK) ";
|
||||
strQuery += $"where AccessKey >= {nAccStart} and AccessKey <= {nAccEnd}";
|
||||
strQuery += " ";
|
||||
strQuery += $"order by ";
|
||||
strQuery += $"[StepID]";
|
||||
strQuery += ";";
|
||||
|
||||
if (bLongTermTableUse) SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
|
||||
else SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
public DataTable GetTestStepResults(DateTime dtTest, List<ulong> vnData)
|
||||
{
|
||||
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
string strLongTerm = "HIST_TestResult";
|
||||
string strShortTerm = "HIST_TestResult";
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - dtTest.Year) + (dtNow.Month - dtTest.Month);
|
||||
|
||||
string strTableTerm = nDiffMonth > 3 ? strLongTerm : strShortTerm;
|
||||
bool bLongTermTableUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
strQuery += $"SELECT ";
|
||||
strQuery += $"*";
|
||||
strQuery += " ";
|
||||
strQuery += $"from {strTableTerm} ";
|
||||
strQuery += $"WITH(NOLOCK) ";
|
||||
strQuery += $"where ";
|
||||
|
||||
int nIdx = 0;
|
||||
|
||||
foreach(ulong nAccKey in vnData)
|
||||
{
|
||||
strQuery += $"AccessKey = {nAccKey}";
|
||||
|
||||
if(nIdx < vnData.Count - 1)
|
||||
strQuery += " or ";
|
||||
|
||||
nIdx++;
|
||||
}
|
||||
|
||||
strQuery += " ";
|
||||
strQuery += $"order by ";
|
||||
strQuery += $"[AccessKey]";
|
||||
strQuery += ";";
|
||||
|
||||
if (bLongTermTableUse) SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
|
||||
else SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
DataTable GetRawResult(DetailTestDataCollection data)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
281
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMTestDetail.cs
Normal file
281
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMTestDetail.cs
Normal file
@ -0,0 +1,281 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.ALIS.Interface;
|
||||
using SystemX.Product.CP.TRA;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
using static SystemX.Product.TRA.DataManager.DMOverview;
|
||||
using static SystemX.Product.CP.TRA.Commons;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public class DMTestDetail
|
||||
{
|
||||
public enum eColHideListLog
|
||||
{
|
||||
No,
|
||||
AccessKey,
|
||||
//TestID
|
||||
}
|
||||
|
||||
public enum eColTestLog
|
||||
{
|
||||
No,
|
||||
AccessKey,
|
||||
//TestID,
|
||||
StepID,
|
||||
MeasVal,
|
||||
MeasValStr,
|
||||
Message,
|
||||
GlobalMin,
|
||||
GlobalMax,
|
||||
Result,
|
||||
Duration
|
||||
}
|
||||
|
||||
public enum eColHideListTL
|
||||
{
|
||||
No,
|
||||
TestListNo,
|
||||
StepVersion,
|
||||
Enable,
|
||||
IsGlobal,
|
||||
UpdateDT
|
||||
}
|
||||
|
||||
public enum eColTestlist
|
||||
{
|
||||
No,
|
||||
TestListNo,
|
||||
StepID,
|
||||
Variant,
|
||||
Gate,
|
||||
Activate,
|
||||
StepVersion,
|
||||
Enable,
|
||||
Position,
|
||||
StepDesc,
|
||||
UseFunction,
|
||||
SpecMin,
|
||||
SpecMax,
|
||||
Dim,
|
||||
IsGlobal,
|
||||
UpdateDT
|
||||
}
|
||||
|
||||
private SqlConnection DBConn { get; set; }
|
||||
private SqlConnection ShortTermDBConn { get; set; }
|
||||
public SqlConnection LongTermDBConn { get; private set; }
|
||||
|
||||
private SqlCommand SQLCmd { get; set; }
|
||||
|
||||
public DMTestDetail(eSelectDataView SelectView, IDataBaseController getDBController)
|
||||
{
|
||||
DBConn = getDBController.GetMainConn();
|
||||
|
||||
if (SelectView == eSelectDataView.DataDocumentViewC1)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn1();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn1();
|
||||
}
|
||||
else if (SelectView == eSelectDataView.DataDocumentViewC2)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn2();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn2();
|
||||
}
|
||||
}
|
||||
|
||||
public DataTable SearchTestlist(DetailTestDataCollection data)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
/*
|
||||
--최신 목록 스텝 Index Seek 특정 버전 이하 만 찾기
|
||||
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC)
|
||||
AS RN FROM VRFY_Release WITH (INDEX=[CSK_VRFY_Release_1], NOLOCK) WHERE TestlistNo = 28 AND StepVersion <= 18) AS X
|
||||
WHERE X.RN = 1 ORDER BY X.StepID ASC;
|
||||
|
||||
--최신 목록 스텝 Index Seek
|
||||
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC)
|
||||
AS RN FROM VRFY_Release WITH (INDEX=[CSK_VRFY_Release_1], NOLOCK) WHERE TestlistNo = 4) AS X
|
||||
WHERE X.RN = 1 ORDER BY X.StepID ASC;
|
||||
*/
|
||||
|
||||
/*
|
||||
strQuery += $"SELECT * FROM(SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
|
||||
$"AS RN FROM VRFY_Release WITH(INDEX =[CSK_VRFY_Release_1], NOLOCK) WHERE TestlistNo = {data.TestlistNo}) AS X " +
|
||||
$"WHERE X.RN = 1 ORDER BY X.StepID ASC;";
|
||||
*/
|
||||
|
||||
strQuery = $"SELECT A.ProdNo_C, B.ProdNo_P, B.UpdateDT, D.TestCode, D.Gate1, D.Gate2, E.FileName, A.RegUserComment, B.Description, C.GroupName, C.ModelName, A.VariantNo AS 'TestListNo', A.Config, E.TestType, E.Version, E.ProdCode, B.UseTLPosition, B.TestListFileNo, E.UpdateDT AS 'TestListFileUpdateDT', A.VariantNo FROM [PROD_Release] AS A WITH(NOLOCK) " +
|
||||
$"INNER JOIN(SELECT * FROM [PROD_Variant] WITH(NOLOCK)) AS B ON A.VariantNo = B.No " +
|
||||
$"INNER JOIN(SELECT * FROM [PROD_Group] WITH(NOLOCK)) AS C ON B.GroupNo = C.No " +
|
||||
$"INNER JOIN(SELECT * FROM [STAT_TestCode] WITH(NOLOCK)) AS D ON A.TestCodeNo = D.No " +
|
||||
$"INNER JOIN(SELECT * FROM [STOR_TestListFile] WITH(NOLOCK)) AS E ON B.TestListFileNo = E.No " +
|
||||
$"WHERE A.ProdNo_C = '{data.ProductNo}' AND D.TestCode = '{data.TestCode}' AND E.TestType = '{data.TestType}' AND E.Version = '{data.FileVersion}' AND E.ProdCode = '{data.FileCode}';";
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtCompReader = SQLCmd.ExecuteReader();
|
||||
DataTable dtCompResult = new DataTable();
|
||||
|
||||
dtCompResult.Load(dtCompReader);
|
||||
|
||||
if (Commons.isHasRow(dtCompResult) == false)
|
||||
return dtResult;
|
||||
|
||||
string strCompVariNo = dtCompResult.Rows[0]["VariantNo"].ToString();
|
||||
string strCompFileNo = dtCompResult.Rows[0]["TestListFileNo"].ToString();
|
||||
|
||||
dtCompReader.Close();
|
||||
|
||||
string strGetTestListFileNo = string.Empty;
|
||||
|
||||
if (strCompVariNo.CompareTo(data.TestListVariantNo) == 0 &&
|
||||
strCompFileNo.CompareTo(data.TestListFileNo) == 0)
|
||||
strGetTestListFileNo = data.TestListFileNo;
|
||||
else
|
||||
strGetTestListFileNo = strCompFileNo;
|
||||
|
||||
strQuery = $"SELECT * FROM ( " +
|
||||
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
|
||||
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {strGetTestListFileNo} " +
|
||||
$"AND StepVersion <= {data.StepVersion}) X WHERE RN = 1 ORDER BY X.StepID ASC;";
|
||||
|
||||
/*strQuery += $"SELECT ";
|
||||
strQuery += $"*";
|
||||
strQuery += " ";
|
||||
strQuery += $"from [VRFY_Release] ";
|
||||
strQuery += $"WITH(NOLOCK) ";
|
||||
strQuery += $"where [TestListNo] = {data.TestlistNo}";
|
||||
strQuery += " ";
|
||||
strQuery += $"order by ";
|
||||
strQuery += $"[StepID]";
|
||||
strQuery += ";";*/
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
//PK 키 지정
|
||||
DataColumn[] keys1 = new DataColumn[1];
|
||||
keys1[0] = new DataColumn();
|
||||
keys1[0] = dtResult.Columns["StepID"];
|
||||
|
||||
dtResult.PrimaryKey = keys1;
|
||||
|
||||
//StepID 마다 가장 높은 버전 찾기
|
||||
//SQL 수정으로 사용 X
|
||||
//dtResult = RefineStepVersion(dtResult, data);
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
public DataTable RefineStepVersion(DataTable dtTestlist, DetailTestDataCollection data)
|
||||
{
|
||||
var DuplicatedSteps = dtTestlist.AsEnumerable().GroupBy(x => x[eColTestlist.StepID.ToString()]).
|
||||
Select(x => new { StepID = x.Key, Count = x.Count() }).Where(x => x.Count > 1);
|
||||
|
||||
foreach(var value in DuplicatedSteps)
|
||||
{
|
||||
List<DataRow> vdtRow = dtTestlist.AsEnumerable().Where(x => x[eColTestlist.StepID.ToString()].ToString() == value.StepID.ToString()).ToList();
|
||||
DataRow vExcRow = vdtRow.Where(x => x[eColTestlist.StepVersion.ToString()].ToString() == data.StepVersion).FirstOrDefault();
|
||||
|
||||
if(vExcRow == null)
|
||||
{
|
||||
int nMaxVer = vdtRow.Max(x => Convert.ToInt32(x[eColTestlist.StepVersion.ToString()]));
|
||||
|
||||
vExcRow = vdtRow.Where(x => Convert.ToInt32(x[eColTestlist.StepVersion.ToString()]) == nMaxVer).FirstOrDefault();
|
||||
}
|
||||
|
||||
vdtRow.Remove(vExcRow);
|
||||
|
||||
foreach (DataRow dtRow in vdtRow)
|
||||
dtTestlist.Rows.Remove(dtRow);
|
||||
}
|
||||
|
||||
return dtTestlist;
|
||||
}
|
||||
|
||||
public DataTable SearchTestHistory(DetailTestDataCollection data)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
StringBuilder strQuery = new StringBuilder();
|
||||
//string strQuery = string.Empty;
|
||||
|
||||
string strLongTerm = "HIST_TestResult";
|
||||
string strShortTerm = "HIST_TestResult";
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - data.StartTime.Year) + (dtNow.Month - data.StartTime.Month);
|
||||
|
||||
string strTableTerm = nDiffMonth > 3 ? strLongTerm : strShortTerm;
|
||||
bool bLongTermTableUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
strQuery.Append($"SELECT ");
|
||||
strQuery.Append($"*");
|
||||
strQuery.Append(" ");
|
||||
strQuery.Append($"FROM {strTableTerm} ");
|
||||
strQuery.Append($"WITH(NOLOCK) ");
|
||||
strQuery.Append($"WHERE AccessKey <= {data.AccessEnd} AND AccessKey >= {data.AccessStart}");
|
||||
strQuery.Append(" ");
|
||||
strQuery.Append($"ORDER BY ");
|
||||
strQuery.Append($"[StepID]");
|
||||
strQuery.Append(";");
|
||||
|
||||
if (bLongTermTableUse) SQLCmd = new SqlCommand(strQuery.ToString(), LongTermDBConn);
|
||||
else SQLCmd = new SqlCommand(strQuery.ToString(), ShortTermDBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
DataTable GetRawResult(DetailTestDataCollection data)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
207
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMTestHistory.cs
Normal file
207
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMTestHistory.cs
Normal file
@ -0,0 +1,207 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.ALIS.Interface;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
using static SystemX.Product.TRA.DataManager.DMOverview;
|
||||
using static SystemX.Product.CP.TRA.Commons;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public class DMTestHistory
|
||||
{
|
||||
public enum eColList
|
||||
{
|
||||
No,
|
||||
TestDateTime,
|
||||
StationName,
|
||||
Host,
|
||||
Section,
|
||||
ProductID,
|
||||
ProductNo,
|
||||
TestType,
|
||||
TestCode,
|
||||
ParentNo,
|
||||
FileVersion,
|
||||
FileCode,
|
||||
StepVersion,
|
||||
Duration,
|
||||
TestResult,
|
||||
//OK,
|
||||
//NOK,
|
||||
TestListFileNo,
|
||||
TestListVariantNo,
|
||||
//TestID,
|
||||
LogNo,
|
||||
LogCount,
|
||||
AccessStart,
|
||||
AccessEnd,
|
||||
TestlistFileName,
|
||||
TestlistReqID
|
||||
}
|
||||
|
||||
private SqlConnection DBConn { get; set; }
|
||||
private SqlConnection ShortTermDBConn { get; set; }
|
||||
private SqlConnection LongTermDBConn { get; set; }
|
||||
|
||||
private SqlCommand SQLCmd { get; set; }
|
||||
|
||||
|
||||
public DMTestHistory(eSelectDataView SelectView, IDataBaseController getDBController)
|
||||
{
|
||||
DBConn = getDBController.GetMainConn();
|
||||
|
||||
if (SelectView == eSelectDataView.DataDocumentViewC1)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn1();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn1();
|
||||
}
|
||||
else if (SelectView == eSelectDataView.DataDocumentViewC2)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn2();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn2();
|
||||
}
|
||||
}
|
||||
|
||||
public DataTable SearchTestHistory(SelectedDataCollection data, TestHistorySearchOption option, int nReqIdPos = int.MaxValue)
|
||||
{
|
||||
DataTable dtResult = GetRawResult(data, option, nReqIdPos);
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
DataTable GetRawResult(SelectedDataCollection data, TestHistorySearchOption option, int nReqIdPos = int.MaxValue)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
|
||||
DateTime dtCheckTime = DateTime.Now;
|
||||
|
||||
//데이터 검색 시작 시간 확인
|
||||
if (option.Time_WholeRange)
|
||||
dtCheckTime = data.SearchRangeStart;
|
||||
else if (option.Time_SelectedTest)
|
||||
dtCheckTime = data.StartTime;
|
||||
else if (option.Time_Day)
|
||||
dtCheckTime = data.StartTime;
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - dtCheckTime.Year) + (dtNow.Month - dtCheckTime.Month);
|
||||
|
||||
//검색 시작시간이 3개월 전이면 LongTerm Summary 검색
|
||||
bool bLongTermTableUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
strQuery += $"SELECT ";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.No,";
|
||||
strQuery += $"CONVERT(char(20), {DMCommon.SummaryLogTable}.TestDT, 20) as {eColList.TestDateTime.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.StationName as {eColList.StationName.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.HostID as {eColList.Host.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Section as {eColList.Section.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProductID as {eColList.ProductID.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.TestType as {eColList.TestType.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_C as {eColList.ProductNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Testcode as {eColList.TestCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_P as {eColList.ParentNo.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.ProdCode as {eColList.FileCode.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Version as {eColList.FileVersion.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.StepVersion as {eColList.StepVersion.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Duration as {eColList.Duration.ToString()},";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.Result as {eColList.TestResult.ToString()},";
|
||||
//strQuery += $"CASE WHEN {DMCommon.SummaryLogTable}.Result = 'OK' THEN 1 ELSE 0 END as {eColList.OK.ToString()},";
|
||||
//strQuery += $"CASE WHEN {DMCommon.SummaryLogTable}.Result = '-' THEN 0 WHEN {DMCommon.SummaryLogTable}.Result != 'OK' THEN 1 ELSE 0 END as {eColList.NG.ToString()},";
|
||||
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[LogNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[LogCount],";
|
||||
//strQuery += $"{DMCommon.SummaryLogTable}.[TestID],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[LogNo],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[LogCount],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[AccessStart],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[AccessEnd],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileName],";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID] as {eColList.TestlistReqID.ToString()}";
|
||||
|
||||
strQuery += " ";
|
||||
strQuery += $"FROM {DMCommon.SummaryLogTable} ";
|
||||
strQuery += $"WITH(NOLOCK) ";
|
||||
|
||||
if (option.Time_WholeRange)
|
||||
strQuery += $"where TestDT >= '{data.SearchRangeStart.ToString("yyyy-MM-dd 00:00:00")}' and TestDT <= '{data.SearchRangeEnd.ToString("yyyy-MM-dd 23:59:59")}' ";
|
||||
else if(option.Time_SelectedTest)
|
||||
strQuery += $"where TestDT >= '{data.StartTime.ToString("yyyy-MM-dd HH:mm:ss")}' and TestDT <= '{data.EndTime.ToString("yyyy-MM-dd HH:mm:ss")}' ";
|
||||
else if(option.Time_Day)
|
||||
strQuery += $"where TestDT >= '{data.StartTime.ToShortDateString()} 00:00:00' and TestDT <= '{data.EndTime.ToShortDateString()} 23:59:59' ";
|
||||
|
||||
if (option.Station && !string.IsNullOrWhiteSpace(data.StationName))
|
||||
strQuery += $" and (StationName = '{data.StationName}' or StationName = '-') ";
|
||||
if (option.Host && !string.IsNullOrWhiteSpace(data.HostID))
|
||||
strQuery += $" and (HostID = '{data.HostID}' or HostID = '-') ";
|
||||
if (option.Section && !string.IsNullOrWhiteSpace(data.SectionID))
|
||||
strQuery += $" and (Section = '{data.SectionID}' or Section = '-') ";
|
||||
if (option.TestType)
|
||||
strQuery += $" and (TestType = '{data.TestType}' or TestType = '-') ";
|
||||
if (option.ProductNo)
|
||||
{
|
||||
strQuery += $" and (ProdNo_C = '{data.ProductNo}' ";
|
||||
|
||||
if(option.Host && !string.IsNullOrWhiteSpace(data.HostID))
|
||||
{
|
||||
foreach(string strCmd in Enum.GetNames(typeof(eCommand)))
|
||||
strQuery += $"or ProdNo_C = '{strCmd}'";
|
||||
}
|
||||
strQuery += $" )";
|
||||
}
|
||||
if (option.TestCode)
|
||||
strQuery += $" and (Testcode = '{data.TestCode}' or Testcode = '-') ";
|
||||
if (option.ParentNo)
|
||||
strQuery += $" and (ProdNo_P = '{data.ParentNo}' or ProdNo_P = '-') ";
|
||||
if (option.ProductionCode)
|
||||
strQuery += $" and (ProdCode = '{data.ProductionCode}' or ProdCode = '-') ";
|
||||
if (option.FileVersion)
|
||||
strQuery += $" and (Version = '{data.FileVersion}' or Version = '-') ";
|
||||
if (option.StepVersion)
|
||||
strQuery += $" and (StepVersion = '{data.StepVersion}' or StepVersion = '-1') ";
|
||||
if (option.Time_SelectedTest)
|
||||
{
|
||||
if(nReqIdPos == int.MaxValue)
|
||||
strQuery += $" and (TestListCntID = '{data.TestRequestID[0]}' or TestListCntID = '-') ";
|
||||
else
|
||||
strQuery += $" and (TestListCntID = '{data.TestRequestID[nReqIdPos]}' or TestListCntID = '-') ";
|
||||
}
|
||||
|
||||
//if (option.ShowRedundantData)
|
||||
// strQuery += $" group by {DMCommon.SummaryLogTable}.ProductID ";
|
||||
|
||||
strQuery += " ";
|
||||
strQuery += $"ORDER BY ";
|
||||
strQuery += $"{DMCommon.SummaryLogTable}.TestDT";
|
||||
strQuery += ";";
|
||||
|
||||
if (bLongTermTableUse) SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
|
||||
else SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
276
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMTestNgHistory.cs
Normal file
276
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMTestNgHistory.cs
Normal file
@ -0,0 +1,276 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.ALIS.Interface;
|
||||
using SystemX.Product.CP.TRA;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
using static SystemX.Product.TRA.DataManager.DMOverview;
|
||||
using static SystemX.Product.CP.TRA.Commons;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public class DMTestNgHistory
|
||||
{
|
||||
public enum eColList
|
||||
{
|
||||
No,
|
||||
TestDateTime,
|
||||
StationName,
|
||||
Host,
|
||||
Section,
|
||||
ProductID,
|
||||
ProductNo,
|
||||
TestType,
|
||||
TestCode,
|
||||
ParentNo,
|
||||
FileVersion,
|
||||
FileCode,
|
||||
StepVersion,
|
||||
Duration,
|
||||
TestResult,
|
||||
//OK,
|
||||
//NOK,
|
||||
TestListFileNo,
|
||||
TestListVariantNo,
|
||||
//TestID,
|
||||
LogNo,
|
||||
LogCount,
|
||||
AccessStart,
|
||||
AccessEnd,
|
||||
TestlistFileName,
|
||||
TestlistReqID
|
||||
}
|
||||
|
||||
private SqlConnection DBConn { get; set; }
|
||||
private SqlConnection ShortTermDBConn { get; set; }
|
||||
private SqlConnection LongTermDBConn { get; set; }
|
||||
|
||||
private SqlCommand SQLCmd { get; set; }
|
||||
|
||||
|
||||
public DMTestNgHistory(eSelectDataView SelectView, IDataBaseController getDBController)
|
||||
{
|
||||
DBConn = getDBController.GetMainConn();
|
||||
|
||||
if (SelectView == eSelectDataView.DataDocumentViewC1)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn1();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn1();
|
||||
}
|
||||
else if (SelectView == eSelectDataView.DataDocumentViewC2)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn2();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn2();
|
||||
}
|
||||
}
|
||||
|
||||
public DataTable SearchTestNgHistory(SelectedDataCollection data, TestHistorySearchOption option, int nReqIdPos = int.MaxValue)
|
||||
{
|
||||
DataTable dtResult = GetRawResult(data, option, nReqIdPos);
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
public int[] CheckTestListFileNo(string strProductNo, string strTestCode, string strTestType, string strFileVer, string strFileCode)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
StringBuilder strQuery = new StringBuilder();
|
||||
//string strQuery = string.Empty;
|
||||
|
||||
strQuery.Append($"SELECT A.ProdNo_C, B.ProdNo_P, B.UpdateDT, D.TestCode, D.Gate1, D.Gate2, E.FileName, A.RegUserComment, B.Description, C.GroupName, C.ModelName, A.VariantNo AS 'TestListNo', A.Config, E.TestType, E.Version, E.ProdCode, B.UseTLPosition, B.TestListFileNo, E.UpdateDT AS 'TestListFileUpdateDT', A.VariantNo FROM [PROD_Release] AS A WITH(NOLOCK) " +
|
||||
$"INNER JOIN(SELECT * FROM [PROD_Variant] WITH(NOLOCK)) AS B ON A.VariantNo = B.No " +
|
||||
$"INNER JOIN(SELECT * FROM [PROD_Group] WITH(NOLOCK)) AS C ON B.GroupNo = C.No " +
|
||||
$"INNER JOIN(SELECT * FROM [STAT_TestCode] WITH(NOLOCK)) AS D ON A.TestCodeNo = D.No " +
|
||||
$"INNER JOIN(SELECT * FROM [STOR_TestListFile] WITH(NOLOCK)) AS E ON B.TestListFileNo = E.No " +
|
||||
$"WHERE A.ProdNo_C = '{strProductNo}' AND D.TestCode = '{strTestCode}' AND E.TestType = '{strTestType}' AND E.Version = '{strFileVer}' AND E.ProdCode = '{strFileCode}';");
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery.ToString(), DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtCompReader = SQLCmd.ExecuteReader();
|
||||
DataTable dtCompResult = new DataTable();
|
||||
|
||||
dtCompResult.Load(dtCompReader);
|
||||
|
||||
if (Commons.isHasRow(dtCompResult) == false)
|
||||
return new int[] { int.MinValue, int.MinValue };
|
||||
|
||||
string strCompVariNo = dtCompResult.Rows[0]["VariantNo"].ToString();
|
||||
string strCompFileNo = dtCompResult.Rows[0]["TestListFileNo"].ToString();
|
||||
|
||||
dtCompReader.Close();
|
||||
|
||||
return new int[] { int.Parse(strCompFileNo), int.Parse(strCompVariNo) };
|
||||
}
|
||||
|
||||
public DataTable GetUseTestListInformation(int nTestListNo, int nUseStepVersion)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
StringBuilder strQuery = new StringBuilder();
|
||||
//string strQuery = string.Empty;
|
||||
|
||||
strQuery.Append($"SELECT * FROM ( " +
|
||||
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
|
||||
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {nTestListNo.ToString()} " +
|
||||
$"AND StepVersion <= {nUseStepVersion.ToString()}) X WHERE RN = 1 ORDER BY X.StepID ASC;");
|
||||
|
||||
/*
|
||||
strQuery.Append($"SELECT * FROM ( " +
|
||||
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
|
||||
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {nTestListNo.ToString()} " +
|
||||
$"AND StepVersion <= {nUseStepVersion.ToString()}) X ORDER BY X.StepID ASC;");
|
||||
*/
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery.ToString(), DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
//PK 지정
|
||||
DataColumn[] keys1 = new DataColumn[1];
|
||||
keys1[0] = new DataColumn();
|
||||
keys1[0] = dtResult.Columns["StepID"];
|
||||
|
||||
dtResult.PrimaryKey = keys1;
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
DataTable GetRawResult(SelectedDataCollection data, TestHistorySearchOption option, int nReqIdPos = int.MaxValue)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
//string strQuery = string.Empty;
|
||||
StringBuilder strQuery = new StringBuilder();
|
||||
|
||||
DateTime dtCheckTime = DateTime.Now;
|
||||
|
||||
//데이터 검색 시작 시간 확인
|
||||
if (option.Time_WholeRange)
|
||||
dtCheckTime = data.SearchRangeStart;
|
||||
else if (option.Time_SelectedTest)
|
||||
dtCheckTime = data.StartTime;
|
||||
else if (option.Time_Day)
|
||||
dtCheckTime = data.StartTime;
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - dtCheckTime.Year) + (dtNow.Month - dtCheckTime.Month);
|
||||
|
||||
//검색 시작시간이 3개월 전이면 LongTerm Summary 검색
|
||||
bool bLongTermTableUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
strQuery.Append($"SELECT ");
|
||||
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.No,");
|
||||
strQuery.Append($"CONVERT(char(20), {DMCommon.SummaryLogTable}.TestDT, 20) as {eColList.TestDateTime.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.StationName as {eColList.StationName.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.HostID as {eColList.Host.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.Section as {eColList.Section.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.ProductID as {eColList.ProductID.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.TestType as {eColList.TestType.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.ProdNo_C as {eColList.ProductNo.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.Testcode as {eColList.TestCode.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.ProdNo_P as {eColList.ParentNo.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.ProdCode as {eColList.FileCode.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.Version as {eColList.FileVersion.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.StepVersion as {eColList.StepVersion.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.Duration as {eColList.Duration.ToString()},");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.Result as {eColList.TestResult.ToString()},");
|
||||
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[TestListFileNo],");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[TestListVariantNo],");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[LogNo],");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[LogCount],");
|
||||
//strQuery += $"{DMCommon.SummaryLogTable}.[TestID],";
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[LogNo],");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[LogCount],");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[AccessStart],");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[AccessEnd],");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[TestListFileName],");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.[TestListCntID] as {eColList.TestlistReqID.ToString()}");
|
||||
|
||||
strQuery.Append(" ");
|
||||
strQuery.Append($"FROM {DMCommon.SummaryLogTable} ");
|
||||
strQuery.Append($"WITH(NOLOCK) ");
|
||||
|
||||
if (option.Time_WholeRange)
|
||||
strQuery.Append($"WHERE TestDT >= '{data.SearchRangeStart.ToString("yyyy-MM-dd 00:00:00")}' AND TestDT <= '{data.SearchRangeEnd.ToString("yyyy-MM-dd 23:59:59")}' ");
|
||||
else if(option.Time_SelectedTest)
|
||||
strQuery.Append($"WHERE TestDT >= '{data.StartTime.ToString("yyyy-MM-dd HH:mm:ss")}' AND TestDT <= '{data.EndTime.ToString("yyyy-MM-dd HH:mm:ss")}' ");
|
||||
else if(option.Time_Day)
|
||||
strQuery.Append($"WHERE TestDT >= '{data.StartTime.ToShortDateString()} 00:00:00' AND TestDT <= '{data.EndTime.ToShortDateString()} 23:59:59' ");
|
||||
|
||||
if (option.Station && !string.IsNullOrWhiteSpace(data.StationName))
|
||||
strQuery.Append($" AND (StationName = '{data.StationName}' OR StationName = '-') ");
|
||||
if (option.Host && !string.IsNullOrWhiteSpace(data.HostID))
|
||||
strQuery.Append($" AND (HostID = '{data.HostID}' OR HostID = '-') ");
|
||||
if (option.Section && !string.IsNullOrWhiteSpace(data.SectionID))
|
||||
strQuery.Append($" AND (Section = '{data.SectionID}' OR Section = '-') ");
|
||||
if (option.TestType)
|
||||
strQuery.Append($" AND (TestType = '{data.TestType}' OR TestType = '-') ");
|
||||
if (option.ProductNo)
|
||||
{
|
||||
strQuery.Append($" AND (ProdNo_C = '{data.ProductNo}' ");
|
||||
|
||||
if(option.Host && !string.IsNullOrWhiteSpace(data.HostID))
|
||||
{
|
||||
foreach(string strCmd in Enum.GetNames(typeof(eCommand)))
|
||||
strQuery.Append($"OR ProdNo_C = '{strCmd}'");
|
||||
}
|
||||
strQuery.Append($" )");
|
||||
}
|
||||
if (option.TestCode)
|
||||
strQuery.Append($" AND (Testcode = '{data.TestCode}' OR Testcode = '-') ");
|
||||
if (option.ParentNo)
|
||||
strQuery.Append($" AND (ProdNo_P = '{data.ParentNo}' OR ProdNo_P = '-') ");
|
||||
if (option.ProductionCode)
|
||||
strQuery.Append($" AND (ProdCode = '{data.ProductionCode}' OR ProdCode = '-') ");
|
||||
if (option.FileVersion)
|
||||
strQuery.Append($" AND (Version = '{data.FileVersion}' OR Version = '-') ");
|
||||
if (option.StepVersion)
|
||||
strQuery.Append($" AND (StepVersion = '{data.StepVersion}' OR StepVersion = '-1') ");
|
||||
if (option.Time_SelectedTest)
|
||||
{
|
||||
if (nReqIdPos == int.MaxValue)
|
||||
strQuery.Append($" AND (TestListCntID = '{data.TestRequestID[0]}' OR TestListCntID = '-') ");
|
||||
else
|
||||
strQuery.Append($" AND (TestListCntID = '{data.TestRequestID[nReqIdPos]}' OR TestListCntID = '-') ");
|
||||
}
|
||||
|
||||
// strQuery.Append($" AND (Result = 'NG' OR Result = 'SYSTEM_ERROR' OR Result = 'STOP') ";
|
||||
strQuery.Append($" AND (Result != 'OK') ");
|
||||
|
||||
strQuery.Append(" ");
|
||||
strQuery.Append($"ORDER BY ");
|
||||
strQuery.Append($"{DMCommon.SummaryLogTable}.TestDT");
|
||||
strQuery.Append(";");
|
||||
|
||||
if (bLongTermTableUse) SQLCmd = new SqlCommand(strQuery.ToString(), LongTermDBConn);
|
||||
else SQLCmd = new SqlCommand(strQuery.ToString(), ShortTermDBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
458
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMTestSummary.cs
Normal file
458
CPXV2 TRA/SystemX.Product.CP.TRA/DataManager/DMTestSummary.cs
Normal file
@ -0,0 +1,458 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using SystemX.Product.ALIS.Interface;
|
||||
using SystemX.Product.CP.TRA;
|
||||
using SystemX.Product.TRA.UIControl;
|
||||
|
||||
using static SystemX.Product.TRA.DataManager.DMOverview;
|
||||
using static SystemX.Product.CP.TRA.Commons;
|
||||
|
||||
namespace SystemX.Product.TRA.DataManager
|
||||
{
|
||||
public class DMTestSummary
|
||||
{
|
||||
public enum eColHideListLog
|
||||
{
|
||||
No,
|
||||
AccessKey,
|
||||
//TestID
|
||||
}
|
||||
|
||||
public enum eColTestLog
|
||||
{
|
||||
No,
|
||||
AccessKey,
|
||||
//TestID,
|
||||
StepID,
|
||||
MeasVal,
|
||||
MeasValStr,
|
||||
Message,
|
||||
GlobalMin,
|
||||
GlobalMax,
|
||||
Result
|
||||
//Duration
|
||||
}
|
||||
|
||||
public enum eColHideListTL
|
||||
{
|
||||
No,
|
||||
TestlistNo,
|
||||
StepVersion,
|
||||
Enable,
|
||||
IsGlobal,
|
||||
UpdateDT
|
||||
}
|
||||
|
||||
public enum eColTestlist
|
||||
{
|
||||
No,
|
||||
TestlistNo,
|
||||
StepID,
|
||||
Variant,
|
||||
Gate,
|
||||
Activate,
|
||||
StepVersion,
|
||||
Enable,
|
||||
Position,
|
||||
StepDesc,
|
||||
UseFunction,
|
||||
SpecMin,
|
||||
SpecMax,
|
||||
Dim,
|
||||
IsGlobal,
|
||||
UpdateDT
|
||||
}
|
||||
|
||||
public enum eColTestSummary
|
||||
{
|
||||
StepID,
|
||||
Average,
|
||||
Total,
|
||||
OK,
|
||||
NG //NOK
|
||||
}
|
||||
|
||||
public SqlConnection DBConn { get; private set; }
|
||||
public SqlConnection ShortTermDBConn { get; private set; }
|
||||
public SqlConnection LongTermDBConn { get; private set; }
|
||||
|
||||
private SqlCommand SQLCmd { get; set; }
|
||||
|
||||
public DataTable dtHistVersionTL;
|
||||
|
||||
public int nCurrentTLMaxStepVersion { get; set; }
|
||||
|
||||
//public DataTable this[int i] => dtEachVersionTL[i];
|
||||
|
||||
public DMTestSummary(eSelectDataView SelectView, IDataBaseController getDBController)
|
||||
{
|
||||
DBConn = getDBController.GetMainConn();
|
||||
|
||||
if (SelectView == eSelectDataView.DataDocumentViewC1)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn1();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn1();
|
||||
}
|
||||
else if (SelectView == eSelectDataView.DataDocumentViewC2)
|
||||
{
|
||||
ShortTermDBConn = getDBController.GetShortTermConn2();
|
||||
|
||||
LongTermDBConn = getDBController.GetLongTermConn2();
|
||||
}
|
||||
}
|
||||
|
||||
public DataTable SearchTestlist(SelectedDataCollection data, int nHistChkStepVer = int.MinValue, bool bOnlyNewStepVersion = true)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
DataTable dtResultChk = new DataTable();
|
||||
|
||||
string strQuery = string.Empty;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
strQuery = $"SELECT A.ProdNo_C, B.ProdNo_P, B.UpdateDT, D.TestCode, D.Gate1, D.Gate2, E.FileName, A.RegUserComment, B.Description, C.GroupName, C.ModelName, A.VariantNo AS 'TestListNo', A.Config, E.TestType, E.Version, E.ProdCode, B.UseTLPosition, B.TestListFileNo, E.UpdateDT AS 'TestListFileUpdateDT', A.VariantNo FROM [PROD_Release] AS A WITH(NOLOCK) " +
|
||||
$"INNER JOIN(SELECT * FROM [PROD_Variant] WITH(NOLOCK)) AS B ON A.VariantNo = B.No " +
|
||||
$"INNER JOIN(SELECT * FROM [PROD_Group] WITH(NOLOCK)) AS C ON B.GroupNo = C.No " +
|
||||
$"INNER JOIN(SELECT * FROM [STAT_TestCode] WITH(NOLOCK)) AS D ON A.TestCodeNo = D.No " +
|
||||
$"INNER JOIN(SELECT * FROM [STOR_TestListFile] WITH(NOLOCK)) AS E ON B.TestListFileNo = E.No " +
|
||||
$"WHERE A.ProdNo_C = '{data.ProductNo}' AND D.TestCode = '{data.TestCode}' AND E.TestType = '{data.TestType}' AND E.Version = '{data.FileVersion}' AND E.ProdCode = '{data.ProductionCode}';";
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtCompReader = SQLCmd.ExecuteReader();
|
||||
DataTable dtCompResult = new DataTable();
|
||||
|
||||
dtCompResult.Load(dtCompReader);
|
||||
|
||||
if (Commons.isHasRow(dtCompResult) == false)
|
||||
return dtResult;
|
||||
|
||||
string strCompVariNo = dtCompResult.Rows[0]["VariantNo"].ToString();
|
||||
string strCompFileNo = dtCompResult.Rows[0]["TestListFileNo"].ToString();
|
||||
|
||||
dtCompReader.Close();
|
||||
|
||||
string strGetTestListFileNo = string.Empty;
|
||||
|
||||
if (strCompVariNo.CompareTo(data.TestListVariantNo) == 0 &&
|
||||
strCompFileNo.CompareTo(data.TestListFileNo) == 0)
|
||||
strGetTestListFileNo = data.TestListFileNo;
|
||||
else
|
||||
strGetTestListFileNo = strCompFileNo;
|
||||
|
||||
strQuery = $"SELECT LatestStepVersion FROM [HIST_TestListFileLatestStepVersion] WITH(NOLOCK) WHERE TestListFileNo = {strGetTestListFileNo};";
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReaderChk = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResultChk.Clear();
|
||||
dtResultChk.Load(dtReaderChk);
|
||||
|
||||
int nMaxStepVersion = Convert.ToInt32(dtResultChk.Rows[0]["LatestStepVersion"].ToString());
|
||||
|
||||
nCurrentTLMaxStepVersion = nMaxStepVersion;
|
||||
|
||||
dtReaderChk.Close();
|
||||
|
||||
//항상 최신 스텝 버전을 체크
|
||||
strQuery = $"SELECT * FROM ( " +
|
||||
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
|
||||
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {strGetTestListFileNo}) AS X " +
|
||||
$"WHERE X.RN = 1 ORDER BY X.StepID ASC;";
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Clear();
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
if (bOnlyNewStepVersion)
|
||||
{
|
||||
dtHistVersionTL = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Hist 목록 검색 스텝 버전 리스트만 검색하여 사용
|
||||
dtHistVersionTL = new DataTable();
|
||||
|
||||
strQuery = $"SELECT * FROM ( " +
|
||||
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
|
||||
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {strGetTestListFileNo} AND StepVersion <= {nHistChkStepVer}) AS X " +
|
||||
$"WHERE X.RN = 1 ORDER BY X.StepID ASC, StepVersion DESC;";
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtHistReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtHistVersionTL.Clear();
|
||||
dtHistVersionTL.Load(dtHistReader);
|
||||
|
||||
dtHistReader.Close();
|
||||
|
||||
//PK 키 지정 >
|
||||
//TODO : Primary Key Access Error > 업데이트 된 동일 스텝이 존재시 PK 지정 실패
|
||||
DataColumn[] keysHistStepVer = new DataColumn[1];
|
||||
keysHistStepVer[0] = new DataColumn();
|
||||
keysHistStepVer[0] = dtHistVersionTL.Columns["StepID"];
|
||||
|
||||
dtHistVersionTL.PrimaryKey = keysHistStepVer;
|
||||
|
||||
/*
|
||||
dtEachVersionTL = new DataTable[nMaxStepVersion + 1];
|
||||
|
||||
int nStartStepVer = nMaxStepVersion - 5;
|
||||
|
||||
if (nStartStepVer < 0)
|
||||
nStartStepVer = 0;
|
||||
|
||||
for (int i = nStartStepVer; i <= nMaxStepVersion; i++)
|
||||
{
|
||||
dtEachVersionTL[i] = new DataTable();
|
||||
|
||||
strQuery = $"SELECT * FROM ( " +
|
||||
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
|
||||
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {strGetTestListFileNo} AND StepVersion <= {i}) AS X " +
|
||||
$"WHERE X.RN = 1 ORDER BY X.StepID ASC, StepVersion DESC;";
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, DBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtEachVersionTL[i].Clear();
|
||||
dtEachVersionTL[i].Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
//PK 키 지정 >
|
||||
//TODO : Primary Key Access Error > 업데이트 된 동일 스텝이 존재시 PK 지정 실패
|
||||
DataColumn[] keysEachStepVer = new DataColumn[1];
|
||||
keysEachStepVer[0] = new DataColumn();
|
||||
keysEachStepVer[0] = dtEachVersionTL[i].Columns["StepID"];
|
||||
|
||||
dtEachVersionTL[i].PrimaryKey = keysEachStepVer;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
//PK 키 지정
|
||||
DataColumn[] keys1 = new DataColumn[1];
|
||||
keys1[0] = new DataColumn();
|
||||
keys1[0] = dtResult.Columns["StepID"];
|
||||
|
||||
dtResult.PrimaryKey = keys1;
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
public DataTable RefineStepVersion(DataTable dtTestlist, SelectedDataCollection data)
|
||||
{
|
||||
var DuplicatedSteps = dtTestlist.AsEnumerable().GroupBy(x => x[eColTestlist.StepID.ToString()]).
|
||||
Select(x => new { StepID = x.Key, Count = x.Count() }).Where(x => x.Count > 1);
|
||||
|
||||
foreach(var value in DuplicatedSteps)
|
||||
{
|
||||
List<DataRow> vdtRow = dtTestlist.AsEnumerable().Where(x => x[eColTestlist.StepID.ToString()].ToString() == value.StepID.ToString()).ToList();
|
||||
DataRow vExcRow = vdtRow.Where(x => x[eColTestlist.StepVersion.ToString()].ToString() == data.StepVersion).FirstOrDefault();
|
||||
|
||||
if(vExcRow == null)
|
||||
{
|
||||
int nMaxVer = vdtRow.Max(x => Convert.ToInt32(x[eColTestlist.StepVersion.ToString()]));
|
||||
|
||||
vExcRow = vdtRow.Where(x => Convert.ToInt32(x[eColTestlist.StepVersion.ToString()]) == nMaxVer).FirstOrDefault();
|
||||
}
|
||||
|
||||
vdtRow.Remove(vExcRow);
|
||||
|
||||
foreach (DataRow dtRow in vdtRow)
|
||||
dtTestlist.Rows.Remove(dtRow);
|
||||
}
|
||||
|
||||
return dtTestlist;
|
||||
}
|
||||
|
||||
public DataTable SearchTestSummary(DateTime dtTestTime, List<Tuple<ulong, ulong>> vnpAccKeys, List<Int64> vnpSummaryNo)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
string strLongTerm = "HIST_TestResult";
|
||||
string strShortTerm = "HIST_TestResult";
|
||||
|
||||
DateTime dtNow = DateTime.Now;
|
||||
|
||||
int nDiffMonth = 12 * (dtNow.Year - dtTestTime.Year) + (dtNow.Month - dtTestTime.Month);
|
||||
|
||||
string strTableTerm = nDiffMonth > 3 ? strLongTerm : strShortTerm;
|
||||
bool bLongTermTableUse = nDiffMonth > 3 ? true : false;
|
||||
|
||||
if (vnpAccKeys == null || vnpAccKeys.Count <= 0)
|
||||
return dtResult;
|
||||
|
||||
/*
|
||||
strQuery += $"SELECT ";
|
||||
strQuery += $"StepID, ";
|
||||
strQuery += $"AVG(CASE WHEN (X.[MeasValStr] = null OR X.[MeasValStr] = '') AND (X.[Message] = null OR X.[Message] = '') AND (X.[MeasVal] != 0.00000 AND X.[Result] != 'NONE') THEN X.[MeasVal] ELSE null END) AS Average, ";
|
||||
strQuery += $"COUNT(X.[Result]) AS Total, ";
|
||||
strQuery += $"COUNT(CASE WHEN X.[Result] = 'OK' THEN 1 END) AS OK, ";
|
||||
strQuery += $"COUNT(CASE WHEN X.[Result] = 'NG' OR X.[Result] = 'ERROR' THEN 1 END) AS NG ";
|
||||
strQuery += " ";
|
||||
strQuery += $"FROM [{strTableTerm}] AS X ";
|
||||
strQuery += $"WITH(NOLOCK) INNER JOIN [{DMCommon.SummaryLogTable}] AS Y ON ";
|
||||
|
||||
int nIdx = 0;
|
||||
|
||||
strQuery += $"(";
|
||||
|
||||
foreach (Int64 npKey in vnpSummaryNo)
|
||||
{
|
||||
strQuery += $"Y.[NO] = {npKey} ";
|
||||
|
||||
if (vnpAccKeys.Count - 1 > nIdx)
|
||||
strQuery += " OR ";
|
||||
|
||||
nIdx++;
|
||||
}
|
||||
|
||||
strQuery += $") ";
|
||||
strQuery += $"WHERE ";
|
||||
|
||||
nIdx = 0;
|
||||
|
||||
foreach(Tuple<ulong, ulong> npKey in vnpAccKeys)
|
||||
{
|
||||
strQuery += $"(X.[AccessKey] <= {npKey.Item2} AND X.[AccessKey] >= {npKey.Item1})";
|
||||
|
||||
if (vnpAccKeys.Count - 1 > nIdx)
|
||||
strQuery += " OR ";
|
||||
|
||||
nIdx++;
|
||||
}
|
||||
|
||||
strQuery += " ";
|
||||
strQuery += $"GROUP BY ";
|
||||
strQuery += $"X.[StepID]";
|
||||
strQuery += " ";
|
||||
strQuery += $"ORDER BY ";
|
||||
strQuery += $"X.[StepID]";
|
||||
strQuery += ";";
|
||||
*/
|
||||
/*
|
||||
SELECT
|
||||
Y.StepID,
|
||||
CASE X.StepVersion WHEN 0 THEN 'O' ELSE 'X' END AS SV0,
|
||||
CASE X.StepVersion WHEN 1 THEN 'O' ELSE 'X' END AS SV1,
|
||||
CASE X.StepVersion WHEN 2 THEN 'O' ELSE 'X' END AS SV2,
|
||||
CASE X.StepVersion WHEN 3 THEN 'O' ELSE 'X' END AS SV3,
|
||||
CASE X.StepVersion WHEN 4 THEN 'O' ELSE 'X' END AS SV4,
|
||||
CASE X.StepVersion WHEN 5 THEN 'O' ELSE 'X' END AS SV5,
|
||||
AVG(CASE WHEN (Y.[MeasValStr] = null OR Y.[MeasValStr] = '') AND
|
||||
(Y.[Message] = null OR Y.[Message] = '') AND
|
||||
(Y.[MeasVal] != 0.00000 AND Y.[Result] != 'NONE') THEN Y.[MeasVal] ELSE null END) AS Average,
|
||||
COUNT(Y.[Result]) AS Total, COUNT(CASE WHEN Y.[Result] = 'OK' THEN 1 END) AS OK,
|
||||
COUNT(CASE WHEN Y.[Result] = 'NG' OR Y.[Result] = 'ERROR' THEN 1 END) AS NG
|
||||
FROM [{DMCommon.SummaryLogTable}] AS X WITH(NOLOCK)
|
||||
INNER JOIN [HIST_TestResultLongTerm] AS Y WITH(NOLOCK) ON (Y.AccessKey <= X.AccessEnd AND Y.AccessKey >= X.AccessStart)
|
||||
WHERE (X.[No] = 120202 OR X.[NO] = 120204 OR X.[NO] = 120206 OR X.[NO] = 120208 OR X.[NO] = 120211 OR X.[NO] = 120212 OR X.[NO] = 120214 OR X.[NO] = 120216 OR X.[NO] = 120218 OR X.[NO] = 120220 OR X.[NO] = 120222)
|
||||
GROUP BY Y.[StepID], X.[StepVersion] ORDER BY Y.[StepID];
|
||||
*/
|
||||
|
||||
strQuery += $"SELECT ";
|
||||
strQuery += $"Y.[StepID], ";
|
||||
|
||||
//for (int i = 0; i <= nCurrentTLMaxStepVersion; i++)
|
||||
// strQuery += $"CASE X.StepVersion WHEN " + i.ToString() + " THEN 'O' ELSE 'X' END AS SV" + i.ToString() + ", ";
|
||||
|
||||
strQuery += $"AVG(CASE WHEN (Y.[MeasValStr] = NULL OR Y.[MeasValStr] = '') AND (Y.[Message] = NULL OR Y.[Message] = '') AND (Y.[MeasVal] != 0.00000 AND Y.[Result] != 'NONE') THEN Y.[MeasVal] ELSE NULL END) AS Average, ";
|
||||
strQuery += $"COUNT(Y.[Result]) AS Total, ";
|
||||
strQuery += $"COUNT(CASE WHEN Y.[Result] = 'OK' THEN 1 END) AS OK, ";
|
||||
strQuery += $"COUNT(CASE WHEN Y.[Result] = 'NG' OR X.[Result] = 'ERROR' THEN 1 END) AS NG ";
|
||||
strQuery += $" ";
|
||||
strQuery += $"FROM [{DMCommon.SummaryLogTable}] AS X WITH(NOLOCK) ";
|
||||
strQuery += $"INNER JOIN [{strTableTerm}] AS Y WITH(NOLOCK) ON (Y.AccessKey BETWEEN X.AccessStart AND X.AccessEnd) ";
|
||||
|
||||
int nIdx = 0;
|
||||
|
||||
/*
|
||||
strQuery += $"WHERE (";
|
||||
|
||||
foreach (Int64 npKey in vnpSummaryNo)
|
||||
{
|
||||
strQuery += $"X.[No] = {npKey} ";
|
||||
|
||||
if (vnpAccKeys.Count - 1 > nIdx)
|
||||
strQuery += " OR ";
|
||||
|
||||
nIdx++;
|
||||
}
|
||||
|
||||
strQuery += $") ";
|
||||
*/
|
||||
|
||||
strQuery += $"WHERE X.[No] IN (";
|
||||
|
||||
foreach (Int64 npKey in vnpSummaryNo)
|
||||
{
|
||||
strQuery += $"{npKey}";
|
||||
|
||||
if (vnpSummaryNo.Count - 1 > nIdx)
|
||||
strQuery += ", ";
|
||||
|
||||
nIdx++;
|
||||
}
|
||||
|
||||
strQuery += $") ";
|
||||
|
||||
|
||||
strQuery += $"GROUP BY Y.[StepID], X.[StepVersion] ORDER BY Y.[StepID];";
|
||||
|
||||
if (bLongTermTableUse) SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
|
||||
else SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
|
||||
DataTable GetRawResult(DetailTestDataCollection data)
|
||||
{
|
||||
DataTable dtResult = new DataTable();
|
||||
string strQuery = string.Empty;
|
||||
|
||||
if (data == null)
|
||||
return dtResult;
|
||||
|
||||
|
||||
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
|
||||
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
|
||||
|
||||
DbDataReader dtReader = SQLCmd.ExecuteReader();
|
||||
|
||||
dtResult.Load(dtReader);
|
||||
|
||||
dtReader.Close();
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user