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); } } }