From 7507591ef45cfa8f1080f6dbf68b411edcc7f086 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期日, 03 十一月 2024 15:42:56 +0800 Subject: [PATCH] 水力存储优化 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs | 540 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 519 insertions(+), 21 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs index c262764..832ba33 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs @@ -1,8 +1,10 @@ 锘縢lobal using Yw.EPAnet; using DevExpress.Mvvm.Native; +using DevExpress.Xpo.Helpers; using DevExpress.XtraRichEdit.Layout; using DevExpress.XtraSpreadsheet.Commands; using HStation.WinFrmUI.PhartRelation; +using System.Diagnostics; using System.Windows.Media.Media3D; using Yw.Pump; using Yw.Vmo; @@ -498,7 +500,17 @@ { return; } + Stopwatch sw = new Stopwatch(); + sw.Start(); + + var id = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(_hydroInfo); + + //鑰楁椂宸ㄥぇ鐨勪唬鐮� + + sw.Stop(); + TimeSpan ts2 = sw.Elapsed; + Console.WriteLine("Stopwatch鎬诲叡鑺辫垂{0}ms.", ts2.TotalMilliseconds); if (id < 1) { TipFormHelper.ShowError("淇濆瓨澶辫触锛�"); @@ -1380,22 +1392,18 @@ #region 妯″瀷鏍囨敞 - //鎵�鏈夋爣娉ㄥ垪琛� - private List<HydroMarkSetViewModel> _allMarkList = null; + //鎵�鏈夋爣娉ㄨ缃垪琛� + private List<HydroMarkSetViewModel> _allMarkSetList = null; - //鏄剧ず鏍囨敞绐椾綋 - private void ShowMarkDlg() + //鑾峰彇鏍囨敞璁剧疆鍒楄〃 + private List<HydroMarkSetViewModel> GetMarkSetList() { - if (_hydroInfo == null) + if (_allMarkSetList == null) { - return; - } - if (_allMarkList == null) - { - _allMarkList = new List<HydroMarkSetViewModel>(); + _allMarkSetList = new List<HydroMarkSetViewModel>(); if (_hydroInfo.Waterboxs != null && _hydroInfo.Waterboxs.Count > 0) { - _allMarkList.Add(new HydroMarkSetViewModel() + _allMarkSetList.Add(new HydroMarkSetViewModel() { Code = Yw.Hydro.ParterCatalog.Waterbox, Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Waterbox), @@ -1404,7 +1412,7 @@ } if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0) { - _allMarkList.Add(new HydroMarkSetViewModel() + _allMarkSetList.Add(new HydroMarkSetViewModel() { Code = Yw.Hydro.ParterCatalog.Pump, Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pump), @@ -1413,7 +1421,7 @@ } if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0) { - _allMarkList.Add(new HydroMarkSetViewModel() + _allMarkSetList.Add(new HydroMarkSetViewModel() { Code = Yw.Hydro.ParterCatalog.Valve, Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Valve), @@ -1422,7 +1430,7 @@ } if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0) { - _allMarkList.Add(new HydroMarkSetViewModel() + _allMarkSetList.Add(new HydroMarkSetViewModel() { Code = Yw.Hydro.ParterCatalog.Pipe, Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pipe), @@ -1431,7 +1439,7 @@ } if (_hydroInfo.Nozzles != null && _hydroInfo.Nozzles.Count > 0) { - _allMarkList.Add(new HydroMarkSetViewModel() + _allMarkSetList.Add(new HydroMarkSetViewModel() { Code = Yw.Hydro.ParterCatalog.Nozzle, Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Nozzle), @@ -1439,12 +1447,462 @@ }); } } - var dlg = new SetHydroMarkDlg(); - dlg.SetBindingData(_hydroInfo, _allMarkList); - dlg.ReloadDataEvent += async (allResultList) => + return _allMarkSetList; + } + + //鎵�鏈夋爣娉ㄧ粨鏋滃垪琛� + private List<HydroMarkResultViewModel> _allMarkResultList = null; + + //鑾峰彇鏍囨敞缁撴灉鍒楄〃 + private List<HydroMarkResultViewModel> GetMarkResultList() + { + if (_hydroInfo == null) { - var leadLabels = allResultList?.Select(x => new LogicMarkLeadLabel(x.Code, x.Text, 100000)).ToList(); - await _bimfaceCtrl?.SetLogicMarkLeadLabels(leadLabels); + return default; + } + _allMarkResultList = new List<HydroMarkResultViewModel>(); + var allMarkSetList = GetMarkSetList(); + foreach (var markSet in allMarkSetList) + { + switch (markSet.Code) + { + case Yw.Hydro.ParterCatalog.Waterbox: + { + if (_hydroInfo.Waterboxs != null && _hydroInfo.Waterboxs.Count > 0) + { + switch ((eWaterboxMarkType)markSet.MarkType) + { + case eWaterboxMarkType.None: + { + + } + break; + case eWaterboxMarkType.PoolElev: + { + _hydroInfo.Waterboxs.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"姹犲簳鏍囬珮:{Math.Round(t.PoolElev, 4)}m" + }); + }); + } + break; + case eWaterboxMarkType.InitLevel: + { + _hydroInfo.Waterboxs.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鍒濆姘翠綅:{Math.Round(t.InitLevel, 4)}m" + }); + }); + } + break; + case eWaterboxMarkType.MinLevel: + { + _hydroInfo.Waterboxs.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鏈�灏忔按浣�:{Math.Round(t.MinLevel, 4)}m" + }); + }); + } + break; + case eWaterboxMarkType.MaxLevel: + { + _hydroInfo.Waterboxs.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鏈�楂樻按浣�:{Math.Round(t.MaxLevel, 4)}m" + }); + }); + } + break; + case eWaterboxMarkType.DN: + { + _hydroInfo.Waterboxs.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鐩村緞:{Math.Round(t.DN, 4)}m" + }); + }); + } + break; + case eWaterboxMarkType.MinVol: + { + _hydroInfo.Waterboxs.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鏈�灏忓绉�:{Math.Round(t.MinVol, 1)}m" + }); + }); + } + break; + default: break; + } + } + } + break; + case Yw.Hydro.ParterCatalog.Pump: + { + if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0) + { + switch ((ePumpMarkType)markSet.MarkType) + { + case ePumpMarkType.None: + { + + } + break; + case ePumpMarkType.PumpStatus: + { + _hydroInfo.Pumps.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"寮�鏈虹姸鎬�:{Yw.WinFrmUI.HydroLinkStatusHelper.GetStatusName(t.LinkStatus)}" + }); + }); + } + break; + case ePumpMarkType.RatedP: + { + _hydroInfo.Pumps.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"棰濆畾鍔熺巼:{t.RatedP}kW" + }); + }); + } + break; + case ePumpMarkType.RatedQ: + { + _hydroInfo.Pumps.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"棰濆畾娴侀噺:{t.RatedQ}m鲁/h" + }); + }); + } + break; + case ePumpMarkType.RatedH: + { + _hydroInfo.Pumps.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"棰濆畾鎵▼:{t.RatedH}m" + }); + }); + } + break; + case ePumpMarkType.RatedN: + { + _hydroInfo.Pumps.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"棰濆畾杞��:{t.RatedN}r/min" + }); + }); + } + break; + case ePumpMarkType.RatedHz: + { + _hydroInfo.Pumps.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"棰濆畾棰戠巼:{t.RatedHz}" + }); + }); + } + break; + case ePumpMarkType.CurrentN: + { + _hydroInfo.Pumps.ForEach(t => + { + if (t.RatedN.HasValue) + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"璁惧畾杞��:{Math.Round(t.RatedN.Value * t.SpeedRatio, 1)}r/min" + }); + } + }); + } + break; + case ePumpMarkType.CurrentHz: + { + _hydroInfo.Pumps.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"璁惧畾棰戠巼:{Math.Round(t.RatedHz * t.SpeedRatio, 1)}hz" + }); + }); + } + break; + default: break; + } + } + } + break; + case Yw.Hydro.ParterCatalog.Valve: + { + if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0) + { + switch ((eValveMarkType)markSet.MarkType) + { + case eValveMarkType.None: + { + + } + break; + case eValveMarkType.ValveStatus: + { + _hydroInfo.Valves.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"闃�闂ㄧ姸鎬�:{HydroLinkStatusHelper.GetStatusName(t.LinkStatus)}" + }); + }); + } + break; + case eValveMarkType.ValveType: + { + _hydroInfo.Valves.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"闃�闂ㄧ被鍨�:{HydroValveTypeHelper.GetTypeName(t.ValveType)}" + }); + }); + } + break; + case eValveMarkType.Diameter: + { + _hydroInfo.Valves.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鐩村緞:{t.Diameter}mm" + }); + }); + } + break; + case eValveMarkType.MinorLoss: + { + _hydroInfo.Valves.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"灞�闃荤郴鏁�:{t.MinorLoss}" + }); + }); + } + break; + default: break; + } + } + } + break; + case Yw.Hydro.ParterCatalog.Pipe: + { + if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0) + { + switch ((ePipeMarkType)markSet.MarkType) + { + case ePipeMarkType.None: + { + + } + break; + case ePipeMarkType.PipeStatus: + { + _hydroInfo.Pipes.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鐘舵��:{Yw.WinFrmUI.HydroLinkStatusHelper.GetStatusName(t.LinkStatus)}" + }); + }); + } + break; + case ePipeMarkType.Diameter: + { + _hydroInfo.Pipes.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鐩村緞:{t.Diameter}mm" + }); + }); + } + break; + case ePipeMarkType.Length: + { + _hydroInfo.Pipes.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"闀垮害:{t.Length}m" + }); + }); + } + break; + case ePipeMarkType.Roughness: + { + _hydroInfo.Pipes.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"绮楃硻绯绘暟:{t.Roughness}" + }); + }); + } + break; + case ePipeMarkType.MinorLoss: + { + _hydroInfo.Pipes.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"灞�闃荤郴鏁�:{t.MinorLoss}" + }); + }); + } + break; + default: break; + } + } + } + break; + case Yw.Hydro.ParterCatalog.Nozzle: + { + if (_hydroInfo.Nozzles != null && _hydroInfo.Nozzles.Count > 0) + { + switch ((eNozzleMarkType)markSet.MarkType) + { + case eNozzleMarkType.None: + { + + } + break; + case eNozzleMarkType.Elev: + { + _hydroInfo.Nozzles.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鏍囬珮:{Math.Round(t.Elev, 4)}m" + }); + }); + } + break; + case eNozzleMarkType.Demand: + { + _hydroInfo.Nozzles.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"闇�姘撮噺:{t.Demand}m鲁/h" + }); + }); + } + break; + case eNozzleMarkType.Coefficient: + { + _hydroInfo.Nozzles.ForEach(t => + { + _allMarkResultList.Add(new HydroMarkResultViewModel() + { + Code = t.Code, + Text = $"鍠峰皠绯绘暟:{t.Coefficient}" + }); + }); + } + break; + default: break; + } + } + } + break; + default: break; + } + } + return _allMarkResultList; + } + + //搴旂敤鏍囨敞缁撴灉鍒楄〃 + private async Task ApplyMarkResultList() + { + var allMarkResultList = GetMarkResultList(); + var leadLabels = allMarkResultList?.Select(x => new LogicMarkLeadLabel(x.Code, x.Text, 100000)).ToList(); + await _bimfaceCtrl?.SetLogicMarkLeadLabels(leadLabels); + TipFormHelper.ShowSucceed("鏍囨敞淇℃伅宸茶缃�"); + } + + //娓呴櫎鏍囨敞缁撴灉鍒楄〃 + private async Task ClearMarkResultList() + { + if (_allMarkResultList == null || _allMarkResultList.Count < 1) + { + TipFormHelper.ShowWarn("灏氭湭璁剧疆鏍囨敞淇℃伅"); + return; + } + _allMarkResultList = null; + await _bimfaceCtrl?.ClearLogicMarkLeadLabels(); + TipFormHelper.ShowSucceed("鏍囨敞淇℃伅宸叉竻闄�"); + } + + //鏄剧ず鏍囨敞璁剧疆绐椾綋 + private void ShowMarkSetDlg() + { + if (_hydroInfo == null) + { + return; + } + var allMarkSetList = GetMarkSetList(); + var dlg = new SetHydroMarkDlg(); + dlg.SetBindingData(allMarkSetList); + dlg.ReloadDataEvent += async (list) => + { + _allMarkSetList = list; + await ApplyMarkResultList(); }; dlg.ShowDialog(); } @@ -1452,7 +1910,13 @@ //璁剧疆鏍囨敞 private void barBtnSetMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - ShowMarkDlg(); + ShowMarkSetDlg(); + } + + //娓呴櫎鏍囨敞 + private async void barBtnClearMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + await ClearMarkResultList(); } #endregion @@ -1987,7 +2451,12 @@ } var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); + Stopwatch sw = new Stopwatch(); + sw.Start(); _hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID); + sw.Stop(); + TimeSpan ts2 = sw.Elapsed; + Console.WriteLine("Stopwatch鎬诲叡鑺辫垂{0}ms.", ts2.TotalMilliseconds); _parter = null; await _bimfaceCtrl?.ZoomAndSelectComponents(null); ShowProperty(); @@ -1996,5 +2465,34 @@ } #endregion + + #region 姘存祦鍔ㄧ敾 + + //鍔犺浇娴佸悜 + private async void barBtnLoadFlowDirection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var pipes = _hydroInfo.Pipes; + var list = pipes.Select(x => + { + return new Yw.WinFrmUI.Bimface.LogicFlowEffect() + { + Id = x.Code, + Rotation = 90, + Speed = 0.1d + }; + }).ToList(); + await _bimfaceCtrl?.LoadFlowEffect(list); + } + + //鍗歌浇娴佸悜 + private async void barBtnUnloadFlowDirection_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + await _bimfaceCtrl?.UnloadFlowEffect(); + } + + #endregion + + + } } \ No newline at end of file -- Gitblit v1.9.3