Files
CPXV2/CPXV2 TRA/SystemX.Product.CP.TRA/UIControl/UcTRADetailOverview.cs
2024-06-26 10:30:00 +09:00

379 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using SystemX.Product.TRA.DataManager;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using SystemX.Product.TRA.UIControl.Helper;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using SystemX.Product.ALIS.Interface;
using static SystemX.Net.Platform.Common.Util.LogMessage;
using SystemX.Net.Platform.Common.Util;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.TRA.UIControl
{
public partial class UcTRADetailOverview : UcTRABaseView
{
public enum eColHide
{
TestlistNo,
StepVersion,
RN
}
DMDetailOverview DataManager { get; set; }
public string GetUseQuery()
{
return DataManager.strDetailOverviewUseQuery;
}
public OverviewSearchOption Option { get; set; }
public delegate void evtDataSelectHandler(SelectedDataCollection data);
public event evtDataSelectHandler OnSelect;
public DateTime SearchStart { get; set; }
public DateTime SearchEnd { get; set; }
private IChildController refChildInterface;
private string GridViewGetActiveFilterText;
private bool bProductMergeOption = false;
private int nMergeDataCnt;
private string[] strMergeReqIDs;
public UcTRADetailOverview(IChildController getChildControl, bool bAllowMerge = false, bool bAutoFilterRow = false)
{
ContentsType = eContents.DetailOverview;
refChildInterface = getChildControl;
this.ContextMenuStrip = base.contextMenuStripTest;
this.ContextMenuStrip.ItemClicked += contextMenuStrip_ItemClicked;
base.toolStripMenuItemBeginRelDate.Click += contextMenuStripBeginRelDate_ItemClicked;
SetMenuEnabled(ContentsType);
bProductMergeOption = bAllowMerge;
InitializeComponent();
gridViewMain.OptionsView.AllowCellMerge = true;
gridViewMain.OptionsView.ShowAutoFilterRow = bAutoFilterRow;
}
~UcTRADetailOverview()
{
this.ContextMenuStrip.ItemClicked -= contextMenuStrip_ItemClicked;
base.toolStripMenuItemBeginRelDate.Click -= contextMenuStripBeginRelDate_ItemClicked;
}
private void contextMenuStripBeginRelDate_ItemClicked(object sender, EventArgs e)
{
int nTag = Convert.ToInt32(((ToolStripMenuItem)sender).Tag);
switch (nTag)
{
case 7:
{
string GetDateValue = base.toolStripTextBoxBeginRelDate.Text;
int nGetDateValue = int.MaxValue;
if (int.TryParse(GetDateValue, out nGetDateValue))
{
if (nGetDateValue > 7)
nGetDateValue = 7;
if (nGetDateValue < -7)
nGetDateValue = -7;
ViewData(nGetDateValue);
}
}
break;
}
}
private void contextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
ToolStripItem tsp = e.ClickedItem;
int nTag = Convert.ToInt32(tsp.Tag);
switch (nTag)
{
case 0:
refChildInterface.SetOverview();
break;
case 1:
refChildInterface.SetHistoryView();
break;
case 2:
break;
case 3:
break;
case 4:
refChildInterface.SetNgHistView(ContentsType);
break;
}
}
public void SetSQLConnection(eSelectDataView SelectView, eOverviewModelNameInfo SelectInfo, IDataBaseController getDBController)
{
DataManager = new DMDetailOverview(SelectView, SelectInfo, getDBController);
}
public void SetGridViewStyle()
{
gridViewMain.BeginUpdate();
foreach (GridColumn gc in gridViewMain.Columns)
{
if (gc.FieldName.CompareTo("TestDate") == 0)
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
else if (gc.FieldName.CompareTo("Host") == 0)
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
else
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
}
gridViewMain.EndUpdate();
gridViewMain.ActiveFilterString = GridViewGetActiveFilterText;
}
public void ViewData(int nGetDateValue = int.MaxValue)
{
Option = new OverviewSearchOption();
Option.DisplayByStation = !refChildInterface.GetOverviewMergeState();
DataTable dtResult = DataManager.GetDataView(refChildInterface.GetSelectDataOverView(nGetDateValue), Option);
GridViewGetActiveFilterText = gridViewMain.ActiveFilterString;
gridControlMain.DataSource = null;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.DataSource = dtResult;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.ForceInitialize();
gridViewMain.PopulateColumns(dtResult);
foreach (string strName in Enum.GetNames(typeof(eColHide)))
{
if (gridViewMain.Columns.ColumnByFieldName(strName) != null)
gridViewMain.Columns[strName].Visible = false;
}
gridControlMain.Update();
SetGridViewStyle();
}
public void ViewData(SelectedDataCollection data, bool bMergeByPartNumber = false)
{
Option = new OverviewSearchOption();
Option.DisplayByStation = !bMergeByPartNumber;
DataTable dtResult = DataManager.GetDataView(data, Option);
if(bProductMergeOption)
{
nMergeDataCnt = DataManager.dtSubRaw.Rows.Count;
strMergeReqIDs = new string[nMergeDataCnt];
for (int i = 0; i < nMergeDataCnt; i++)
strMergeReqIDs[i] = DataManager.dtSubRaw.Rows[i]["TestListCntID"].ToString();
}
GridViewGetActiveFilterText = gridViewMain.ActiveFilterString;
gridControlMain.DataSource = null;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.DataSource = dtResult;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.ForceInitialize();
gridViewMain.PopulateColumns(dtResult);
foreach (string strName in Enum.GetNames(typeof(eColHide)))
{
if (gridViewMain.Columns.ColumnByFieldName(strName) != null)
gridViewMain.Columns[strName].Visible = false;
}
gridControlMain.Update();
SetGridViewStyle();
}
public bool DoSelect(DataRow dtRow)
{
if (dtRow == null)
return false;
bool bDataCheckResult = true;
try
{
string strDate = dtRow[DMDetailOverview.eColList.TestDate.ToString()].ToString();
string strStartTime = dtRow[DMDetailOverview.eColList.FirstTestTime.ToString()].ToString();
string strEndTime = dtRow[DMDetailOverview.eColList.FinalTestTime.ToString()].ToString();
DateTime dtDate = DateTime.Parse(strDate);
strStartTime = dtDate.ToShortDateString() + " " + strStartTime;
strEndTime = dtDate.ToShortDateString() + " " + strEndTime;
DateTime dtStart = DateTime.Parse(strStartTime);
DateTime dtEnd = DateTime.Parse(strEndTime);
//dtEnd = dtEnd.AddHours(-dtStart.Hour);
//dtEnd = dtEnd.AddHours(23.9999);
//string strStnName, string strHostID, string strSectionID, string strTestType,
//string strProdNo, string strTestCode, string strParentNo, string strProdCode,
//string strFileVer, string strStepVer)
string strTestListCntID = string.Empty;
if (bProductMergeOption == false)
strTestListCntID = dtRow[DMDetailOverview.eColList.TestListCntID.ToString()].ToString();
SelectedDataCollection selData = new SelectedDataCollection(
SearchStart,
SearchEnd,
dtStart,
dtEnd,
Option.DisplayByStation ? dtRow[DMDetailOverview.eColList.StationName.ToString()].ToString() : string.Empty,
Option.DisplayByStation ? dtRow[DMDetailOverview.eColList.Host.ToString()].ToString() : string.Empty,
Option.DisplayByStation ? dtRow[DMDetailOverview.eColList.Section.ToString()].ToString() : string.Empty,
dtRow[DMDetailOverview.eColList.TestType.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.ProductNo.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.TestCode.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.ParentNo.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.FileCode.ToString()].ToString(),
dtRow[DMOverview.eColList.TestListFileNo.ToString()].ToString(),
dtRow[DMOverview.eColList.TestListVariantNo.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.FileVersion.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.StepVersion.ToString()].ToString(),
strTestListCntID);
if (bProductMergeOption)
{
selData.SetCountRequestID(nMergeDataCnt);
selData.CopyReqIDs(strMergeReqIDs);
}
refChildInterface.AnnounceContentsType(ContentsType);
OnSelect(selData);
}
catch (Exception e)
{
MessageOutput.ConsoleWrite($"Detail Overview DoSelect Error: {e.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
bDataCheckResult = false;
}
finally
{
;//
}
return bDataCheckResult;
}
private DataRow GetRowInfo(object Viewer, int nRowHndl)
{
DataRow dtRow = null;
try
{
GridView view = Viewer as GridView;
var dvRow = view.GetRow(nRowHndl);
dtRow = (dvRow as DataRowView).Row;
}
catch
{
dtRow = null;
}
return dtRow;
}
private void gridViewMain_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
int nRowHndl = e.RowHandle;
if (nRowHndl < 0)
return;
DoSelect(GetRowInfo(sender, nRowHndl));
}
private void gridViewMain_RowStyle(object sender, RowStyleEventArgs e)
{
GridView view = sender as GridView;
if (view.FocusedRowHandle == e.RowHandle)
{
GridViewInfo viewInfo = gridViewMain.GetViewInfo() as GridViewInfo;
e.Appearance.Assign(viewInfo.PaintAppearance.FocusedRow);
e.HighPriority = true;
}
}
private void gridViewMain_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
GridHitInfo hInfo = gridViewMain.CalcHitInfo(gridControlMain.PointToClient(Cursor.Position));
if (hInfo.RowInfo != null)
{
int nGetRowHandle = hInfo.RowInfo.RowHandle;
DoSelect(GetRowInfo(gridViewMain, nGetRowHandle));
}
}
}
private void gridViewMain_RowCellClick(object sender, RowCellClickEventArgs e)
{
int nClickCnt = e.Clicks;
if (nClickCnt < 2)
return;
int nRowHndl = e.RowHandle;
if (nRowHndl < 0)
return;
if(DoSelect(GetRowInfo(sender, nRowHndl)))
refChildInterface.SetHistoryView();
}
}
}