From 7b65f86343ca014b12894f09b7d62e8b5ac1f95d Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期五, 24 一月 2025 09:15:11 +0800 Subject: [PATCH] 单工况损失曲线增加上下游追踪和高亮显示 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs | 375 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 308 insertions(+), 67 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs index 24280a3..243bc02 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/SimulationPropertyCtrl.cs @@ -1,6 +1,4 @@ -锘縰sing HStation.WinFrmUI.PhartRelation; -using HStation.WinFrmUI.Xhs; -using Yw.Model; +锘縰sing Yw.Model; namespace HStation.WinFrmUI { @@ -20,10 +18,9 @@ this.hydroVisualPropertyCtrl1.PropertyValueChangedEvent += HydroVisualPropertyCtrl1_PropertyValueChangedEvent; this.hydroVisualPropertyCtrl1.MarkPropertyValueChangedEvent += HydroVisualPropertyCtrl1_MarkPropertyValueChangedEvent; this.hydroVisualPropertyCtrl1.GradingPropertyValueChangedEvent += HydroPVisualPropertyCtrl1_GradingPropertyValueChangedEvent; - this.hydroVisualPropertyCtrl1.FlowEffectPropertyValueChangedEvent += HydroVisualPropertyCtrl1_FlowEffectPropertyValueChangedEvent; } - #region 浜嬩欢闆� + #region 浜嬩欢闆嗗悎 /// <summary> /// 鏋勪欢鏌ョ湅浜嬩欢 @@ -52,14 +49,35 @@ /// </summary> public event Action<HydroVisualInfo> GradingPropertyValueChangedEvent; - /// <summary> - /// 姘存祦鍔ㄧ敾灞炴�у�兼敼鍙樹簨浠� - /// </summary> - public event Action<HydroVisualInfo> FlowEffectPropertyValueChangedEvent; + private HydroChangeHelper _changeHelper = null;//鏀瑰彉杈呭姪绫� + private HydroPropStatusHelper _propStatusHelper = null;//灞炴�х姸鎬佽緟鍔╃被 #endregion + /// <summary> + /// 鍒濆鍖栨暟鎹� + /// </summary> + public void InitialData + ( + HydroChangeHelper changeHelper, + HydroPropStatusHelper propStatusHelper + ) + { + _changeHelper = changeHelper; + _propStatusHelper = propStatusHelper; + this.hydroVisualPropertyCtrl1.InitialData(changeHelper, propStatusHelper); + } + #region 灞炴�ц祴鍊� + + /// <summary> + /// 鍏佽缂栬緫 + /// </summary> + public bool AllowEdit + { + get { return this.hydroVisualPropertyCtrl1.AllowEdit; } + set { this.hydroVisualPropertyCtrl1.AllowEdit = value; } + } /// <summary> /// 閫夋嫨瀵硅薄 @@ -69,6 +87,11 @@ get { return this.hydroVisualPropertyCtrl1.SelectedObject; } set { this.hydroVisualPropertyCtrl1.SelectedObject = value; } } + + /// <summary> + /// 璁$畻缁撴灉 + /// </summary> + public Func<HydroCalcuResult> CalcuResult { get; set; } #endregion @@ -104,7 +127,7 @@ this.hydroVisualPropertyCtrl1.UpdateRows(); } - #endregion 灞炴�ф洿鏂� + #endregion #region 浜嬩欢瀹炵幇 @@ -120,125 +143,310 @@ case Yw.Hydro.ParterCatalog.Tank: { var tankViewModel = vm as HydroTankViewModel; - var input = HydroMatchingHelper.Create(tankViewModel.Vmo, tankViewModel.HydroInfo); - var dlg = new TankSingleMatchingDlg(); + var input = HydroMatchingHelper.Create(tankViewModel); + var dlg = new AssetsTankSingleMatchingDlg(); dlg.ReloadDataEvent += (output) => { - HydroMatchingHelper.Apply(tankViewModel.HydroInfo, tankViewModel.Vmo, output); - tankViewModel.UpdateProperty(); + HydroMatchingHelper.Apply(tankViewModel, output, _changeHelper, _propStatusHelper); this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); }; dlg.SetBindingData(input); dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Waterbox: { var tankViewModel = vm as HydroTankViewModel; - var input = HydroMatchingHelper.Create(tankViewModel.Vmo, tankViewModel.HydroInfo); - var dlg = new TankSingleMatchingDlg(); + var input = HydroMatchingHelper.Create(tankViewModel); + var dlg = new AssetsTankSingleMatchingDlg(); dlg.ReloadDataEvent += (output) => { - HydroMatchingHelper.Apply(tankViewModel.HydroInfo, tankViewModel.Vmo, output); - tankViewModel.UpdateProperty(); + HydroMatchingHelper.Apply(tankViewModel, output, _changeHelper, _propStatusHelper); this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); }; dlg.SetBindingData(input); dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Blunthead: { - + var bluntheadViewModel = vm as HydroBluntheadViewModel; + var input = HydroMatchingHelper.Create(bluntheadViewModel); + var dlg = new AssetsBluntheadSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(bluntheadViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Elbow: { var elbowViewModel = vm as HydroElbowViewModel; - var input = HydroMatchingHelper.Create(elbowViewModel.Vmo, elbowViewModel.HydroInfo); - var dlg = new ElbowSingMatchingDlg(); + var input = HydroMatchingHelper.Create(elbowViewModel); + var dlg = new AssetsElbowSingleMatchingDlg(); dlg.ReloadDataEvent += (output) => { - HydroMatchingHelper.Apply(elbowViewModel.HydroInfo, elbowViewModel.Vmo, output); - elbowViewModel.UpdateProperty(); + HydroMatchingHelper.Apply(elbowViewModel, output, _changeHelper, _propStatusHelper); this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); }; dlg.SetBindingData(input); dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Threelink: { - + var threelinkViewModel = vm as HydroThreelinkViewModel; + var input = HydroMatchingHelper.Create(threelinkViewModel); + var dlg = new AssetsThreelinkSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(threelinkViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Fourlink: { - + var fourlinkViewModel = vm as HydroFourlinkViewModel; + var input = HydroMatchingHelper.Create(fourlinkViewModel); + var dlg = new AssetsFourlinkSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(fourlinkViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Meter: { - + var meterViewModel = vm as HydroMeterViewModel; + var input = HydroMatchingHelper.Create(meterViewModel); + var dlg = new AssetsMeterSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(meterViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Flowmeter: { - + var flowmeterViewModel = vm as HydroFlowmeterViewModel; + var input = HydroMatchingHelper.Create(flowmeterViewModel); + var dlg = new AssetsFlowmeterSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(flowmeterViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Pressmeter: { - + var pressmeterViewModel = vm as HydroPressmeterViewModel; + var input = HydroMatchingHelper.Create(pressmeterViewModel); + var dlg = new AssetsPressmeterSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(pressmeterViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Nozzle: { - + var nozzleViewModel = vm as HydroNozzleViewModel; + var input = HydroMatchingHelper.Create(nozzleViewModel); + var dlg = new AssetsSprinklerSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(nozzleViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Hydrant: { - + var hydrantViewModel = vm as HydroHydrantViewModel; + var input = HydroMatchingHelper.Create(hydrantViewModel); + var dlg = new AssetsHydrantSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(hydrantViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + + case Yw.Hydro.ParterCatalog.Cooling: + { + var coolingViewModel = vm as HydroCoolingViewModel; + var input = HydroMatchingHelper.Create(coolingViewModel); + var dlg = new AssetsCoolingSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(coolingViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); + } + break; + case Yw.Hydro.ParterCatalog.Pipe: { - + var pipeViewModel = vm as HydroPipeViewModel; + var input = HydroMatchingHelper.Create(pipeViewModel); + var dlg = new AssetsPipeSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(pipeViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Pump: { var pumpViewModel = vm as HydroPumpViewModel; var input = HydroMatchingHelper.Create(pumpViewModel.Vmo, pumpViewModel.HydroInfo); - var dlg = new PumpSingleMatchingDlg(); + var dlg = new SimulationPumpSingleMatchingDlg(); dlg.ReloadDataEvent += (output) => { - HydroMatchingHelper.Apply(pumpViewModel.HydroInfo, pumpViewModel.Vmo, output); - pumpViewModel.UpdateProperty(); + HydroMatchingHelper.Apply(pumpViewModel, output, _changeHelper, _propStatusHelper); this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); }; dlg.SetBindingData(input); dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Valve: { - + var valveViewModel = vm as HydroValveViewModel; + var input = HydroMatchingHelper.Create(valveViewModel); + var dlg = new AssetsValveSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(valveViewModel, output, _changeHelper, _propStatusHelper); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Exchanger: { - + var exchangerViewModel = vm as HydroExchangerViewModel; + var input = HydroMatchingHelper.Create(exchangerViewModel); + var dlg = new AssetsExchangerSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(exchangerViewModel, output); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; + case Yw.Hydro.ParterCatalog.Compressor: { - + var compressorViewModel = vm as HydroCompressorViewModel; + var input = HydroMatchingHelper.Create(compressorViewModel); + var dlg = new AssetsCompressorSingleMatchingDlg(); + dlg.ReloadDataEvent += (output) => + { + HydroMatchingHelper.Apply(compressorViewModel, output); + this.hydroVisualPropertyCtrl1.UpdateRows(); + this.PropertyValueChangedEvent?.Invoke(vm.Vmo); + this.MarkPropertyValueChangedEvent?.Invoke(vm.Vmo); + this.GradingPropertyValueChangedEvent?.Invoke(vm.Vmo); + }; + dlg.SetBindingData(input); + dlg.ShowDialog(); } break; - default: break; + default: break; } } @@ -253,48 +461,84 @@ { case HydroCurve.Tank: { - + var tankViewModel = vm as HydroTankViewModel; + var curveInfo = tankViewModel.HydroInfo.Curves?.Find(x => x.Code == tankViewModel.VolCurve); + if (curveInfo != null) + { + if (long.TryParse(curveInfo.DbId, out long longDbId)) + { + var dlg = new AssetsTankCurveVOLViewDlg(); + dlg.SetBindingData(longDbId); + dlg.ShowDialog(); + } + } } break; + case HydroCurve.Pump: { - //var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code); - //if (pumpInfo == null) - //{ - // break; - //} - //var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, pumpInfo, null); - //var dlg = new SinglePumpAnalyDlg(); - //dlg.SetBindindData(input); - //dlg.ReloadDataEvent += (output) => - //{ - // var bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, output); - // if (bol) - // { - // vm.UpdateProperty(); - // this.hydroVisualPropertyCtrl1.UpdateRows(); - // } - // return bol; - //}; - //dlg.ShowDialog(); - //return true; + var pumpViewModel = vm as HydroPumpViewModel; + var dlg = new SimulationSinglePumpFeatDlg(); + dlg.SaveEvent += (working) => + { + pumpViewModel.Vmo.LinkStatus = working.LinkStatus; + pumpViewModel.Vmo.SpeedRatio = working.CurrentHz / pumpViewModel.Vmo.RatedHz; + pumpViewModel.UpdateProperty(); + this.hydroVisualPropertyCtrl1.UpdateRows(); + }; + dlg.SetBindingData(pumpViewModel, this.CalcuResult?.Invoke()); + dlg.ShowDialog(); } break; + case HydroCurve.Valve: { - + var valveViewModel = vm as HydroValveViewModel; + var curveInfo = valveViewModel.HydroInfo.Curves?.Find(x => x.Code == valveViewModel.CurveOL); + if (curveInfo != null) + { + if (long.TryParse(curveInfo.DbId, out long longDbId)) + { + var dlg = new AssetsValveCurveViewDlg(); + dlg.SetBindingData(longDbId); + dlg.ShowDialog(); + } + } } break; + case HydroCurve.Exchanger: { - + var exchangerViewModel = vm as HydroExchangerViewModel; + var curveInfo = exchangerViewModel.HydroInfo.Curves?.Find(x => x.Code == exchangerViewModel.CurveQL); + if (curveInfo != null) + { + if (long.TryParse(curveInfo.DbId, out long longDbId)) + { + var dlg = new AssetsExchangerCurveQLViewDlg(); + dlg.SetBindingData(longDbId); + dlg.ShowDialog(); + } + } } break; + case HydroCurve.Compressor: { - + var compressorViewModel = vm as HydroCompressorViewModel; + var curveInfo = compressorViewModel.HydroInfo.Curves?.Find(x => x.Code == compressorViewModel.CurveQL); + if (curveInfo != null) + { + if (long.TryParse(curveInfo.DbId, out long longDbId)) + { + var dlg = new AssetsCompressorCurveQLViewDlg(); + dlg.SetBindingData(longDbId); + dlg.ShowDialog(); + } + } } break; + default: break; } } @@ -341,12 +585,9 @@ this.GradingPropertyValueChangedEvent?.Invoke(vm?.Vmo); } - //姘存祦鍔ㄧ敾灞炴�у彂鐢熸敼鍙� - private void HydroVisualPropertyCtrl1_FlowEffectPropertyValueChangedEvent(HydroVisualViewModel vm) - { - this.FlowEffectPropertyValueChangedEvent?.Invoke(vm?.Vmo); - } #endregion + + } } \ No newline at end of file -- Gitblit v1.9.3