using System.Collections.Generic;
|
using System.Linq;
|
using System.Windows.Forms;
|
using TProduct.Model;
|
|
|
namespace TProduct.WinFrmUI.TValve
|
{
|
/// <summary>
|
/// 性能测试
|
/// </summary>
|
public partial class FeatTestIngMainPage
|
{
|
/// <summary>
|
/// 赋值
|
/// </summary>
|
/// <param name="projectItem"></param>
|
/// <param name="item"></param>
|
/// <param name="workBench"></param>
|
/// <param name="workBenchParas"></param>
|
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<TProduct.Model.ValveFeatTestRecord> allRecords4Ds =
|
new BLL.ValveFeatTestRecord().GetByTestItem(projectItem);
|
this._allRecords = new List<TProduct.Model.ValveFeatTestRecordViewModel>();
|
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));
|
}
|
/// <summary>
|
/// 设置测点
|
/// </summary>
|
/// <param name="list"></param>
|
/// <returns></returns>
|
private List<TProduct.Model.WorkBenchMonitorPoint> ResetMonitorPoint(
|
List<TProduct.Model.WorkBenchMonitorPoint> 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;
|
}
|
|
/// <summary>
|
/// 初始化操作注意事项
|
/// </summary>
|
//List<Model.TestNoticeRecordView> _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<TestNoticeRecordView>();
|
|
//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;
|
}
|
|
/// <summary>
|
/// 初始化Comm链接控件
|
/// </summary>
|
/// <param name="ComPortNameList"></param>
|
/// <returns></returns>
|
private bool InitialCommConnectCtrl(List<string> 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<TProduct.Model.WorkBenchMonitorPoint> 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<long, TProduct.WinFrmUI.TBase.UserGaugeControl>();
|
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);
|
}
|
|
|
|
|
}
|
}
|