using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using TProduct.Model;
namespace TProduct.WinFrmUI.TValve
{
///
/// 性能测试
///
public partial class FeatTestIngMainPage
{
///
/// 赋值
///
///
///
///
///
public void SetBindingData(
TProduct.Model.ProductMainExValve valve,
TProduct.Model.PartBase part,
TProduct.Model.TestProjectItemView projectItem,
TProduct.Model.WorkBenchBase workBench)
{
if (workBench == null)
{
MessageBox.Show("还未设置workBench参数");
return;
}
if (projectItem == null)
{
MessageBox.Show("还未设置item参数");
return;
}
if (valve == null)
{
MessageBox.Show("还未设置valve参数");
return;
}
if (part == null)
{
MessageBox.Show("还未设置part参数");
return;
}
if (valve.Dia <= 0)
{
MessageBox.Show("还未设置阀的口径");
return;
}
this._workBenchInfo = workBench;
this._testItem = projectItem;
this._currentValve = valve;
this._currentPart = part;
this._valveDia = valve.Dia;
this._currentValveSeries = new BLL.ProductSeries().GetByID(this._currentValve.SeriesID);
if (this._currentValveSeries == null)
{
MessageBox.Show("当前阀对应系列未找到");
return;
}
if (TProduct.CorpConfig.Instance.CorpFlag != eCorpFlag.WH701)
{
bbi刷新状态信息.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
}
else
{
_isRefreshAdditionInfo = true;
}
bsiOperateInfo.Caption = "";
bbiPumpName.Caption = string.Format("阀ID:{0},型号:{1}", valve.ID, valve.Name);
//初始化操作提示
InitialNoticeList();
//初始化通讯连接器
if (!InitialLink())
{
//MessageBox.Show("初始化测点失败");
return;
}
//从数据库中获取以前的测试数据
List allRecords4Ds =
new BLL.ValveFeatTestRecord().GetByTestItem(projectItem);
this._allRecords = new List();
if (allRecords4Ds != null)
{
foreach (var r in allRecords4Ds)
{
this._allRecords.Add(new TProduct.Model.ValveFeatTestRecordViewModel(r) { MonitorRecordList = new TProduct.Model.MonitorRecord4DsList(r.MonitorRecords) });
}
}
//数据记录辅助类(放在前面)
_monitorValveIngRecordHelper = new MonitorValveIngRecordHelper();
_monitorValveIngRecordHelper.Initial(
TProduct.Model.eProductType.Valve,
this._currentValveSeries.ID,
this._currentValve.ID,
this._currentPart.ID,
projectItem,
this._workBenchInfo,
_allMonitorPointList);
//初始化耐久测试
InitialDurabilityTest();
//
InitialJudgeItem();
//
InitialGuages(_allMonitorPointList);
//
if (!InitialCalcDialog(valve, workBench, projectItem, _allMonitorPointList))
{
return;
}
//
InitialMonitorGrid(_allMonitorPointList);
//修正点表和实时数据控件
InitialCorrentPtGrid();
//
InitialAutoTestGrid(_allMonitorPointList);
//
IntialMainChart();
//
IntialPartInfoCtrl();
//测试日志
InitialTestLogCtrl();
//记录操控
InitialRecordOperateCtrl();
//三维模型
InitialModel3d();
//通讯日志(放在最后)
InitialLinkLogCtrl();
TProduct.LogHelper.Test(string.Format("开始进行性能测试,泵型号:{0}", valve.Name));
}
///
/// 设置测点
///
///
///
private List ResetMonitorPoint(
List list)
{
if (list == null || list.Count() == 0)
{
return null;
}
//设置 压力表量程
var instrumentInfo = this._testItem.InstrumentInfo;
if (instrumentInfo != null && instrumentInfo.OutletPressureMeterID > 0)
{
var meter = new BLL.PressureMeter().GetByID(instrumentInfo.OutletPressureMeterID);
if (meter != null)
{
foreach (var m in list)
{
if (m.MonitorType != Model.eMonitorType.压力)
{
continue;
}
if (m.AnalogParas == null)
m.AnalogParas = new Model.AnalogMonitorPointParas();
m.AnalogParas.RangeMax = meter.RangeMax;
m.AnalogParas.RangeMin = meter.RangeMin;
}
}
}
return list;
}
///
/// 初始化操作注意事项
///
//List _allNoticeRecordList = null;
private void InitialNoticeList()
{
//bbi注意事项.Enabled = false;
//var productStyle = new BLL.ProductStyle().GetByID(this._currentPumpSeries.ProductStyleID);
//if (productStyle == null)
// return;
//var notice_matter = new BLL.TestNoticeMattter().GetDefaultByProductType(productStyle.ID);
//if (notice_matter == null)
// return;
//var details = new BLL.TestNoticeItem().GetListByMatterID(notice_matter.ID);
//if (details == null || details.Count == 0)
// return;
//var records = new BLL.TestNoticeRecord().GetByTestItem(this._testItem);
//_allNoticeRecordList = new List();
//foreach (Model.TestNoticeItemEx detail in details)
//{
// var v = new TestNoticeRecordView(detail);
// v.TestItemID = this._testItem.ItemID;
// if (records != null && records.Count > 0)
// {
// var r = records.Find(x => x.NoticeItemID == detail.ID);
// if (r != null)
// {
// v.RecordID = r.ID;
// v.Value = r.Value;
// v.DsValue = r.Value;
// v.Note = r.Note;
// v.DsNote = r.Note;
// }
// }
// _allNoticeRecordList.Add(v);
//}
//bbi注意事项.Enabled = true;
}
///
/// 初始化Comm链接控件
///
///
///
private bool InitialCommConnectCtrl(List ComPortNameList)
{
if (_commCtrl == null)
{
if (ComPortNameList.Count > 1)
{
var multiComStepCtrl = new TProduct.WinFrmUI.TBase.CommConMultiCtrl();
multiComStepCtrl.Name = "CommConSingleCtrl";
multiComStepCtrl.Dock = DockStyle.Fill;
// 修改了Comm链接
multiComStepCtrl.OnChangeConnectStatus += this.ChangeCommConnectStatus;
panelComm.Controls.Clear();
panelComm.Controls.Add(multiComStepCtrl);
_commCtrl = multiComStepCtrl;
string error_info;
var ret = multiComStepCtrl.InitialData(ComPortNameList, out error_info);
if (!ret)
{
MessageBox.Show(error_info);
}
}
else if (ComPortNameList.Count == 1)
{
var singleComStepCtrl = new TProduct.WinFrmUI.TBase.CommConSingleCtrl();
singleComStepCtrl.Name = "CommConSingleCtrl";
singleComStepCtrl.Dock = DockStyle.Fill;
// 修改了Comm链接
singleComStepCtrl.OnChangeConnectStatus += this.ChangeCommConnectStatus;
panelComm.Controls.Clear();
panelComm.Controls.Add(singleComStepCtrl);
_commCtrl = singleComStepCtrl;
string error_info;
var ret = singleComStepCtrl.InitialData(ComPortNameList.First(), out error_info);
if (!ret)
{
MessageBox.Show(error_info);
}
}
}
return true;
}
//初始化仪表控件
private void InitialGuages(
List allMonitorList)
{
if (allMonitorList == null || allMonitorList.Count == 0)
return;
var sort_allMonitorList = (from x in allMonitorList orderby x.SortCode descending select x).ToList();
_allMonitorGaugeDict = new Dictionary();
this.gaugeDockPanel.Controls.Clear();
for (int i = 0; i < sort_allMonitorList.Count(); i++)
{
var monitor = sort_allMonitorList[i];
if (monitor.DispInPanel == 0)
continue;
var gaugeControl = TProduct.WinFrmUI.TBase.UserGaugeControl.Build(TProduct.UserSetting.Setting.Disp.GaugeStyle);
gaugeControl.SetBindingData(
Model.eProductType.Valve,
this._testItem.TestType,
monitor,
this._testItem.AlarmSetting);
gaugeControl.Padding = new System.Windows.Forms.Padding(10, 0, 0, 10);
//sControl.Margin = new System.Windows.Forms.Padding(10, 0, 0, 10);
//sControl.Height = 100;
gaugeControl.Width = 175;
gaugeControl.Dock = DockStyle.Left;
if (monitor.MonitorType == Model.eMonitorType.耐久时间)
{
if (_durabilityTestTimeHelper == null)
{
continue;
}
//
_durabilityTestTimeHelper.OnRefreshMintueTime += (mintue) =>
{
gaugeControl.RefreshRecordValue(mintue);
};
var totalMinute = _durabilityTestTimeHelper.GetTotalMintueTime();
gaugeControl.InitialRecordValue(totalMinute);
}
//if(monitor.MonitorType == Model.eMonitorType.转速)
//{
// if(monitor.SourceType == Model.eMonitorPointSourceType.额定参数)
// sControl.InitialRecordValue(this._currentValve.Ratedn.Value);
//}
this.gaugeDockPanel.Controls.Add(gaugeControl);
//添加到字典中
_allMonitorGaugeDict[monitor.ID] = gaugeControl;
}
//if (allMonitorList.Count > 5)
//{//两排
// splitContainerControlMain.SplitterPosition = 200;
//}
}
private void IntialMainChart()
{
if (_chartMainCtrl == null)
{
_chartMainCtrl = new ChartValveFeatCurveCtrl();
_chartMainCtrl.Name = "ChartFeatTestCtrl";
_chartMainCtrl.Dock = DockStyle.Fill;
this.tableLayoutPanel1.Controls.Add(this._chartMainCtrl, 0, 1);
this.chartBarCtrl.cmbSetAction += (cmd, tag) =>
{
if (cmd == "设置坐标")
{
this.SetCoordinateByDlg();
}
if (cmd == "显示功率线")
{
// this._chartMainCtrl.SetPowerDisp(Convert.ToBoolean(tag));
}
if (cmd == "显示判定点")
{
// this._chartMainCtrl.SetJudgePointDisp(Convert.ToBoolean(tag));
}
if (cmd == "显示装置曲线")
{
// this._chartMainCtrl.SetEquipCurveDisp(Convert.ToBoolean(tag));
}
if (cmd == "查询参数")
{
// this._chartMainCtrl.SetQueryLineDisp1(Convert.ToBoolean(tag));
}
};
}
if (!string.IsNullOrEmpty(this._testItem.CoordinateParas))
{
_chartMainCtrl.SetCoordinateParas(new TProduct.Model.ValveCoordinateParas(_testItem.CoordinateParas), false);
}
_chartMainCtrl.SetRecordPoint(this._allRecords);
}
private void SetCoordinateByDlg()
{
var _coordinateParas = _chartMainCtrl.GetCoordinateParas();
SetValveCoordinateDlg theSetDlg = new SetValveCoordinateDlg();
theSetDlg.SetCoordinate(_coordinateParas);
theSetDlg.OnChangedCoord += ChangedCoordHandler;
theSetDlg.ShowDialog();
}
private void ChangedCoordHandler(TProduct.Model.ValveCoordinateParas coord)
{
_chartMainCtrl.SetCoordinateParas(coord, true);
if (_chartMainCtrl.OnChangeCoordinate != null)
_chartMainCtrl.OnChangeCoordinate.Invoke(coord);
}
}
}