using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using TProduct.Model; namespace TProduct.WinFrmUI.TPump { /// /// 性能测试 /// public partial class FeatTestViewMainPage : DocumentPage { /// /// /// /// /// public void SetBindingData( TProduct.Model.ProductMainExPumpPart pumpExPart, TProduct.Model.TestProjectItemView item) { TProduct.Model.ProductMainExPump pump = new Model.ProductMainExPump(pumpExPart); var part = new BLL.PartBase().GetByID(pumpExPart.PartID); this.SetBindingData( pump, part, new List() { item }); } /// /// 赋值 /// /// /// /// /// public void SetBindingData( TProduct.Model.ProductMainExPump pump, TProduct.Model.PartBase part, List items) { if (items == null || items.Count() == 0) { MessageBox.Show("还未设置project参数"); return; } if (pump != null) { this._currentPump = pump; this._currentPart = part; this._ratedParas = TProduct.Model.RatedParas4Pump.ToModel(pump.RatedParas); if (_currentPump.MotorMainID.HasValue && _currentPump.MotorMainID > 0) { _currentMotor = new BLL.ProductMotor().GetExByProductID((long)_currentPump.MotorMainID); } this._currentPumpSeries = new BLL.ProductSeries().GetByID(this._currentPump.SeriesID); if (this._currentPumpSeries == null) { MessageBox.Show("当前泵对应系列未找到"); return; } } this._testProject = new TestProjectBase(items.First()); this._featTestItem = items.Find(x => x.TestType == eTestType.FeatTest); this._testItems = items; this._workBenchInfo = new BLL.WorkBenchBase().GetByID(this._featTestItem.BenchID); if (_workBenchInfo == null) { MessageBox.Show("还未设置测试台参数"); return; } if (!string.IsNullOrEmpty(_featTestItem.ProjectName)) this.PageTitle.Caption = "泵测试:" + _featTestItem.ProjectName; else if (!string.IsNullOrEmpty(_featTestItem.ProjectCode)) this.PageTitle.Caption = "泵测试:" + _featTestItem.ProjectCode; // 初始化监控点(会根据当前设置修改 监控点 的信息) this._allMonitorPointList = ResetMonitorPoint(new BLL.WorkBenchMonitorPoint().GetByBenchID(_workBenchInfo.ID)); // if (!InitialCalcDialog(this._currentPumpSeries, this._currentPump, _currentMotor, _workBenchInfo, this._featTestItem, _allMonitorPointList)) { return; } //从数据库中获取以前的测试数据 var allRecords4Ds = new BLL.PumpFeatTestRecord().GetByTestItem(this._featTestItem); this._allRecords = new List(); if (allRecords4Ds != null && allRecords4Ds.Count > 0) { foreach (var r in allRecords4Ds) { this._allRecords.Add(new PumpFeatTestRecordViewModel(r) { MonitorRecordList = new MonitorRecord4DsList(r.MonitorRecords) }); } if (this._featTestItem.PointNumber != allRecords4Ds.Count) { this._featTestItem.PointNumber = allRecords4Ds.Count; new BLL.TestProjectItem().UpdatePointNumberOnly(this._featTestItem.ItemID, this._featTestItem.PointNumber); } } else { if (this._featTestItem.PointNumber != 0) { this._featTestItem.PointNumber = 0; new BLL.TestProjectItem().UpdatePointNumberOnly(this._featTestItem.ItemID, this._featTestItem.PointNumber); } } // InitialJudgeItem(); // InitialMonitorGrid( ); // InitialTestInfoCtrl(); // IntialPartInfoCtrl(); //放在初始化性能图表之前, 因为需要此步骤,获取汽蚀点 InitialNpshTestInfo(items); // IntialMainChart(); //合格判断,放在后面 JudgeTestResult(); // InitialModel3d(); // InitialDurabilityTest(); //工艺图 InitialProcessDrawing(); } /// /// 设置测点 /// /// /// private List ResetMonitorPoint( List list) { if (list == null || list.Count() == 0) { return null; } // var instrumentInfo = this._featTestItem.InstrumentInfo; if (instrumentInfo != null) { #region 出口压力 var out_press_index = list.FindIndex(x => x.MonitorType == Model.eMonitorType.压力 && x.Property == TProduct.Model.MonitorTypeProperty.出口); if (out_press_index >= 0) { var monitor_outletPress = list[out_press_index]; //设置出口压力表量程 if (instrumentInfo.OutletPressureMeterID > 0) { var meter = new BLL.PressureMeter().GetByID(instrumentInfo.OutletPressureMeterID); if (meter != null) { if (monitor_outletPress.AnalogParas == null) monitor_outletPress.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_outletPress.AnalogParas.RangeMax = meter.RangeMax; monitor_outletPress.AnalogParas.RangeMin = meter.RangeMin; list[out_press_index] = monitor_outletPress; } } if (instrumentInfo.OutletPressureMeterPipeDia > 0) {// 暂时用不到, 都是从测点或者泵上获取的,代码暂时保留 if (monitor_outletPress.AnalogParas == null) monitor_outletPress.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_outletPress.PipeDia = instrumentInfo.OutletPressureMeterPipeDia; } if (instrumentInfo.InletPressureMeterElevation != 0) { if (monitor_outletPress.AnalogParas == null) monitor_outletPress.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_outletPress.Elevation = instrumentInfo.OutletPressureMeterElevation; } //1:来源泵口径 if (TProduct.UserSetting.Setting.PumpTest.OutletPressMonitorDiaStatus == 1 && _ratedParas != null) { if (this._ratedParas.OutletDia.HasValue && _ratedParas.OutletDia > 0) { if (monitor_outletPress.AnalogParas == null) monitor_outletPress.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_outletPress.PipeDia = this._ratedParas.OutletDia.Value; } } } #endregion #region 进口压力 var inlet_press_index = list.FindIndex(x => x.MonitorType == Model.eMonitorType.压力 && x.Property == TProduct.Model.MonitorTypeProperty.进口); if (inlet_press_index >= 0) { var monitor_inletPress = list[inlet_press_index]; if (instrumentInfo.InletPressureMeterID > 0) { var meter = new BLL.PressureMeter().GetByID(instrumentInfo.InletPressureMeterID); if (meter != null) { if (monitor_inletPress.AnalogParas == null) monitor_inletPress.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_inletPress.AnalogParas.RangeMax = meter.RangeMax; monitor_inletPress.AnalogParas.RangeMin = meter.RangeMin; list[inlet_press_index] = monitor_inletPress; } } if (instrumentInfo.InletPressureMeterPipeDia > 0) {// 暂时用不到, 都是从测点或者泵上获取的,代码暂时保留 if (monitor_inletPress.AnalogParas == null) monitor_inletPress.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_inletPress.PipeDia = instrumentInfo.InletPressureMeterPipeDia; } if (instrumentInfo.InletPressureMeterElevation != 0) { if (monitor_inletPress.AnalogParas == null) monitor_inletPress.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_inletPress.Elevation = instrumentInfo.InletPressureMeterElevation; } //1:来源泵口径 if (TProduct.UserSetting.Setting.PumpTest.InletPressMonitorDiaStatus == 1 && _ratedParas != null) { if (this._ratedParas.InletDia.HasValue && _ratedParas.InletDia > 0) { if (monitor_inletPress.AnalogParas == null) monitor_inletPress.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_inletPress.PipeDia = this._ratedParas.InletDia.Value; } } } //清水池水位的标高也放在进口压力设置中 var water_level_index = list.FindIndex(x => x.MonitorType == Model.eMonitorType.水位); if (water_level_index >= 0) { var monitor_WaterLevel = list[water_level_index]; if (instrumentInfo.InletPressureMeterElevation != 0) { monitor_WaterLevel.Elevation = instrumentInfo.InletPressureMeterElevation; } } #endregion #region 流量 if (instrumentInfo.FlowMeterRangeMax > instrumentInfo.FlowMeterRangeMin) { var flow_index = list.FindIndex(x => x.MonitorType == Model.eMonitorType.流量); if (flow_index >= 0) { var monitor_flow = list[flow_index]; if (monitor_flow.AnalogParas == null) monitor_flow.AnalogParas = new Model.AnalogMonitorPointParas(); monitor_flow.AnalogParas.RangeMax = instrumentInfo.FlowMeterRangeMax; monitor_flow.AnalogParas.RangeMin = instrumentInfo.FlowMeterRangeMin; } } #endregion } return list; } } }