From d4898c5d7e1bbbbba384a0e29f29c066d6f502a7 Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期一, 25 十一月 2024 17:44:18 +0800 Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs | 4084 +++++++++++++++++++++++++--------------------------------- 1 files changed, 1,763 insertions(+), 2,321 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 c822e3b..dc08799 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,15 +1,10 @@ -锘縢lobal using Yw.EPAnet; +锘縰sing DevExpress.Diagram.Core.Native; using DevExpress.Mvvm.Native; -using DevExpress.Xpo.Helpers; -using DevExpress.XtraRichEdit.Layout; -using DevExpress.XtraSpreadsheet.Commands; using HStation.WinFrmUI.PhartRelation; +using NPOI.SS.Formula.Functions; using System.Diagnostics; -using System.Windows.Media.Media3D; -using Yw.Pump; +using Yw.Model; using Yw.Vmo; -using Yw.WinFrmUI.Bimface; -using Yw.WinFrmUI.Hydro; namespace HStation.WinFrmUI { @@ -29,8 +24,6 @@ private Yw.Model.HydroModelInfo _hydroInfo = null;//姘村姏淇℃伅 - private Yw.WinFrmUI.HydroCheckResult _checkResult = null;//妫�鏌ョ粨鏋� - private Yw.EPAnet.CalcuResult _calcuResult = null;//璁$畻缁撴灉 /// <summary> /// 缁戝畾鏁版嵁 @@ -75,11 +68,20 @@ ShowBimfaceCtrl(); ShowQ3dCtrl(); ShowPropertyCtrl(); + } + //鍒濆鍖朥I + private async void InitialUI() + { + var workingTupleHelper = GetWorkingTupleHelper(); + var allWorkingList = await workingTupleHelper.GetWorkingList(); + InitialUIWorkingList(allWorkingList); + var working = allWorkingList?.LastOrDefault(); + SetUIWorking(working); } - #region Bimface + #region BIM鎺т欢 //bimface鎺т欢 private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null; @@ -87,27 +89,28 @@ //鑾峰彇 bimface 鎺т欢 private async Task<XhsProjectSimulationBimfaceCtrl> GetBimfaceCtrl() { + if (_hydroInfo == null) + { + return default; + } if (_bimfaceCtrl == null) { _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl(); _bimfaceCtrl.Dock = DockStyle.Fill; - await _bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo); + await _bimfaceCtrl.InitialData(_project, _projectSite); _bimfaceCtrl.LoadCompletedEvent += () => {//view鍔犺浇瀹屾垚浜嬩欢 if (_hydroInfo == null) { return; } - ApplyGrading(); + InitialUI(); }; - _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) => + _bimfaceCtrl.HydroMouseLeftClickEvent += (code) => {//榧犳爣宸﹂敭鐐瑰嚮浜嬩欢 - if (_hydroInfo == null) - { - return; - } - _selectedParter = obj; - ShowProperty(); + var visualListHelper = GetVisualListHelper(); + var visual = visualListHelper.GetVisual(code); + SelectVisual(visual, eVisualSource.Bimface); }; } return _bimfaceCtrl; @@ -121,14 +124,9 @@ this.tabPageBimface.Controls.Add(bimfaceCtrl); } - private void SelectBimfaceParter() - { - - } - #endregion - #region Q3d + #region Q3d鎺т欢 //Q3d 鎺т欢 private XhsProjectSimulationQ3dCtrl _q3dCtrl = null; @@ -136,20 +134,20 @@ //鑾峰彇 Q3d 鎺т欢 private XhsProjectSimulationQ3dCtrl GetQ3dCtrl() { + if (_hydroInfo == null) + { + return default; + } if (_q3dCtrl == null) { _q3dCtrl = new XhsProjectSimulationQ3dCtrl(); _q3dCtrl.Dock = DockStyle.Fill; _q3dCtrl.InitialData(() => _hydroInfo); - _q3dCtrl.SelectedPartersChangedEvent += (obj) => + _q3dCtrl.SelectedPartersChangedEvent += (codes) => { - if (_hydroInfo == null) - { - return; - } - var allParterList = _hydroInfo.GetAllParters(); - _selectedParter = allParterList?.Find(x => x.Code == obj?.FirstOrDefault()); - ShowProperty(); + var visualListHelper = GetVisualListHelper(); + var visuals = visualListHelper.GetVisualList(codes); + SelectVisual(visuals?.LastOrDefault(), eVisualSource.Q3d); }; } return _q3dCtrl; @@ -165,7 +163,7 @@ #endregion - #region 鏋勪欢灞炴�� + #region 灞炴�ф帶浠� //灞炴�ф帶浠� private XhsProjectSimulationPropertyCtrl _propertyCtrl = null; @@ -173,44 +171,39 @@ //鑾峰彇灞炴�ф帶浠� private XhsProjectSimulationPropertyCtrl GetPropertyCtrl() { + if (_hydroInfo == null) + { + return default; + } if (_propertyCtrl == null) { _propertyCtrl = new XhsProjectSimulationPropertyCtrl(); _propertyCtrl.Dock = DockStyle.Fill; - _propertyCtrl.InitialData(() => _hydroInfo, () => GetCalcuResultList()); - _propertyCtrl.BlinkLinkParterEvent += async (code, linkCode) => - { //寮鸿皟杩炴帴缁勪欢 - if (string.IsNullOrEmpty(code)) + _propertyCtrl.HydroViewEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Property); + }; + _propertyCtrl.BlinkLinkNodeEvent += async (link, linkNodeCode) => + { //寮鸿皟杩炴帴鑺傜偣 + if (link == null) { return; } - if (string.IsNullOrEmpty(linkCode)) - { - return; - } - if (_hydroInfo == null) - { - return; - } - var allVisualList = _hydroInfo.GetAllVisuals(); - if (allVisualList == null || allVisualList.Count < 1) - { - return; - } - var linkParter = allVisualList.Find(x => x.Code == linkCode); - if (linkParter == null) + var visualListHelper = GetVisualListHelper(); + var linkNode = visualListHelper.GetVisual(linkNodeCode); + if (linkNode == null) { return; } var blinkCodes = new List<string>(); - if (linkParter.GetType() == typeof(Yw.Model.HydroJunctionInfo)) + if (linkNode.GetType() == typeof(HydroJunctionInfo)) { - var allLinkList = _hydroInfo.GetAllLinks(); + var allLinkList = visualListHelper.GetLinkList(); if (allLinkList == null || allLinkList.Count < 1) { return; } - var linkList = allLinkList.Where(x => (x.StartCode == linkParter.Code || x.EndCode == linkParter.Code) && x.Code != code).ToList(); + var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != linkNodeCode).ToList(); if (linkList == null || linkList.Count < 1) { return; @@ -219,37 +212,76 @@ } else { - blinkCodes.Add(linkCode); + blinkCodes.Add(linkNodeCode); } + await _bimfaceCtrl?.ClearBlinkComponents(); await _bimfaceCtrl?.SetBlinkComponents(blinkCodes); await Task.Delay(5000); await _bimfaceCtrl?.ClearBlinkComponents(); }; - _propertyCtrl.PropertyValueChangedEvent += (parter) => + _propertyCtrl.PropertyValueChangedEvent += async (visual) => { - if (parter == null) + if (visual == null) { return; } - UpdateParterListProperty(parter); - AutoApplyGrading(); + UpdateVisualListCtrl(); + var gradingHelper = await GetGradingHelper(); + gradingHelper.Set(); }; - _propertyCtrl.ViewParterEvent += (parter) => + _propertyCtrl.MarkPropertyValueChangedEvent += async (visual) => { - if (parter == null) - { - return; - } - _bimfaceCtrl?.ZoomToComponent(parter.Code); + //鏍囨敞灞炴�у彂鐢熸敼鍙� + //鍒ゆ柇褰撳墠鏄惁鏈夋爣娉ㄥ睍绀猴紝鑻ユ湁鍒欐洿鏂版爣娉紝鏈�濂芥槸鏇存柊鍗曚釜鏍囨敞 + var markHelper = await GetMarkHelper(); + markHelper.Set(visual); }; + _propertyCtrl.GradingPropertyValueChangedEvent += async (visual) => + { + //鍒嗙骇灞炴�у彂鐢熸敼鍙� + //鍒ゆ柇褰撳墠鏄惁鏈夊垎绾у睍绀猴紝鑻ユ湁鍒欐洿鏂板垎绾э紝鏈�濂芥槸鏇存柊鍗曚釜鍒嗙骇 + var gradingHelper = await GetGradingHelper(); + gradingHelper.Set(visual); + }; + _propertyCtrl.FlowEffectPropertyValueChangedEvent += async (visual) => + { + //娴佸悜灞炴�у彂鐢熸敼鍙� + //鍒ゆ柇娴佸悜鏄惁鍔犺浇锛屽鏋滃姞杞藉垯鏇存柊娴佸悜锛屾渶濂芥槸鏇存柊鍗曚釜娴佸悜 + var flowEffectHelper = await GetFlowEffectHelper(); + flowEffectHelper.Set(visual); + }; + } return _propertyCtrl; } - //鏄剧ず灞炴�ч潰鏉� + //灞炴�ф帶浠舵槸鍚﹀彲瑙� + private bool IsPropertyCtrlVisible + { + get + { + if (this.docPnlRight.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) + { + if (this.controlContainerRight.Controls.Count > 0) + { + if (this.controlContainerRight.Controls[0] is XhsProjectSimulationPropertyCtrl) + { + return true; + } + } + } + return false; + } + } + + //鏄剧ず灞炴�ф帶浠� private void ShowPropertyCtrl() { + if (IsPropertyCtrlVisible) + { + return; + } var propertyCtrl = GetPropertyCtrl(); this.controlContainerRight.Controls.Clear(); this.controlContainerRight.Controls.Add(propertyCtrl); @@ -258,134 +290,314 @@ this.docPnlRight.Width = 300; } - //鏄剧ず灞炴�� - private void ShowProperty() + //璁剧疆灞炴�ф帶浠� + private void SetPropertyCtrl(HydroVisualInfo visual) { - if (_hydroInfo == null) - { - return; - } - if (this.docPnlRight.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Hidden) - { - ShowPropertyCtrl(); - } - if (_selectedParter == null) - { - _propertyCtrl?.CancelSelectParter(); - return; - } - _propertyCtrl?.SelectParter(_selectedParter.Code); - - var allCalcuResultList = GetCalcuResultList(); - if (allCalcuResultList != null && allCalcuResultList.Count > 0) - { - var calcuResult = allCalcuResultList.Find(x => x.Code == _selectedParter.Code); - if (calcuResult != null) - { - _propertyCtrl?.UpdateCalcuProperty(calcuResult); - } - } + ShowPropertyCtrl(); + var visualVmListHelper = GetVisualVmListHelper(); + var vm = visualVmListHelper.GetVisual(visual); + _propertyCtrl.SelectedObject = vm; } + //鏇存柊灞炴�ф帶浠� + private void UpdatePropertyCtrl() + { + _propertyCtrl?.UpdateRows(); + } + //娓呯悊灞炴�ф帶浠� + private void ClearPropertyCtrl() + { + if (_propertyCtrl != null) + { + _propertyCtrl.SelectedObject = null; + } + } #endregion #region 閫夋嫨鏋勪欢 + //鍙鏉ユ簮 + protected enum eVisualSource + { + None, + Bimface, + Q3d, + Property, + List, + Search, + Monitor, + Check, + Calcu, + Warning, + } + //閫夋嫨鏋勪欢 - private Yw.Model.HydroParterInfo _selectedParter = null; + private Yw.Model.HydroVisualInfo _visual = null; - //鏇存柊閫夋嫨缁勪欢灞炴�� - private void UpdateSelectedParterProperty() + //閫夋嫨鏋勪欢 + private void SelectVisual(HydroVisualInfo visual, eVisualSource source) { - if (_selectedParter == null) + _visual = visual; + switch (source) { - return; + case eVisualSource.None: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + case eVisualSource.Bimface: + { + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + case eVisualSource.Q3d: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + case eVisualSource.Property: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + } + break; + case eVisualSource.List: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + case eVisualSource.Search: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + case eVisualSource.Monitor: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + case eVisualSource.Check: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + case eVisualSource.Calcu: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + case eVisualSource.Warning: + { + _bimfaceCtrl?.ZoomAndSelectComponent(visual?.Code); + this.barBtnSetMonitor.Enabled = visual != null; + SetPropertyCtrl(visual); + } + break; + default: break; } - _propertyCtrl?.UpdateProperty(); } - //鏇存柊閫夋嫨缁勪欢璁$畻灞炴�� - private void UpdateSelectedParterCalcuProperty() + #endregion + + #region 鏋勪欢鏄庣粏 + + #region 鍙鍒楄〃 + + //鍙鍒楄〃杈呭姪绫� + private SimulationVisualListHelper _visualListHelper = null; + + //鑾峰彇鍙鍒楄〃杈呭姪绫� + private SimulationVisualListHelper GetVisualListHelper() { - if (_selectedParter == null) + if (_visualListHelper == null) { - return; + _visualListHelper = new SimulationVisualListHelper(); + _visualListHelper.InitialData(_hydroInfo); } - var allCalcuResultList = GetCalcuResultList(); - if (allCalcuResultList == null || allCalcuResultList.Count < 1) - { - return; - } - var calcuResult = allCalcuResultList.Find(x => x.Code == _selectedParter.Code); - if (calcuResult == null) - { - return; - } - _propertyCtrl?.UpdateCalcuProperty(calcuResult); + return _visualListHelper; } - //鏇存柊鏋勪欢鍒楄〃灞炴�� - private void UpdateParterListProperty() + #endregion + + #region 瑙嗗浘鍒楄〃 + + //鍙瑙嗗浘鍒楄〃杈呭姪绫� + private SimulationVisualVmListHelper _visualVmListHelper = null; + + //鑾峰彇鍙瑙嗗浘鍒楄〃杈呭姪绫� + private SimulationVisualVmListHelper GetVisualVmListHelper() { - if (this.docPnlBottom.Visibility != DevExpress.XtraBars.Docking.DockVisibility.Visible) + if (_hydroInfo == null) { - return; + return default; } - var parterListCtrl = this.controlContainerBottom.Controls[0] as Yw.WinFrmUI.HydroParterListCtrl; - if (parterListCtrl == null) + if (_visualVmListHelper == null) { - return; + var visualListHelper = GetVisualListHelper(); + var calcuResultHelper = GetCalcuResultHelper(); + _visualVmListHelper = new SimulationVisualVmListHelper(visualListHelper, calcuResultHelper); } - parterListCtrl.UpdateProperty(); + return _visualVmListHelper; } - //鏇存柊鏋勪欢鍒楄〃灞炴�� - private void UpdateParterListProperty(Yw.Model.HydroParterInfo parter) + #endregion + + #region 鏄庣粏鎺т欢 + + //鏋勪欢鏄庣粏鎺т欢 + private Yw.WinFrmUI.HydroVisualListCtrl _visualListCtrl = null; + + //鑾峰彇鏋勪欢鏄庣粏鎺т欢 + private Yw.WinFrmUI.HydroVisualListCtrl GetVisualListCtrl() { - if (this.docPnlBottom.Visibility != DevExpress.XtraBars.Docking.DockVisibility.Visible) + if (_visualListCtrl == null) { - return; + _visualListCtrl = new HydroVisualListCtrl(); + _visualListCtrl.Dock = DockStyle.Fill; + _visualListCtrl.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.List); + }; + _visualListCtrl.HydroChangedInfoEvent += (visualList) => + { + SelectVisual(_visual, eVisualSource.List); + }; } - var parterListCtrl = this.controlContainerBottom.Controls[0] as Yw.WinFrmUI.HydroParterListCtrl; - if (parterListCtrl == null) - { - return; - } - parterListCtrl.UpdateProperty(parter); + return _visualListCtrl; } - //鏇存柊鏋勪欢鍒楄〃灞炴�� - private void UpdateParterListProperty(List<Yw.Model.HydroParterInfo> parterList) + //鏋勪欢鏄庣粏鎺т欢鏄惁鍙 + private bool IsVisualListCtrlVisible { - if (this.docPnlBottom.Visibility != DevExpress.XtraBars.Docking.DockVisibility.Visible) + get { - return; + if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) + { + if (this.controlContainerBottom.Controls.Count > 0) + { + if (this.controlContainerBottom.Controls[0] is HydroVisualListCtrl) + { + return true; + } + } + } + return false; } - var parterListCtrl = this.controlContainerBottom.Controls[0] as Yw.WinFrmUI.HydroParterListCtrl; - if (parterListCtrl == null) - { - return; - } - parterListCtrl.UpdateProperty(parterList); } - //鏇存柊鏋勪欢鍒楄〃璁$畻灞炴�� - private void UpdateParterListCalcuProperty() + //鏄剧ず鏋勪欢鏄庣粏鎺т欢 + private void ShowVisualListCtrl() { - if (this.docPnlBottom.Visibility != DevExpress.XtraBars.Docking.DockVisibility.Visible) + if (_hydroInfo == null) { return; } - var parterListCtrl = this.controlContainerBottom.Controls[0] as Yw.WinFrmUI.HydroParterListCtrl; - if (parterListCtrl == null) + var visualListCtrl = GetVisualListCtrl(); + if (!IsVisualListCtrlVisible) { - return; + this.controlContainerBottom.Controls.Clear(); + this.controlContainerBottom.Controls.Add(visualListCtrl); + this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlBottom.Text = "鏋勪欢鏄庣粏"; + this.docPnlBottom.Height = 350; } - var allCalcuResultList = GetCalcuResultList(); - parterListCtrl.UpdateCalcuProperty(allCalcuResultList); + var visualVmListHelper = GetVisualVmListHelper(); + var allVisualVmList = visualVmListHelper.GetVisualList(); + visualListCtrl.SetBindingData(allVisualVmList); + var calcuResult = GetCalcuResult(); + if (calcuResult != null && calcuResult.Succeed) + { + visualListCtrl.SetCalcuView(); + } + else + { + visualListCtrl.SetNormalView(); + } } + + //鏇存柊鏋勪欢鏄庣粏鎺т欢 + private void UpdateVisualListCtrl() + { + if (!IsVisualListCtrlVisible) + { + return; + } + _visualListCtrl?.UpdateBindingData(); + } + + //鏋勪欢鏄庣粏 + private void barBtnVisualList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + ShowVisualListCtrl(); + } + + #endregion + + #region 鏋勪欢鏄剧ず + + //鏋勪欢鍙杈呭姪绫� + private SimulationVisualVisibleHelper _visualVisibleHelper = null; + + //鑾峰彇鏋勪欢鍙杈呭姪绫� + private async Task<SimulationVisualVisibleHelper> GetVisualVisibleHelper() + { + if (_hydroInfo == null) + { + return default; + } + if (_visualVisibleHelper == null) + { + var visualListHelper = GetVisualListHelper(); + var bimfaceCtrl = await GetBimfaceCtrl(); + _visualVisibleHelper = new SimulationVisualVisibleHelper(visualListHelper, bimfaceCtrl); + _visualVisibleHelper.InitialData(_hydroInfo); + } + return _visualVisibleHelper; + } + + //璁剧疆鏋勪欢鍙鎬� + private async void SetVisualVisible() + { + if (_hydroInfo == null) + { + return; + } + var visualVisibleHelper = await GetVisualVisibleHelper(); + var allVisibleList = visualVisibleHelper.Items; + var dlg = new SetHydroVisualVisibleDlg(); + dlg.SetBindingData(allVisibleList); + dlg.ReloadDataEvent += (list) => + { + visualVisibleHelper.Items = list; + visualVisibleHelper.Set(); + }; + dlg.ShowDialog(); + } + + //璁剧疆鏋勪欢鏄剧ず + private void barBtnSetVisualVisible_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + SetVisualVisible(); + } + + #endregion #endregion @@ -404,15 +616,15 @@ { return; } - var allParterList = _hydroInfo.GetAllParters(); - _selectedParter = allParterList?.Find(x => x.Code == code); + var allParterList = _hydroInfo.GetAllVisuals(); + _visual = allParterList?.Find(x => x.Code == code); var elementIds = new List<string>(); - if (_selectedParter != null) + if (_visual != null) { - elementIds.Add(_selectedParter.Code); + elementIds.Add(_visual.Code); } await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); - ShowProperty(); + //ShowSelectedProperty(); }; _matchingListCtrl.ApplyMatchingEvent += (output) => { @@ -438,7 +650,7 @@ } this.controlContainerBottom.Controls.Clear(); var matchingListCtrl = GetMatchingListCtrl(); - var input = AssetsMatchingParasHelper.Create(_hydroInfo, GetCalcuResultList()); + var input = AssetsMatchingParasHelper.Create(_hydroInfo, null); matchingListCtrl.SetBindingData(input); this.controlContainerBottom.Controls.Add(matchingListCtrl); this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; @@ -448,7 +660,7 @@ #endregion - #region 鏈尮閰嶅垪琛� + #region 鏈尮鍒楄〃 //鑾峰彇鏈尮閰嶅垪琛ㄦ帶浠� private XhsProjectSimulationUnMatchingListCtrl GetUnMatchingListCtrl() @@ -467,18 +679,18 @@ { return; } - var allParterList = _hydroInfo.GetAllParters(); - _selectedParter = allParterList?.Find(x => x.Code == parter.Code); + var allParterList = _hydroInfo.GetAllVisuals(); + _visual = allParterList?.Find(x => x.Code == parter.Code); var elementIds = new List<string>() { parter.Code }; await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); - ShowProperty(); + //ShowSelectedProperty(); }; _unMatchingListCtrl.ViewModelEvent += async (parters) =>//鏌ョ湅妯″瀷 { var codes = parters?.Select(x => x.Code).Distinct().ToList(); await _bimfaceCtrl?.ZoomAndSelectComponents(codes); - _selectedParter = null; - ShowProperty(); + _visual = null; + //ShowSelectedProperty(); }; } return _unMatchingListCtrl; @@ -506,108 +718,27 @@ #region 涓�閿樉闅� - //涓�閿樉闅� - private async Task FastShowHidden() + //璁剧疆瑁呴グ浠跺彲瑙佹�� + private async void SetDecoratorVisible(bool isDecoratorVisible) { - if (_hydroInfo == null) + var codes = _hydroInfo.Decorators?.Select(x => x.Code).Distinct().ToList(); + if (isDecoratorVisible) { - return; - } - if (_hydroInfo.Decorators == null || _hydroInfo.Decorators.Count < 1) - { - return; - } - if (_fastShowHiddenCodeList == null) - { - _fastShowHiddenCodeList = _hydroInfo.Decorators.Select(x => x.Code).ToList(); - await _bimfaceCtrl?.HideComponents(_fastShowHiddenCodeList); + await _bimfaceCtrl?.ShowComponents(codes); } else { - await _bimfaceCtrl?.ShowComponents(_fastShowHiddenCodeList); - _fastShowHiddenCodeList = null; + await _bimfaceCtrl?.HideComponents(codes); } } - //鏄鹃殣缂栫爜鍒楄〃 - private List<string> _fastShowHiddenCodeList = null; - - //瑙﹀彂涓�閿樉闅� - private async void barBtnFastShowHidden_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + //璁剧疆 + private void barCkDecorator_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - await FastShowHidden(); + SetDecoratorVisible(this.barCkDecorator.Checked); } - #endregion - - #region 姘村姏鏍¢獙 - - //鏍¢獙鎺т欢 - private XhsProjectSimulationHydroCheckResultCtrl _checkCtrl = null; - - //鑾峰彇鏍¢獙鎺т欢 - private XhsProjectSimulationHydroCheckResultCtrl GetCheckCtrl() - { - if (_checkCtrl == null) - { - _checkCtrl = new XhsProjectSimulationHydroCheckResultCtrl(); - _checkCtrl.Dock = DockStyle.Fill; - _checkCtrl.HydroClickEvent += async (code) => - { - if (_hydroInfo == null) - { - return; - } - var elementIds = new List<string>(); - if (string.IsNullOrEmpty(code)) - { - _selectedParter = null; - } - else - { - var allParterList = _hydroInfo.GetAllParters(); - _selectedParter = allParterList?.Find(x => x.Code == code); - if (_selectedParter != null) - { - elementIds.Add(_selectedParter.Code); - } - } - await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); - ShowProperty(); - }; - } - return _checkCtrl; - } - - //鏄剧ず妫�鏌ユ帶浠� - private void ShowCheckCtrl() - { - if (_checkResult == null) - { - return; - } - var checkCtrl = GetCheckCtrl(); - checkCtrl.SetBindingData(_checkResult); - this.controlContainerBottom.Controls.Clear(); - this.controlContainerBottom.Controls.Add(checkCtrl); - this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlBottom.Text = "妫�鏌ョ粨鏋�"; - this.docPnlBottom.Height = 350; - - } - - //姘村姏妫�鏌� - private void barBtnHydroCheck_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - if (_hydroInfo == null) - { - return; - } - _checkResult = _hydroInfo.Check(); - ShowCheckCtrl(); - } - - #endregion + #endregion #region 淇濆瓨淇℃伅 @@ -640,88 +771,6 @@ #endregion - #region 鏋勪欢鏄庣粏 - - //鏋勪欢鏄庣粏鎺т欢 - private Yw.WinFrmUI.HydroParterListCtrl _parterListCtrl = null; - - //鑾峰彇鏋勪欢鏄庣粏鎺т欢 - private Yw.WinFrmUI.HydroParterListCtrl GetParterListCtrl() - { - if (_parterListCtrl == null) - { - _parterListCtrl = new HydroParterListCtrl(); - _parterListCtrl.Dock = DockStyle.Fill; - _parterListCtrl.HydroClickEvent += async (parter) => - { - _selectedParter = parter; - await _bimfaceCtrl?.ZoomAndSelectComponent(_selectedParter.Code); - ShowProperty(); - }; - _parterListCtrl.HydroChangedEvent += (parterList) => - { - UpdateSelectedParterProperty(); - AutoApplyGrading(); - }; - } - return _parterListCtrl; - } - - //鏄剧ず鏋勪欢鏄庣粏鎺т欢 - private void ShowParterListCtrl() - { - if (_hydroInfo == null) - { - return; - } - var allCalcuResultList = GetCalcuResultList(); - var parterListCtrl = GetParterListCtrl(); - parterListCtrl.SetBindingData(_hydroInfo, allCalcuResultList); - if (allCalcuResultList == null || allCalcuResultList.Count < 1) - { - parterListCtrl.SetNormalView(); - } - else - { - parterListCtrl.SetCalcuView(); - } - this.controlContainerBottom.Controls.Clear(); - this.controlContainerBottom.Controls.Add(parterListCtrl); - this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlBottom.Text = "鏋勪欢鏄庣粏"; - this.docPnlBottom.Height = 350; - } - - //鏋勪欢鏄庣粏 - private void barBtnHydroParterList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - ShowParterListCtrl(); - } - - #endregion - - #region INP瀵煎嚭 - - //瀵煎嚭姘村姏INP鏂囦欢 - private void barBtnHydroExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - if (_hydroInfo == null) - { - return; - } - var fileName = Yw.WinFrmUI.FileDialogHelper.SaveInp("瀵煎嚭Inp鏂囦欢"); - if (string.IsNullOrEmpty(fileName)) - { - return; - } - var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); - var result = netWork.ToInpString(); - File.WriteAllText(fileName, result); - TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛"); - } - - #endregion INP瀵煎嚭 - #region 鎵归噺閰嶇疆 //娉ㄥ唽鎵归噺閰嶇疆浜嬩欢 @@ -742,27 +791,27 @@ //姘寸 this.barBtnSetWaterboxList.ItemClick += delegate { - if (_hydroInfo == null) - { - return; - } - var dlg = new SetHydroWaterboxListDlg(); - dlg.SetBindingData(_hydroInfo); - dlg.HydroClickEvent += async (obj) => - { - if (obj == null) - { - return; - } - _selectedParter = obj; - await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code); - ShowProperty(); - }; - dlg.HydroChangedEvent += (obj) => - { + //if (_hydroInfo == null) + //{ + // return; + //} + //var dlg = new SetHydroWaterboxListDlg(); + //dlg.SetBindingData(_hydroInfo); + //dlg.HydroClickEvent += async (obj) => + //{ + // if (obj == null) + // { + // return; + // } + // _selectedParter = obj; + // await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code); + // ShowProperty(); + //}; + //dlg.HydroChangedEvent += (obj) => + //{ - }; - dlg.ShowDialog(); + //}; + //dlg.ShowDialog(); }; //杩炴帴鑺傜偣 this.barBtnSetJunctionList.ItemClick += delegate @@ -773,52 +822,52 @@ //闂峰ご this.barBtnSetBluntheadList.ItemClick += delegate { - if (_hydroInfo == null) - { - return; - } - var dlg = new SetHydroBluntheadListDlg(); - dlg.SetBindingData(_hydroInfo); - dlg.HydroClickEvent += async (obj) => - { - if (obj == null) - { - return; - } - _selectedParter = obj; - await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code); - ShowProperty(); - }; - dlg.HydroChangedEvent += (obj) => - { + //if (_hydroInfo == null) + //{ + // return; + //} + //var dlg = new SetHydroBluntheadListDlg(); + //dlg.SetBindingData(_hydroInfo); + //dlg.HydroClickEvent += async (obj) => + //{ + // if (obj == null) + // { + // return; + // } + // _selectedParter = obj; + // await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code); + // ShowProperty(); + //}; + //dlg.HydroChangedEvent += (obj) => + //{ - }; - dlg.ShowDialog(); + //}; + //dlg.ShowDialog(); }; //寮ご this.barBtnSetElbowsList.ItemClick += delegate { - if (_hydroInfo == null) - { - return; - } - var dlg = new SetHydroElbowListDlg(); - dlg.SetBindingData(_hydroInfo); - dlg.HydroClickEvent += async (obj) => - { - if (obj == null) - { - return; - } - _selectedParter = obj; - await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code); - ShowProperty(); - }; - dlg.HydroChangedEvent += (obj) => - { + //if (_hydroInfo == null) + //{ + // return; + //} + //var dlg = new SetHydroElbowListDlg(); + //dlg.SetBindingData(_hydroInfo); + //dlg.HydroClickEvent += async (obj) => + //{ + // if (obj == null) + // { + // return; + // } + // _selectedParter = obj; + // await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code); + // ShowProperty(); + //}; + //dlg.HydroChangedEvent += (obj) => + //{ - }; - dlg.ShowDialog(); + //}; + //dlg.ShowDialog(); }; //涓夐�� this.barBtnSetThreelinkList.ItemClick += delegate @@ -1119,7 +1168,1287 @@ #endregion - #region 骞惰仈鍒嗘瀽 + #region 鏋勪欢鏌ヨ + + //鏌ヨ缁勪欢 + private HydroVisualSearchListCtrl _searchCtrl = null; + + //鑾峰彇鏌ヨ缁勪欢 + private HydroVisualSearchListCtrl GetSearchCtrl() + { + if (_searchCtrl == null) + { + var visualVmListHelper = GetVisualVmListHelper(); + var allVisualVmList = visualVmListHelper.GetVisualList(); + _searchCtrl = new HydroVisualSearchListCtrl(); + _searchCtrl.Dock = DockStyle.Fill; + _searchCtrl.InitialData(allVisualVmList); + _searchCtrl.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Check); + }; + _searchCtrl.HydroSearchInfoEvent += (list) => + { + var visual = list?.FirstOrDefault(); + SelectVisual(visual, eVisualSource.Search); + }; + } + return _searchCtrl; + } + + //鏌ヨ鎺т欢鏄惁鍙 + private bool IsSearchCtrlVisible + { + get + { + if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) + { + if (this.controlContainerBottom.Controls.Count > 0) + { + if (this.controlContainerBottom.Controls[0] is HydroVisualSearchListCtrl) + { + return true; + } + } + } + return false; + } + } + + //鏄剧ず鏌ヨ鎺т欢 + private void ShowSearchCtrl(string content) + { + if (IsSearchCtrlVisible) + { + return; + } + var searchCtrl = GetSearchCtrl(); + searchCtrl.SetBindingData(content); + this.controlContainerBottom.Controls.Clear(); + this.controlContainerBottom.Controls.Add(searchCtrl); + this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlBottom.Text = "鏋勪欢鏌ヨ"; + this.docPnlBottom.Height = 350; + } + + //鏄剧ず鏌ヨ绐椾綋 + private void ShowSearchDlg() + { + if (IsSearchCtrlVisible) + { + return; + } + var dlg = new InputHydroVisualSearchListDlg(); + dlg.SearchEvent += (content) => + { + if (string.IsNullOrEmpty(content)) + { + return; + } + ShowSearchCtrl(content); + }; + dlg.SetBindingData(); + dlg.ShowDialog(); + } + + //鏌ヨ + private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + ShowSearchDlg(); + } + + #endregion + + #region 妯″瀷鏍囨敞 + + //鏍囨敞杈呭姪绫� + private SimulationMarkHelper _markHelper = null; + + //鑾峰彇鏍囨敞杈呭姪绫� + private async Task<SimulationMarkHelper> GetMarkHelper() + { + if (_markHelper == null) + { + var visualListHelper = GetVisualListHelper(); + var bimfaceCtrl = await GetBimfaceCtrl(); + _markHelper = new SimulationMarkHelper(visualListHelper, bimfaceCtrl); + } + return _markHelper; + } + + //鏄剧ず鏍囨敞鍒楄〃 + private async void ShowMarkList() + { + if (_hydroInfo == null) + { + return; + } + var markHelper = await GetMarkHelper(); + var dlg = new SetHydroMarkDlg(); + dlg.SetBindingData(markHelper.Sets); + dlg.ReloadDataEvent += (list) => + { + markHelper.Sets = list; + markHelper.Set(); + }; + dlg.ShowDialog(); + } + + //璁剧疆鏍囨敞 + private void barBtnSetMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + ShowMarkList(); + } + + //鏄惁鏄剧ず + private async void barCkMark_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var markHelper = await GetMarkHelper(); + markHelper.Visible = this.barCkMark.Checked; + markHelper.Set(); + } + + #endregion + + #region 棰滆壊鍒嗙骇 + + //棰滆壊鍒嗙骇杈呭姪绫� + private SimulationGradingHelper _gradingHelper = null; + + //鑾峰彇棰滆壊鍒嗙骇杈呭姪绫� + private async Task<SimulationGradingHelper> GetGradingHelper() + { + if (_gradingHelper == null) + { + var visualListHelper = GetVisualListHelper(); + var calcuResultHelper = GetCalcuResultHelper(); + var bimfaceCtrl = await GetBimfaceCtrl(); + _gradingHelper = new SimulationGradingHelper(visualListHelper, calcuResultHelper, bimfaceCtrl); + } + return _gradingHelper; + } + + //璁剧疆棰滆壊鍒嗙骇鍒楄〃 + private async void SetGradingList() + { + if (_hydroInfo == null) + { + return; + } + var gradingHelper = await GetGradingHelper(); + var allGradingList = await gradingHelper.GetGradingList(); + var dlg = new SetHydroGradingTreeDlg(); + dlg.SetBindingData(_hydroInfo, allGradingList); + dlg.ReloadDataEvent += (list) => + { + gradingHelper.SetGradingList(list); + gradingHelper.Set(); + }; + dlg.ApplyDataEvent += (catalog, propName) => + { + gradingHelper.UpdateApply(catalog, propName); + gradingHelper.Set(); + }; + dlg.ShowDialog(); + } + + //閰嶇疆棰滆壊鍒嗙骇 + private void barBtnSetGradingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + SetGradingList(); + } + + //搴旂敤棰滆壊鍒嗙骇鍒楄〃 + private async void ApplyGradingList() + { + if (_hydroInfo == null) + { + return; + } + var gradingHelper = await GetGradingHelper(); + var dlg = new ApplyHydroGradingDlg(); + dlg.SetBindingData(gradingHelper.Applies); + dlg.ReloadDataEvent += (list) => + { + gradingHelper.Applies = list; + gradingHelper.Set(); + }; + dlg.ShowDialog(); + } + + //搴旂敤棰滆壊鍒嗙骇 + private void barBtnApplyGradingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + ApplyGradingList(); + } + + //棰滆壊鍒嗙骇灞曠ず + private async void barCkGrading_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var gradingHelper = await GetGradingHelper(); + gradingHelper.Visible = this.barCkGrading.Checked; + gradingHelper.Set(); + } + + #endregion + + #region 浜哄伐鍒锋柊 + + //鍒锋柊 + private async void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (XtraMessageBox.Show("鍒锋柊鍚庡皢涓㈠け褰撳墠姘村姏淇℃伅鏇存敼锛屾槸鍚︾户缁埛鏂帮紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (_project == null) + { + return; + } + if (_projectSite == null) + { + return; + } + 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); + _visual = null; + await _bimfaceCtrl?.ZoomAndSelectComponents(null); + //ShowSelectedProperty(); + TipFormHelper.ShowSucceed("鏁版嵁宸插埛鏂�"); + + var visualListHelper = GetVisualListHelper(); + visualListHelper.InitialData(_hydroInfo); + } + } + + #endregion + + #region 姘存祦鍔ㄧ敾 + + //姘存祦鍔ㄧ敾杈呭姪绫� + private SimulationFlowEffectHelper _flowEffectHelper = null; + + //鑾峰彇姘存祦鍔ㄧ敾杈呭姪绫� + private async Task<SimulationFlowEffectHelper> GetFlowEffectHelper() + { + if (_hydroInfo == null) + { + return default; + } + if (_flowEffectHelper == null) + { + var visualListHelper = GetVisualListHelper(); + var bimfaceCtrl = await GetBimfaceCtrl(); + _flowEffectHelper = new SimulationFlowEffectHelper(visualListHelper, bimfaceCtrl); + var calcuResult = GetCalcuResult(); + _flowEffectHelper.InitialData(calcuResult); + } + return _flowEffectHelper; + } + + //姘存祦鍔ㄧ敾鏄惁鍙 + private async void barCkFlowEffect_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var flowEffectHelper = await GetFlowEffectHelper(); + flowEffectHelper.Visible = this.barCkFlowEffect.Checked; + flowEffectHelper.Set(); + } + + #endregion + + #region 鐩戞祴鍒楄〃 + + #region 鐩戞祴鐐� + + //鐩戞祴鐐硅緟鍔╃被 + private SimulationMonitorHelper _monitorHelper = null; + + //鑾峰彇鐩戞祴鐐硅緟鍔╃被 + private SimulationMonitorHelper GetMonitorHelper() + { + if (_hydroInfo == null) + { + return default; + } + if (_monitorHelper == null) + { + _monitorHelper = new SimulationMonitorHelper(_hydroInfo.ID); + } + return _monitorHelper; + } + + //璁剧疆鐩戞祴鐐瑰垪琛� + private async void SetMonitorList(HydroVisualInfo visual) + { + if (_hydroInfo == null) + { + return; + } + var monitorHelper = GetMonitorHelper(); + var allMonitorList = await monitorHelper.Get(); + var dlg = new SetHydroMonitorListDlg(); + dlg.SetBindingData(_hydroInfo, visual, allMonitorList); + dlg.ReloadDataEvent += async (list) => + { + var bol = await BLLFactory<Yw.BLL.HydroMonitor>.Instance.Save(_hydroInfo.ID, visual.Code, list); + if (!bol) + { + TipFormHelper.ShowError("璁剧疆澶辫触锛�"); + return; + } + TipFormHelper.ShowSucceed("璁剧疆鎴愬姛锛�"); + var monitorList = await monitorHelper.Update(visual.Code); + var monitorValueHelper = GetMonitorValueHelper(); + monitorValueHelper.Update(visual.Code, monitorList); + var monitorMarkerHelper = await GetMonitorMarkerHelper(); + monitorMarkerHelper.Update(visual.Code, monitorList); + monitorMarkerHelper.Set(); + }; + dlg.ShowDialog(); + } + + //璁剧疆鐩戞祴鐐� + private void barBtnSetMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + SetMonitorList(_visual); + } + + #endregion + + #region 鐩戞祴鍊� + + //鐩戞祴鍊艰緟鍔╃被 + private SimulationMonitorValueHelper _monitorValueHelper = null; + + //鑾峰彇鐩戞祴鍊艰緟鍔╃被 + private SimulationMonitorValueHelper GetMonitorValueHelper() + { + if (_monitorValueHelper == null) + { + var visualListHelper = GetVisualListHelper(); + var monitorHelper = GetMonitorHelper(); + _monitorValueHelper = new SimulationMonitorValueHelper(visualListHelper, monitorHelper); + } + return _monitorValueHelper; + } + + #endregion + + #region 鐩戞祴鍊兼帶浠� + + //鐩戞祴鍊煎垪琛ㄦ帶浠� + private HydroMonitorValueListCtrl _monitorValueListCtrl = null; + + //鑾峰彇鐩戞祴鍊煎垪琛ㄦ帶浠� + private HydroMonitorValueListCtrl GetMonitorValueListCtrl() + { + if (_monitorValueListCtrl == null) + { + _monitorValueListCtrl = new HydroMonitorValueListCtrl(); + _monitorValueListCtrl.Dock = DockStyle.Fill; + _monitorValueListCtrl.HydroViewEvent += (code) => + { + var visualListHelper = GetVisualListHelper(); + var visual = visualListHelper.GetVisual(code); + SelectVisual(visual, eVisualSource.Monitor); + }; + } + return _monitorValueListCtrl; + } + + //鐩戞祴鍊煎垪琛ㄦ帶浠舵槸鍚﹀彲瑙� + private bool IsMonitorValueListCtrlVisible + { + get + { + if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) + { + if (this.controlContainerBottom.Controls.Count > 0) + { + if (this.controlContainerBottom.Controls[0] is HydroMonitorValueListCtrl) + { + return true; + } + } + } + return false; + } + } + + //鏄剧ず鐩戞祴鍊煎垪琛ㄦ帶浠� + private async void ShowMonitorValueListCtrl() + { + var monitorValueListCtrl = GetMonitorValueListCtrl(); + if (!IsMonitorValueListCtrlVisible) + { + this.controlContainerBottom.Controls.Clear(); + this.controlContainerBottom.Controls.Add(monitorValueListCtrl); + this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlBottom.Text = "鐩戞祴鍊�"; + this.docPnlBottom.Height = 350; + } + var monitorValueHelper = GetMonitorValueHelper(); + var allMonitorValueList = await monitorValueHelper.Get(); + monitorValueListCtrl.SetBindingData(allMonitorValueList); + } + + //璁剧疆鐩戞祴鍊� + private void barBtnSetMonitorValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + ShowMonitorValueListCtrl(); + } + + #endregion + + #region 鐩戞祴鐐规爣璁� + + //鐩戞祴鏍囪杈呭姪绫� + private SimulationMonitorMarkerHelper _monitorMarkerHelper = null; + + //鑾峰彇鐩戞祴鏍囪杈呭姪绫� + private async Task<SimulationMonitorMarkerHelper> GetMonitorMarkerHelper() + { + if (_monitorMarkerHelper == null) + { + var monitorHelper = GetMonitorHelper(); + var bimfaceCtrl = await GetBimfaceCtrl(); + _monitorMarkerHelper = new SimulationMonitorMarkerHelper(monitorHelper, bimfaceCtrl); + } + return _monitorMarkerHelper; + } + + //鏄剧ず鐘舵�佹敼鍙� + private async void barCkMonitor_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var monitorMarkerHelper = await GetMonitorMarkerHelper(); + monitorMarkerHelper.Visible = this.barCkMonitor.Checked; + monitorMarkerHelper.Set(); + } + + #endregion + + #endregion + + #region 妯″瀷妫�鏌� + + //妫�鏌ユ帶浠� + private HydroCheckResultCtrl _checkCtrl = null; + + //鑾峰彇妫�鏌ユ帶浠� + private HydroCheckResultCtrl GetCheckCtrl() + { + if (_hydroInfo == null) + { + return default; + } + if (_checkCtrl == null) + { + _checkCtrl = new HydroCheckResultCtrl(); + _checkCtrl.Dock = DockStyle.Fill; + _checkCtrl.HydroClickEvent += (code) => + { + var visualListHelper = GetVisualListHelper(); + var visual = visualListHelper.GetVisual(code); + SelectVisual(visual, eVisualSource.Check); + }; + } + return _checkCtrl; + } + + //妫�鏌ユ帶浠舵槸鍚﹀彲瑙� + private bool IsCheckCtrlVisible + { + get + { + if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) + { + if (this.controlContainerBottom.Controls.Count > 0) + { + if (this.controlContainerBottom.Controls[0] is HydroCheckResultCtrl) + { + return true; + } + } + } + return false; + } + } + + //鏄剧ず妫�鏌ユ帶浠� + private void ShowCheckCtrl(HydroCheckResult checkResult) + { + if (checkResult == null) + { + return; + } + var checkCtrl = GetCheckCtrl(); + if (!IsCheckCtrlVisible) + { + this.controlContainerBottom.Controls.Clear(); + this.controlContainerBottom.Controls.Add(checkCtrl); + this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlBottom.Text = "妫�鏌ョ粨鏋�"; + this.docPnlBottom.Height = 350; + } + checkCtrl.SetBindingData(checkResult); + } + + //鏄剧ず妫�鏌ユ帶浠� + private void ShowCheckCtrl() + { + var checkResult = GetCheckResult(); + ShowCheckCtrl(checkResult); + } + + //妫�鏌� + private void barBtnCheck_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (_hydroInfo == null) + { + return; + } + var checkResult = _hydroInfo.Check(); + ShowCheckCtrl(checkResult); + } + + #endregion + + #region 妯″瀷璁$畻 + + #region 璁$畻缁撴灉 + + //璁$畻缁撴灉杈呭姪绫� + private SimulationCalcuResultHelper _calcuResultHelper = null; + + //鑾峰彇璁$畻缁撴灉杈呭姪绫� + private SimulationCalcuResultHelper GetCalcuResultHelper() + { + if (_calcuResultHelper == null) + { + var workingHelper = GetWorkingHelper(); + _calcuResultHelper = new SimulationCalcuResultHelper(workingHelper); + var calcuResult = GetCalcuResult(); + _calcuResultHelper.InitialData(); + } + return _calcuResultHelper; + } + + #endregion + + #region 璁$畻澶辫触 + + //璁$畻澶辫触鎺т欢 + private HydroCalcuFailedCtrl _calcuFailedCtrl = null; + + //鑾峰彇璁$畻澶辫触鎺т欢 + private HydroCalcuFailedCtrl GetCalcuFailedCtrl() + { + if (_calcuFailedCtrl == null) + { + _calcuFailedCtrl = new HydroCalcuFailedCtrl(); + _calcuFailedCtrl.Dock = DockStyle.Fill; + } + return _calcuFailedCtrl; + } + + //璁$畻澶辫触鎺т欢鏄惁鍙 + private bool IsCalcuFailedCtrlVisible + { + get + { + if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) + { + if (this.controlContainerBottom.Controls.Count > 0) + { + if (this.controlContainerBottom.Controls[0] is HydroCalcuFailedCtrl) + { + return true; + } + } + } + return false; + } + } + + //鏄剧ず璁$畻澶辫触鎺т欢 + private void ShowCalcuFailedCtrl(HydroCalcuResult calcuResult) + { + if (_hydroInfo == null) + { + return; + } + if (calcuResult == null) + { + return; + } + if (calcuResult.Succeed) + { + return; + } + var calcuFailedCtrl = GetCalcuFailedCtrl(); + if (!IsCalcuFailedCtrlVisible) + { + this.controlContainerBottom.Controls.Clear(); + this.controlContainerBottom.Controls.Add(calcuFailedCtrl); + this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlBottom.Text = "璁$畻澶辫触鍘熷洜"; + this.docPnlBottom.Height = 350; + } + calcuFailedCtrl.SetBindingData(calcuResult.FailedList); + } + + #endregion + + #region 璁$畻璀﹀憡 + + //璁$畻璀﹀憡鎺т欢 + private HydroCalcuWarningCtrl _calcuWarningCtrl = null; + + //鑾峰彇璁$畻璀﹀憡鎺т欢 + private HydroCalcuWarningCtrl GetCalcuWarningCtrl() + { + if (_calcuWarningCtrl == null) + { + _calcuWarningCtrl = new HydroCalcuWarningCtrl(); + _calcuWarningCtrl.Dock = DockStyle.Fill; + _calcuWarningCtrl.HydroClickEvent += (code) => + { + var visualListHelper = GetVisualListHelper(); + var visual = visualListHelper.GetVisual(code); + SelectVisual(visual, eVisualSource.Warning); + }; + } + return _calcuWarningCtrl; + } + + //璁$畻璀﹀憡鎺т欢鏄惁鍙 + private bool IsCalcuWarningCtrlVisible + { + get + { + if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) + { + if (this.controlContainerBottom.Controls.Count > 0) + { + if (this.controlContainerBottom.Controls[0] is HydroCalcuWarningCtrl) + { + return true; + } + } + } + return false; + } + } + + //鏄剧ず璁$畻璀﹀憡鎺т欢 + private void ShowCalcuWarningCtrl(HydroCalcuResult calcuResult) + { + if (_hydroInfo == null) + { + return; + } + if (calcuResult == null) + { + return; + } + if (!calcuResult.Succeed) + { + return; + } + var calcuWaringCtrl = GetCalcuWarningCtrl(); + if (!IsCalcuWarningCtrlVisible) + { + this.controlContainerBottom.Controls.Clear(); + this.controlContainerBottom.Controls.Add(calcuWaringCtrl); + this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlBottom.Text = "璁$畻璀﹀憡"; + this.docPnlBottom.Height = 350; + } + var visualListHelper = GetVisualListHelper(); + var allVisualDict = visualListHelper.GetVisualDict(); + calcuWaringCtrl.SetBindingData(calcuResult.WainingList, allVisualDict); + } + + #endregion + + #region 璁$畻鏍囩 + + //璁$畻鏍囩杈呭姪绫� + private SimulationCalcuResultLabelHelper _calcuResultLabelHelper = null; + + //鑾峰彇璁$畻鏍囩杈呭姪绫� + private async Task<SimulationCalcuResultLabelHelper> GetCalcuResultLabelHelper() + { + if (_calcuResultLabelHelper == null) + { + var visualListHelper = GetVisualListHelper(); + var calcuResultHelper = GetCalcuResultHelper(); + var bimfaceCtrl = await GetBimfaceCtrl(); + _calcuResultLabelHelper = new SimulationCalcuResultLabelHelper(visualListHelper, calcuResultHelper, bimfaceCtrl); + } + return _calcuResultLabelHelper; + } + + //璁剧疆璁$畻鏍囩鏄惁鏄剧ず + private async void barCkCalcu_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var calcuResultLabelHelper = await GetCalcuResultLabelHelper(); + calcuResultLabelHelper.Visible = this.barCkCalcu.Checked; + calcuResultLabelHelper.Set(); + } + + #endregion + + #endregion + + #region 绠$綉淇 + + //淇绠$綉 + private void Repair() + { + if (_hydroInfo == null) + { + return; + } + var checkResult = _hydroInfo.Check(); + if (!checkResult.Succeed) + { + ShowCheckCtrl(checkResult); + TipFormHelper.ShowWarn("妫�鏌ュけ璐ュ鑷存棤娉曡繘琛岃瘯绠楋紝鍋滄绠$綉淇锛�"); + return; + } + var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.Simple); + if (!calcuResult.Succeed) + { + ShowCalcuFailedCtrl(calcuResult); + TipFormHelper.ShowWarn("璇曠畻澶辫触锛屽仠姝㈢缃戜慨澶嶏紒"); + return; + } + var visualListHelper = GetVisualListHelper(); + var allLinkList = visualListHelper.GetLinkList(); + if (allLinkList != null && allLinkList.Count < 1) + { + TipFormHelper.ShowError("妯″瀷涓湭鍖呭惈绠℃淇℃伅锛屽仠姝㈢缃戜慨澶嶏紒"); + return; + } + int count = 0; + foreach (var link in allLinkList) + { + var calcuLink = calcuResult.LinkList?.Find(x => x.Code == link.Code); + if (calcuLink == null) + { + continue; + } + if (!calcuLink.CalcuFlow.HasValue) + { + continue; + } + if (calcuLink.CalcuFlow.Value < 0) + { + var tempCode = link.StartCode; + link.StartCode = link.EndCode; + link.EndCode = tempCode; + count++; + } + } + var visualVmListHelper = GetVisualVmListHelper(); + visualVmListHelper.UpdateProperty(); + UpdateVisualListCtrl(); + UpdatePropertyCtrl(); + TipFormHelper.ShowSucceed($"淇瀹屾垚锛屽叡淇绠℃({count})涓紒"); + } + + //绠$綉淇 + private void barBtnRepair_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + Repair(); + } + + #endregion + + #region 瀵煎嚭INP + + //瀵煎嚭INP鏂囦欢 + private void barBtnExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (_hydroInfo == null) + { + return; + } + var fileName = FileDialogHelper.SaveInp("瀵煎嚭Inp鏂囦欢"); + if (string.IsNullOrEmpty(fileName)) + { + return; + } + var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); + var result = netWork.ToInpString(); + File.WriteAllText(fileName, result); + TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛"); + } + + #endregion + + #region 骞惰仈璁$畻 + + //骞惰仈鍒嗘瀽 + private void ParallelAnalysis() + { + if (_hydroInfo == null) + { + return; + } + var pumps = _hydroInfo.Pumps; + if (pumps == null || pumps.Count < 1) + { + XtraMessageBox.Show("鏃犳按娉典俊鎭�"); + return; + } + var vmList = new List<XhsSinglePumpViewModel>(); + foreach (var pump in pumps) + { + if (!pump.RatedN.HasValue) + { + continue; + } + var qh = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQH)?.CurveData; + var qe = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQE)?.CurveData; + var qp = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQP)?.CurveData; + if (qh == null) + { + continue; + } + + var qhPtList = qh.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); + var qePtList = qe?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); + var qpPtList = qp?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList(); + + var vm = new XhsSinglePumpViewModel(); + vmList.Add(vm); + vm.ID = pump.ID; + vm.Name = pump.Name; + vm.Code = pump.Code; + vm.IsBp = true; + vm.RunStatus = pump.LinkStatus == Yw.Hydro.LinkStatus.Open; + vm.RatedHz = pump.RatedHz; + vm.CurrentHz = Math.Round(pump.RatedHz * pump.SpeedRatio, 1); + vm.RatedSpeed = pump.RatedN.Value; + vm.CurrentSpeed = Math.Round(pump.RatedN.Value * pump.SpeedRatio, 1); + vm.CurveQH = qhPtList; + vm.CurveQE = qePtList; + vm.CurveQP = qpPtList; + + } + + var dlg = new PumpParallelAnalyDlg(); + dlg.SetBindingData(vmList); + dlg.ReloadDataEvent += (list) => + { + list?.ForEach(x => + { + var pump = pumps.Find(t => t.Code == x.Code); + if (pump != null) + { + pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed; + pump.SpeedRatio = x.CurrentHz / pump.RatedHz; + } + }); + var codes = list?.Select(x => x.Code).ToList(); + //UpdateVisualViewModelProperty(codes); + //ShowSelectedProperty(); + UpdateVisualListCtrl(); + return true; + }; + dlg.ShowDialog(); + } + + //骞惰仈鍒嗘瀽 + private void barBtnParallel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + ParallelAnalysis(); + } + + #endregion + + #region 宸ュ喌璁$畻 + + //宸ュ喌鍏冪粍杈呭姪绫� + private SimulationWorkingTupleHelper _workingTupleHelper = null; + + //鑾峰彇宸ュ喌鍏冪粍杈呭姪绫� + private SimulationWorkingTupleHelper GetWorkingTupleHelper() + { + if (_workingTupleHelper == null) + { + var visualListHelper = GetVisualListHelper(); + _workingTupleHelper = new SimulationWorkingTupleHelper(visualListHelper); + } + return _workingTupleHelper; + } + + //璁剧疆宸ュ喌绐椾綋 + private async void CalcuWorking() + { + if (_hydroInfo == null) + { + return; + } + var workingTupleHelper = GetWorkingTupleHelper(); + var allWorkingList = await workingTupleHelper.GetWorkingList(); + var monitorValueHelper = GetMonitorValueHelper(); + var allMonitorValueList = await monitorValueHelper.Get(); + var dlg = new SetHydroWorkingDlg(); + dlg.SetBindingData(_hydroInfo, allWorkingList, allMonitorValueList); + dlg.HydroViewEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Calcu); + }; + dlg.HydroCalcuEvent += async (working) => + { + var vmo = new HydroWorkingVmo(); + vmo.ModelID = _hydroInfo.ID; + vmo.Name = working.Name; + vmo.WorkingInfo = JsonHelper.Object2Json(working.WorkingInfo); + vmo.MonitorInfo = JsonHelper.Object2Json(working.MonitorInfo); + vmo.SortCode = allWorkingList.Count < 1 ? 1 : allWorkingList.Max(x => x.SortCode) + 1; + vmo.Description = working.Description; + vmo.ID = await BLLFactory<Yw.BLL.HydroWorking>.Instance.Insert(vmo); + if (vmo.ID < 1) + { + TipFormHelper.ShowError("鍒涘缓宸ュ喌澶辫触锛岃绠楀彇娑堬紒"); + return; + } + + _hydroInfo.UpdateWorkingInfo(working.WorkingInfo); + + //鏍¢獙 + var checkResult = _hydroInfo.Check(); + if (!checkResult.Succeed) + { + ShowCheckCtrl(checkResult); + workingTupleHelper.AppendTuple(vmo, checkResult, null); + SetUIWorking(vmo); + TipFormHelper.ShowError("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯"); + } + else + { + WaitFormHelper.ShowWaitForm(this, "姝e湪璁$畻鍒嗘瀽涓紝璇风◢鍊�..."); + //await Task.Delay(3000); + var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss); + WaitFormHelper.HideWaitForm(); + workingTupleHelper.AppendTuple(vmo, checkResult, calcuResult); + if (calcuResult.Succeed) + { + if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0) + { + ShowCalcuWarningCtrl(calcuResult); + } + TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�"); + } + else + { + ShowCalcuFailedCtrl(calcuResult); + TipFormHelper.ShowError("璁$畻澶辫触锛�"); + } + } + AppendUIWorking(vmo); + SetUIWorking(vmo); + }; + + dlg.ShowDialog(); + } + + //宸ュ喌璁$畻 + private void barBtnWorkingCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + CalcuWorking(); + } + + #endregion + + #region 宸ュ喌鍒嗘瀽 + + #region 褰撳墠宸ュ喌 + + //宸ュ喌杈呭姪绫� + private SimulationWorkingHelper _workingHelper = null; + + //鑾峰彇宸ュ喌杈呭姪绫� + private SimulationWorkingHelper GetWorkingHelper() + { + if (_workingHelper == null) + { + _workingHelper = new SimulationWorkingHelper(); + } + return _workingHelper; + } + + //鑾峰彇宸ュ喌 + private HydroWorkingVmo GetWorking() + { + var workingHelper = GetWorkingHelper(); + return workingHelper.Working; + } + + //鑾峰彇妫�鏌ョ粨鏋� + private HydroCheckResult GetCheckResult() + { + var workingHelper = GetWorkingHelper(); + return workingHelper.CheckResult; + } + + //鑾峰彇璁$畻缁撴灉 + private HydroCalcuResult GetCalcuResult() + { + var workingHelper = GetWorkingHelper(); + return workingHelper.CalcuResult; + } + + //鍒濆鍖朥I宸ュ喌鍒楄〃 + private void InitialUIWorkingList(List<HydroWorkingVmo> allWorkingList) + { + this.repositoryItemImageComboBox1.Items.BeginUpdate(); + this.repositoryItemImageComboBox1.Items.Clear(); + if (allWorkingList != null && allWorkingList.Count > 0) + { + allWorkingList.ForEach(x => this.repositoryItemImageComboBox1.Items.Add(x.Name, x, -1)); + } + this.repositoryItemImageComboBox1.Items.EndUpdate(); + } + + //澧炲姞UI宸ュ喌 + private void AppendUIWorking(HydroWorkingVmo working) + { + this.repositoryItemImageComboBox1.Items.BeginUpdate(); + this.repositoryItemImageComboBox1.Items.Add(working.Name, working, -1); + this.repositoryItemImageComboBox1.Items.EndUpdate(); + } + + //璁剧疆UI宸ュ喌 + private void SetUIWorking(HydroWorkingVmo working) + { + this.barEditCurrentWorking.EditValue = working; + } + + //褰撳墠宸ュ喌鍙戠敓鏀瑰彉 + private async void barEditCurrentWorking_EditValueChanged(object sender, EventArgs e) + { + if (_hydroInfo == null) + { + return; + } + var working = this.barEditCurrentWorking.EditValue as HydroWorkingVmo; + if (working == null) + { + return; + } + + #region 宸ュ喌鍏冪粍 + + var workingTupleHelper = GetWorkingTupleHelper(); + var workingTuple = await workingTupleHelper.GetTuple(working); + if (workingTuple == null) + { + return; + } + + #endregion + + #region 褰撳墠宸ュ喌 + + var workingHelper = GetWorkingHelper(); + workingHelper.InitialData(workingTuple.Item1, workingTuple.Item2, workingTuple.Item3); + + #endregion + + #region 姘村姏淇℃伅 + + var workingInfo = JsonHelper.Json2Object<HydroWorkingInfoViewModel>(working.WorkingInfo); + _hydroInfo.UpdateWorkingInfo(workingInfo); + + + #endregion + + #region 宸ュ喌鎺т欢 + + UpdateWorkingCtrl(); + SelectWorkingCtrl(working); + + #endregion + + #region 璁$畻缁撴灉 + + var calcuResultHelper = GetCalcuResultHelper(); + calcuResultHelper.InitialData(); + + #endregion + + #region 瑙嗗浘鍒楄〃 + + var visualVmListHelper = GetVisualVmListHelper(); + visualVmListHelper.UpdateCalcuProperty(workingHelper.CalcuResult); + + #endregion + + #region 璁$畻鏍囩 + + var calcuResultLabelHelper = await GetCalcuResultLabelHelper(); + calcuResultLabelHelper.Set(); + + #endregion + + } + + #endregion + + #region 宸ュ喌鎺т欢 + + //宸ュ喌鎺т欢 + private HydroWorkingTreeCtrl _workingCtrl = null; + + //鑾峰彇宸ュ喌鎺т欢 + private HydroWorkingTreeCtrl GetWorkingCtrl() + { + if (_workingCtrl == null) + { + _workingCtrl = new HydroWorkingTreeCtrl(); + _workingCtrl.Dock = DockStyle.Fill; + _workingCtrl.HydroClickEvent += (working) => + { + SetUIWorking(working); + }; + } + return _workingCtrl; + } + + //宸ュ喌鎺т欢鏄惁鍙 + private bool IsWorkingCtrlVisible + { + get + { + if (this.docPnlRight.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible) + { + if (this.controlContainerRight.Controls.Count > 0) + { + if (this.controlContainerRight.Controls[0] is HydroWorkingTreeCtrl) + { + return true; + } + } + } + return false; + } + } + + //鏄剧ず宸ュ喌鎺т欢 + private async void ShowWorkingCtrl() + { + var workingCtrl = GetWorkingCtrl(); + if (!IsWorkingCtrlVisible) + { + this.controlContainerRight.Controls.Clear(); + this.controlContainerRight.Controls.Add(workingCtrl); + this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlRight.Text = "宸ュ喌"; + this.docPnlRight.Width = 300; + } + var workingTupleHelper = GetWorkingTupleHelper(); + var allWorkingList = await workingTupleHelper.GetWorkingList(); + workingCtrl.SetBindingData(allWorkingList); + } + + //鏇存柊宸ュ喌鎺т欢 + private async void UpdateWorkingCtrl() + { + if (!IsWorkingCtrlVisible) + { + return; + } + var workingTupleHelper = GetWorkingTupleHelper(); + var allWorkingList = await workingTupleHelper.GetWorkingList(); + var workingCtrl = GetWorkingCtrl(); + workingCtrl.SetBindingData(allWorkingList); + } + + //閫夋嫨宸ュ喌鎺т欢 + private void SelectWorkingCtrl(HydroWorkingVmo working) + { + if (IsWorkingCtrlVisible) + { + var workingCtrl = GetWorkingCtrl(); + workingCtrl.Select(working); + } + } + + //宸ュ喌鍒楄〃鐐瑰嚮 + private void barBtnWorkingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + ShowWorkingCtrl(); + } + + #endregion + + #region 宸ュ喌璇勪及 + + //璇勪及 + private async void Evaluate() + { + if (_hydroInfo == null) + { + return; + } + var working = GetWorking(); + if (working == null) + { + TipFormHelper.ShowWarn("灏氭湭璁$畻锛岃璁$畻鍚庨噸璇曪紒"); + return; + } + var checkResult = GetCheckResult(); + if (checkResult == null) + { + return; + } + if (!checkResult.Succeed) + { + ShowCheckCtrl(checkResult); + TipFormHelper.ShowWarn("妫�鏌ュけ璐ワ紝鍋滄璇勪及锛�"); + return; + } + var calcuResult = GetCalcuResult(); + if (!calcuResult.Succeed) + { + ShowCalcuFailedCtrl(calcuResult); + TipFormHelper.ShowWarn("璁$畻澶辫触锛屽仠姝㈣瘎浼帮紒"); + return; + } + if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0) + { + ShowCalcuWarningCtrl(calcuResult); + TipFormHelper.ShowWarn("璇峰叧娉ㄨ鍛婁俊鎭紒"); + } + var visualListHelper = GetVisualListHelper(); + var allVisualDict = visualListHelper.GetVisualDict(); + var monitorHelper = GetMonitorHelper(); + var allMonitorList = await monitorHelper.Get(); + var allWorkingMonitorList = JsonHelper.Json2Object<List<HydroWorkingMonitorViewModel>>(working.MonitorInfo); + var allCalcuResultDict = calcuResult.GetVisualDict(); + var dlg = new HydroWorkingEvaluationDlg(); + dlg.SetBindingData(allVisualDict, allMonitorList, allWorkingMonitorList, allCalcuResultDict); + dlg.ShowDialog(); + } + + //绮惧害璇勪及 + private void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + Evaluate(); + } + + #endregion + + #region 宸ュ喌骞惰仈 //骞惰仈鍒嗘瀽 private void barBtnAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -1132,7 +2461,8 @@ { return; } - var allCalcuResultList = GetCalcuResultList(); + + var calcuResultHelper = GetCalcuResultHelper(); var vmList = new List<XhsSinglePumpViewModel>(); foreach (var pump in _hydroInfo.Pumps) { @@ -1167,26 +2497,27 @@ vm.CurveQE = qePtList; vm.CurveQP = qpPtList; - if (allCalcuResultList != null && allCalcuResultList.Count > 0) + var calcuResultVisualDict = calcuResultHelper.GetVisualDict(); + if (calcuResultVisualDict != null && calcuResultVisualDict.Count > 0) { - var calcuResult = allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult; - if (calcuResult != null) - { - if (calcuResult.CalcuFlow.HasValue) - { - vm.CalcuQ = Math.Abs(calcuResult.CalcuFlow.Value); - } + //var calcuResult = allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult; + //if (calcuResult != null) + //{ + // if (calcuResult.CalcuFlow.HasValue) + // { + // vm.CalcuQ = Math.Abs(calcuResult.CalcuFlow.Value); + // } - var calcuResultStart = allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult; - var calcuResultEnd = allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult; - if (calcuResultStart != null && calcuResultEnd != null) - { - if (calcuResultStart.CalcuHead.HasValue && calcuResultEnd.CalcuHead.HasValue) - { - vm.CalcuH = Math.Round(Math.Abs(calcuResultStart.CalcuHead.Value - calcuResultEnd.CalcuHead.Value), 4); - } - } - } + // var calcuResultStart = allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult; + // var calcuResultEnd = allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult; + // if (calcuResultStart != null && calcuResultEnd != null) + // { + // if (calcuResultStart.CalcuHead.HasValue && calcuResultEnd.CalcuHead.HasValue) + // { + // vm.CalcuH = Math.Round(Math.Abs(calcuResultStart.CalcuHead.Value - calcuResultEnd.CalcuHead.Value), 4); + // } + // } + //} } } @@ -1204,7 +2535,7 @@ pump.SpeedRatio = Math.Round(x.CurrentHz / pump.RatedHz, 1); } }); - ShowProperty(); + //ShowSelectedProperty(); return true; }; dlg.ShowDialog(); @@ -1212,1932 +2543,43 @@ #endregion - #region 姘村姏璁$畻 + #region 宸ュ喌鑳芥晥 - - #region 鍓嶆彁鏉′欢 - - //鏄剧ず璁$畻鍓嶆彁鏉′欢绐椾綋 - private void ShowCalcuPrefixDlg() + private void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - if (_hydroInfo == null) - { - return; - } - var dlg = new HStation.WinFrmUI.SetHydroCalcuPrefixDlg1(); - dlg.SetBindingData(_hydroInfo); - dlg.HydroViewEvent += async (parter) => - { - _selectedParter = parter; - if (_selectedParter != null) - { - await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _selectedParter.Code }); - } - ShowProperty(); - }; - dlg.HydroCalcuEvent += async () => - { - if (_hydroInfo == null) - { - return; - } - - //鏍¢獙 - _checkResult = _hydroInfo.Check(); - if (!_checkResult.Succeed) - { - ShowCheckCtrl(); - TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯"); - return; - } - - WaitFormHelper.ShowWaitForm(this, "姝e湪璁$畻鍒嗘瀽涓紝璇风◢鍊�..."); - - - //await Task.Delay(5000); - - var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); - _calcuResult = netWork.Calcu(); - - WaitFormHelper.HideWaitForm(); - if (_calcuResult.Succeed) - { - GetCalcuResultList(false); - await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult); - TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�"); - } - else - { - ShowCalcuFailedCtrl(); - TipFormHelper.ShowError("璁$畻澶辫触锛�"); - } - - }; - dlg.ShowDialog(); - } - - //鏄剧ず宸ュ喌璁$畻绐椾綋 - private void ShowWorkingCalcuDlg() - { - var dlg = new SetHydroWorkingInfoDlg(); - dlg.HydroViewEvent += async (parter) => - { - _selectedParter = parter; - if (_selectedParter != null) - { - await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _selectedParter.Code }); - } - ShowProperty(); - }; - dlg.HydroCalcuEvent += async (hydroInfo, workingInfo) => - { - if (_hydroInfo == null) - { - return; - } - _hydroInfo.UpdateWorkingInfo(workingInfo); - //鏍¢獙 - _checkResult = _hydroInfo.Check(); - if (!_checkResult.Succeed) - { - ShowCheckCtrl(); - TipFormHelper.ShowWarn("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯"); - return; - } - - WaitFormHelper.ShowWaitForm(this, "姝e湪璁$畻鍒嗘瀽涓紝璇风◢鍊�..."); - - - await Task.Delay(5000); - - var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); - _calcuResult = netWork.Calcu(); - - WaitFormHelper.HideWaitForm(); - if (_calcuResult.Succeed) - { - GetCalcuResultList(false); - await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult); - TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�"); - var codes = _hydroInfo.Pumps.Select(x => x.Code).ToList(); - await _bimfaceCtrl?.ZoomAndSelectComponents(codes); - } - else - { - ShowCalcuFailedCtrl(); - TipFormHelper.ShowError("璁$畻澶辫触锛�"); - } - AutoApplyGrading(); - UpdateParterListProperty(); - ShowProperty(); - }; - dlg.SetBindingData(_hydroInfo); - dlg.ShowDialog(); + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); } #endregion - #region 璁$畻澶辫触 + #region 鎹熷け鏇茬嚎 - //璁$畻澶辫触鎺т欢 - private HydroCalcuFailedCtrl _calcuFailedCtrl = null; - - //鑾峰彇璁$畻澶辫触鎺т欢 - private HydroCalcuFailedCtrl GetCalcuFailedCtrl() + private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - if (_calcuFailedCtrl == null) - { - _calcuFailedCtrl = new HydroCalcuFailedCtrl(); - _calcuFailedCtrl.Dock = DockStyle.Fill; - } - return _calcuFailedCtrl; - } - - //鏄剧ず璁$畻澶辫触鎺т欢 - private void ShowCalcuFailedCtrl() - { - if (_hydroInfo == null) - { - return; - } - if (_calcuResult == null) - { - return; - } - if (_calcuResult.Succeed) - { - return; - } - var calcuFailedCtrl = GetCalcuFailedCtrl(); - calcuFailedCtrl.SetBindingData(_calcuResult.FailedList); - this.controlContainerBottom.Controls.Clear(); - this.controlContainerBottom.Controls.Add(calcuFailedCtrl); - this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlBottom.Text = "璁$畻澶辫触鍘熷洜"; - this.docPnlBottom.Height = 350; + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); } #endregion - #region 璁$畻缁撴灉 + #region 鎹熷け姣斾緥 - //鎵�鏈夎绠楃粨鏋滃垪琛� - private List<HydroCalcuResult> _allCalcuResultList = null; - - //鑾峰彇璁$畻缁撴灉 - //true 浣跨敤缂撳瓨锛宖alse 涓嶄娇鐢ㄧ紦瀛� - private List<HydroCalcuResult> GetCalcuResultList(bool isCache = true) + private void barBtnWorkingLossScale_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - if (_hydroInfo == null) - { - return default; - } - if (_calcuResult == null) - { - return default; - } - if (!_calcuResult.Succeed) - { - return default; - } - if (isCache) - { - return _allCalcuResultList; - } - - _allCalcuResultList = new List<HydroCalcuResult>(); - - //鑺傜偣 - var allNodeList = _hydroInfo.GetAllNodes(); - if (allNodeList != null && allNodeList.Count > 0) - { - foreach (var node in allNodeList) - { - var calcuNode = _calcuResult.NodeList?.Find(x => x.Id == node.Code); - if (calcuNode != null) - { - var calcuResult = new HydroCalcuNodeResult() - { - Code = node.Code, - CalcuPress = calcuNode.Press, - CalcuHead = calcuNode.Head, - CalcuDemand = calcuNode.Demand - }; - _allCalcuResultList.Add(calcuResult); - } - } - } - - //绠℃ - var allLinkList = _hydroInfo.GetAllLinks(); - if (allLinkList != null && allLinkList.Count > 0) - { - foreach (var link in allLinkList) - { - var calcuLink = _calcuResult.LinkList?.Find(x => x.Id == link.Code); - if (calcuLink != null) - { - var calcuResult = new HydroCalcuLinkResult() - { - Code = link.Code, - CalcuFlow = calcuLink.Flow, - CalcuVelocity = calcuLink.Velocity, - CalcuHeadLoss = calcuLink.Headloss - }; - _allCalcuResultList.Add(calcuResult); - } - } - } - - //娴侀噺璁� - var allFlowmeterList = _hydroInfo.Flowmeters; - if (allFlowmeterList != null && allFlowmeterList.Count > 0) - { - foreach (var flowmeter in allFlowmeterList) - { - var calcuFlowmeterResult = _allCalcuResultList.Find(x => x.Code == flowmeter.Code) as HydroCalcuNodeResult; - if (calcuFlowmeterResult != null) - { - var calcuFlowmeterNewResult = new HydroCalcuFlowmeterResult(calcuFlowmeterResult); - var calcuFlowmeterLinkResultList = new List<HydroCalcuLinkResult>(); - var flowmeterLinkList = allLinkList?.Where(x => x.StartCode == flowmeter.Code || x.EndCode == flowmeter.Code).ToList(); - if (flowmeterLinkList != null && flowmeterLinkList.Count > 0) - { - foreach (var flowmeterLink in flowmeterLinkList) - { - var calcuFlowmeterLinkResult = _allCalcuResultList.Find(x => x.Code == flowmeterLink.Code) as HydroCalcuLinkResult; - if (calcuFlowmeterLinkResult != null) - { - calcuFlowmeterLinkResultList.Add(calcuFlowmeterLinkResult); - } - } - } - if (calcuFlowmeterLinkResultList.Exists(x => x.CalcuFlow.HasValue)) - { - calcuFlowmeterNewResult.CalcuQ = calcuFlowmeterLinkResultList.Where(x => x.CalcuFlow.HasValue).Average(x => x.CalcuFlow.Value); - } - _allCalcuResultList.Remove(calcuFlowmeterResult); - _allCalcuResultList.Add(calcuFlowmeterNewResult); - } - } - } - - //鍘嬪姏琛� - var allPressmeterList = _hydroInfo.Pressmeters; - if (allPressmeterList != null && allPressmeterList.Count > 0) - { - foreach (var pressmeter in allPressmeterList) - { - var calcuPressmeterResult = _allCalcuResultList.Find(x => x.Code == pressmeter.Code) as HydroCalcuNodeResult; - if (calcuPressmeterResult != null) - { - var calcuPressmeterNewResult = new HydroCalcuPressmeterResult(calcuPressmeterResult); - calcuPressmeterNewResult.CalcuPr = calcuPressmeterResult.CalcuPress; - _allCalcuResultList.Remove(calcuPressmeterResult); - _allCalcuResultList.Add(calcuPressmeterNewResult); - } - } - } - - //姘存车 - var allPumpList = _hydroInfo.Pumps; - if (allPumpList != null && allPumpList.Count > 0) - { - foreach (var pump in allPumpList) - { - var calcuPumpResult = _allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult; - if (calcuPumpResult != null) - { - var calcuPumpNewResult = new HydroCalcuPumpResult(calcuPumpResult); - calcuPumpNewResult.CalcuQ = calcuPumpResult.CalcuFlow; - if (calcuPumpNewResult.CalcuQ.HasValue) - { - var calcuNodeStartResult = _allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult; - var calcuNodeEndResult = _allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult; - if (calcuNodeStartResult != null && calcuNodeEndResult != null) - { - if (calcuNodeStartResult.CalcuPress.HasValue && calcuNodeEndResult.CalcuPress.HasValue) - { - calcuPumpNewResult.CalcuH = Math.Abs(calcuNodeStartResult.CalcuPress.Value - calcuNodeEndResult.CalcuPress.Value); - } - if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open && pump.RatedN.HasValue) - { - var curveqp = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP); - if (curveqp != null) - { - if (curveqp.CurveData != null && curveqp.CurveData.Count > 3) - { - var point2dList = curveqp.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); - var point2dSimularList = point2dList.GetQPPointListByN(pump.RatedN.Value, pump.RatedN.Value * pump.SpeedRatio); - var pumpCurveQp = new Yw.Pump.CurveQP(eFeatType.Cubic, point2dSimularList); - calcuPumpNewResult.CalcuP = pumpCurveQp.FeatCurve.GetPointY(calcuPumpNewResult.CalcuQ.Value); - } - } - } - if (calcuPumpNewResult.CalcuH.HasValue && calcuPumpNewResult.CalcuP.HasValue) - { - calcuPumpNewResult.CalcuE = Yw.Pump.CalculationHelper.CalcuE(calcuPumpNewResult.CalcuQ.Value, calcuPumpNewResult.CalcuH.Value, calcuPumpNewResult.CalcuP.Value); - } - } - } - _allCalcuResultList.Remove(calcuPumpResult); - _allCalcuResultList.Add(calcuPumpNewResult); - } - } - } - - return _allCalcuResultList; + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); } #endregion - //姘村姏璁$畻 - private void barBtnHydroCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + #region 缁煎悎鍒嗘瀽 + private void barBtnWorkingAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - //ShowCalcuPrefixDlg(); - ShowWorkingCalcuDlg(); + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); } + + #endregion #endregion - #region 鏋勪欢鏌ヨ - - //鏌ヨ缁勪欢 - private XhsProjectSimulationSearchCtrl _searchCtrl = null; - - //鑾峰彇鏌ヨ缁勪欢 - private XhsProjectSimulationSearchCtrl GetSearchCtrl() - { - if (_searchCtrl == null) - { - _searchCtrl = new XhsProjectSimulationSearchCtrl(); - _searchCtrl.Dock = DockStyle.Fill; - _searchCtrl.InitialData(() => _hydroInfo); - _searchCtrl.ApplySearchEvent += async (list) => - { - if (_hydroInfo == null) - { - return; - } - var elementIds = new List<string>(); - if (list != null && list.Count > 0) - { - var first = list.First(); - var allParterList = _hydroInfo.GetAllParters(); - _selectedParter = allParterList?.Find(x => x.Code == first.Code); - list.ForEach(x => elementIds.Add(x.Code)); - } - else - { - _selectedParter = null; - } - await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds); - ShowProperty(); - }; - } - return _searchCtrl; - } - - //鏄剧ず鏌ヨ鎺т欢 - private void ShowSearchCtrl() - { - if (_hydroInfo == null) - { - return; - } - var searchCtrl = GetSearchCtrl(); - this.controlContainerBottom.Controls.Clear(); - this.controlContainerBottom.Controls.Add(searchCtrl); - this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlBottom.Text = "鏋勪欢鏌ヨ"; - this.docPnlBottom.Height = 350; - } - - //鏌ヨ - private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - ShowSearchCtrl(); - } - - #endregion - - #region 妯″瀷鏍囨敞 - - //鎵�鏈夋爣娉ㄨ缃垪琛� - private List<HydroMarkSetViewModel> _allMarkSetList = null; - - //鑾峰彇鏍囨敞璁剧疆鍒楄〃 - private List<HydroMarkSetViewModel> GetMarkSetList() - { - if (_allMarkSetList == null) - { - _allMarkSetList = new List<HydroMarkSetViewModel>(); - if (_hydroInfo.Waterboxs != null && _hydroInfo.Waterboxs.Count > 0) - { - _allMarkSetList.Add(new HydroMarkSetViewModel() - { - Code = Yw.Hydro.ParterCatalog.Waterbox, - Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Waterbox), - MarkType = (int)eWaterboxMarkType.None - }); - } - if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0) - { - _allMarkSetList.Add(new HydroMarkSetViewModel() - { - Code = Yw.Hydro.ParterCatalog.Pump, - Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pump), - MarkType = (int)eWaterboxMarkType.None - }); - } - if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0) - { - _allMarkSetList.Add(new HydroMarkSetViewModel() - { - Code = Yw.Hydro.ParterCatalog.Valve, - Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Valve), - MarkType = (int)eWaterboxMarkType.None - }); - } - if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0) - { - _allMarkSetList.Add(new HydroMarkSetViewModel() - { - Code = Yw.Hydro.ParterCatalog.Pipe, - Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pipe), - MarkType = (int)eWaterboxMarkType.None - }); - } - if (_hydroInfo.Nozzles != null && _hydroInfo.Nozzles.Count > 0) - { - _allMarkSetList.Add(new HydroMarkSetViewModel() - { - Code = Yw.Hydro.ParterCatalog.Nozzle, - Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Nozzle), - MarkType = (int)eWaterboxMarkType.None - }); - } - } - return _allMarkSetList; - } - - //鎵�鏈夋爣娉ㄧ粨鏋滃垪琛� - private List<HydroMarkResultViewModel> _allMarkResultList = null; - - //鑾峰彇鏍囨敞缁撴灉鍒楄〃 - private List<HydroMarkResultViewModel> GetMarkResultList() - { - if (_hydroInfo == null) - { - 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(); - } - - //璁剧疆鏍囨敞 - private void barBtnSetMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - ShowMarkSetDlg(); - } - - //娓呴櫎鏍囨敞 - private async void barBtnClearMark_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - await ClearMarkResultList(); - } - - #endregion - - #region 棰滆壊鍒嗙骇 - - #region 棰滆壊閰嶇疆 - - //鎵�鏈夊垎绾у垪琛� - private List<HydroGradingVmo> _allGradingList = null; - - //鑾峰彇鍒嗙骇鍒楄〃 - private async Task<List<HydroGradingVmo>> GetGradingList() - { - if (_hydroInfo == null) - { - return default; - } - if (_allGradingList == null) - { - _allGradingList = await BLLFactory<Yw.BLL.HydroGrading>.Instance.GetByModelID(_hydroInfo.ID); - if (_allGradingList == null || _allGradingList.Count < 1) - { - var config = Yw.Settings.HydroParasHelper.Hydro.Grading; - if (config != null && config.Items != null && config.Items.Count > 0) - { - _allGradingList = new List<HydroGradingVmo>(); - config.Items.ForEach(x => - { - var vmo = new HydroGradingVmo() - { - ModelID = _hydroInfo.ID, - Catalog = x.Catalog, - PropName = x.PropName, - SetValue = x.SetValue, - MinValue = x.MinValue, - MaxValue = x.MaxValue, - Color = x.Color, - SortCode = config.Items.IndexOf(x) - }; - _allGradingList.Add(vmo); - }); - } - } - } - return _allGradingList; - } - - //鏄剧ず閰嶇疆棰滆壊鍒嗙骇绐椾綋 - private async void ShowSetGradingDlg() - { - if (_hydroInfo == null) - { - return; - } - var allGradingList = await GetGradingList(); - var dlg = new SetHydroGradingTreeDlg(); - dlg.SetBindingData(_hydroInfo, allGradingList); - dlg.ReloadDataEvent += (list) => - { - _allGradingList = list; - }; - dlg.ApplyDataEvent += (catalog, propName) => - { - ApplyGrading(catalog, propName); - }; - dlg.ShowDialog(); - } - - //閰嶇疆棰滆壊鍒嗙骇 - private void barBtnGradingSet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - ShowSetGradingDlg(); - } - - #endregion - - #region 搴旂敤鍒嗙骇 - - //棰滆壊鍒嗙骇搴旂敤鍒楄〃 - private List<HydroGradingApplyViewModel> _allGradingApplyList = null; - - //鑾峰彇棰滆壊鍒嗙骇搴旂敤鍒楄〃 - private List<HydroGradingApplyViewModel> GetGradingApplyList() - { - if (_allGradingApplyList == null) - { - _allGradingApplyList = new List<HydroGradingApplyViewModel>(); - - if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0) - { - _allGradingApplyList.Add(new HydroGradingApplyViewModel() - { - Code = Yw.Hydro.ParterCatalog.Pump, - Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pump), - PropName = Yw.Hydro.ParterProp.LinkStatus - }); - } - if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0) - { - _allGradingApplyList.Add(new HydroGradingApplyViewModel() - { - Code = Yw.Hydro.ParterCatalog.Valve, - Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Valve), - PropName = Yw.Hydro.ParterProp.LinkStatus - }); - } - if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0) - { - _allGradingApplyList.Add(new HydroGradingApplyViewModel() - { - Code = Yw.Hydro.ParterCatalog.Pipe, - Name = Yw.WinFrmUI.HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pipe), - PropName = Yw.Hydro.ParterProp.CalcuFlow - }); - } - } - return _allGradingApplyList; - } - - //鑾峰彇棰滆壊鍒嗙骇搴旂敤缁撴灉鍒楄〃 - private async Task<List<HydroGradingApplyResultViewModel>> GetGradingApplyResultList() - { - if (_hydroInfo == null) - { - return default; - } - - //鎵�鏈夊垎绾у垪琛� - var allGradingList = await GetGradingList(); - if (allGradingList == null || allGradingList.Count < 1) - { - return default; - } - - //鎵�鏈夊垎绾у簲鐢ㄥ垪琛� - var allGradingApplyList = GetGradingApplyList(); - if (allGradingApplyList == null || allGradingApplyList.Count < 1) - { - return default; - } - - //鎵�鏈夎绠楃粨鏋滃垪琛� - var allCalcuResultList = GetCalcuResultList(); - - //鎵�鏈夊簲鐢ㄧ粨鏋滃垪琛� - var allGradingApplyResultList = new List<HydroGradingApplyResultViewModel>(); - allGradingApplyList.ForEach(x => - { - var allCatalogGradingList = allGradingList.Where(t => t.Catalog == x.Code).ToList(); - if (allCatalogGradingList != null || allCatalogGradingList.Count > 0) - { - switch (x.Code) - { - case Yw.Hydro.ParterCatalog.Pump: - { - if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0) - { - foreach (var pump in _hydroInfo.Pumps) - { - switch (x.PropName) - { - case Yw.Hydro.ParterProp.LinkStatus: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.LinkStatus).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var grading = gradingList.Meet(pump.LinkStatus); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pump.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuFlow: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuFlow.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pump.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuVelocity: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuVelocity.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pump.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuHeadLoss: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuHeadLoss.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pump.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - default: break; - } - } - } - } - break; - case Yw.Hydro.ParterCatalog.Valve: - { - if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0) - { - foreach (var valve in _hydroInfo.Valves) - { - switch (x.PropName) - { - case Yw.Hydro.ParterProp.LinkStatus: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.LinkStatus).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var grading = gradingList.Meet(valve.LinkStatus); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = valve.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuFlow: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuFlow.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = valve.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuVelocity: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuVelocity.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = valve.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuHeadLoss: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuHeadLoss.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = valve.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - default: break; - } - } - } - } - break; - case Yw.Hydro.ParterCatalog.Pipe: - { - if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0) - { - foreach (var pipe in _hydroInfo.Pipes) - { - switch (x.PropName) - { - case Yw.Hydro.ParterProp.CalcuFlow: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuFlow.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pipe.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuVelocity: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuVelocity.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pipe.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuHeadLoss: - { - var gradingList = allCatalogGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuHeadLoss.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pipe.Code, - Color = grading.Color - }; - allGradingApplyResultList.Add(result); - } - } - } - } - } - break; - default: break; - } - } - } - } - break; - default: break; - } - } - }); - - return allGradingApplyResultList; - } - - //鑾峰彇棰滆壊鍒嗙骇搴旂敤缁撴灉鍒楄〃 - private async Task<List<HydroGradingApplyResultViewModel>> GetGradingApplyResultList(string catalog, string propName) - { - if (_hydroInfo == null) - { - return default; - } - - //鎵�鏈夊垎绾у垪琛� - var allGradingList = await GetGradingList(); - if (allGradingList == null || allGradingList.Count < 1) - { - return default; - } - var currentGradingList = allGradingList.Where(x => x.Catalog == catalog).ToList(); - if (currentGradingList.Count < 1) - { - return default; - } - - //鎵�鏈夊垎绾у簲鐢ㄥ垪琛� - var allGradingApplyList = GetGradingApplyList(); - if (allGradingApplyList == null || allGradingApplyList.Count < 1) - { - return default; - } - - //褰撳墠鍒嗙骇搴旂敤 - var gradingApply = allGradingApplyList.Find(x => x.Code == catalog); - if (gradingApply == null) - { - return default; - } - gradingApply.PropName = propName; - - //鎵�鏈夎绠楃粨鏋� - var allCalcuResultList = GetCalcuResultList(); - - //搴旂敤缁撴灉鍒楄〃 - var gradingApplyResultList = new List<HydroGradingApplyResultViewModel>(); - - switch (catalog) - { - case Yw.Hydro.ParterCatalog.Pump: - { - if (_hydroInfo.Pumps != null && _hydroInfo.Pumps.Count > 0) - { - foreach (var pump in _hydroInfo.Pumps) - { - switch (propName) - { - case Yw.Hydro.ParterProp.LinkStatus: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.LinkStatus).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var grading = gradingList.Meet(pump.LinkStatus); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pump.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuFlow: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuFlow.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pump.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuVelocity: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuVelocity.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pump.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuHeadLoss: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pump.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuHeadLoss.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pump.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - default: break; - } - } - } - } - break; - case Yw.Hydro.ParterCatalog.Valve: - { - if (_hydroInfo.Valves != null && _hydroInfo.Valves.Count > 0) - { - foreach (var valve in _hydroInfo.Valves) - { - switch (propName) - { - case Yw.Hydro.ParterProp.LinkStatus: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.LinkStatus).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var grading = gradingList.Meet(valve.LinkStatus); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = valve.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuFlow: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuFlow.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = valve.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuVelocity: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuVelocity.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = valve.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuHeadLoss: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == valve.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuHeadLoss.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = valve.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - default: break; - } - } - } - } - break; - case Yw.Hydro.ParterCatalog.Pipe: - { - if (_hydroInfo.Pipes != null && _hydroInfo.Pipes.Count > 0) - { - foreach (var pipe in _hydroInfo.Pipes) - { - switch (propName) - { - case Yw.Hydro.ParterProp.CalcuFlow: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuFlow).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuFlow.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuFlow.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pipe.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuVelocity: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuVelocity).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuVelocity.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuVelocity.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pipe.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - case Yw.Hydro.ParterProp.CalcuHeadLoss: - { - var gradingList = currentGradingList.Where(x => x.PropName == Yw.Hydro.ParterProp.CalcuHeadLoss).OrderBy(t => t.SortCode).ToList(); - if (gradingList != null && gradingList.Count > 0) - { - var calcuResult = allCalcuResultList?.Find(t => t.Code == pipe.Code); - if (calcuResult is HydroCalcuLinkResult calcuLinkResult) - { - if (calcuLinkResult.CalcuHeadLoss.HasValue) - { - var grading = gradingList.Meet(Math.Abs(calcuLinkResult.CalcuHeadLoss.Value)); - if (grading != null) - { - var result = new HydroGradingApplyResultViewModel() - { - Code = pipe.Code, - Color = grading.Color - }; - gradingApplyResultList.Add(result); - } - } - } - } - } - break; - default: break; - } - } - } - } - break; - default: break; - } - - return gradingApplyResultList; - } - - //棰滆壊鍒嗙骇鏄惁搴旂敤浜� - private bool _isGradingApply = false; - //棰滆壊鍒嗙骇搴旂敤缂栫爜鍒楄〃 - private List<string> _allGradingApplyCodeList = null; - - //搴旂敤棰滆壊鍒嗙骇 - private async void ApplyGrading() - { - if (_hydroInfo == null) - { - return; - } - _isGradingApply = true; - var allGradingApplyResultList = await GetGradingApplyResultList(); - if (allGradingApplyResultList == null || allGradingApplyResultList.Count < 1) - { - CancelApplyGrading(); - return; - } - var objGroupList = allGradingApplyResultList.GroupBy(x => x.Color).ToList(); - objGroupList.ForEach(async x => - { - await _bimfaceCtrl?.OverrideComponentsColor(x.Select(t => t.Code).Distinct().ToList(), x.Key, 1); - }); - _allGradingApplyCodeList = allGradingApplyResultList.Select(x => x.Code).Distinct().ToList(); - } - - //搴旂敤棰滆壊鍒嗙骇 - private async void ApplyGrading(string catalog, string propName) - { - if (_hydroInfo == null) - { - return; - } - _isGradingApply = true; - var allGradingApplyResultList = await GetGradingApplyResultList(catalog, propName); - if (allGradingApplyResultList == null || allGradingApplyResultList.Count < 1) - { - return; - } - var objGroupList = allGradingApplyResultList.GroupBy(x => x.Color).ToList(); - objGroupList.ForEach(async x => - { - await _bimfaceCtrl?.OverrideComponentsColor(x.Select(t => t.Code).Distinct().ToList(), x.Key, 1); - }); - var codeList = allGradingApplyResultList.Select(x => x.Code); - if (_allGradingApplyCodeList == null) - { - _allGradingApplyCodeList = new List<string>(); - } - _allGradingApplyCodeList.AddRange(codeList); - _allGradingApplyCodeList = _allGradingApplyCodeList.Distinct().ToList(); - } - - //鑷姩搴旂敤棰滆壊鍒嗙骇 - private void AutoApplyGrading() - { - if (!_isGradingApply) - { - return; - } - ApplyGrading(); - } - - //鍙栨秷搴旂敤棰滆壊鍒嗙骇 - private async void CancelApplyGrading() - { - if (_hydroInfo == null) - { - return; - } - _isGradingApply = false; - if (_allGradingApplyCodeList != null && _allGradingApplyCodeList.Count > 0) - { - await _bimfaceCtrl?.RestoreComponentsColor(_allGradingApplyCodeList); - } - } - - //鏄剧ず搴旂敤棰滆壊鍒嗙骇绐椾綋 - private void ShowApplyGradingDlg() - { - if (_hydroInfo == null) - { - return; - } - var allGradingApplyList = GetGradingApplyList(); - if (allGradingApplyList == null || allGradingApplyList.Count < 1) - { - return; - } - var dlg = new ApplyHydroGradingDlg(); - dlg.SetBindingData(allGradingApplyList); - dlg.ReloadDataEvent += (obj) => - { - _allGradingApplyList = obj; - ApplyGrading(); - }; - dlg.ShowDialog(); - } - - //搴旂敤棰滆壊鍒嗙骇 - private void barBtnGradingApply_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - ShowApplyGradingDlg(); - } - - //鍙栨秷搴旂敤鍒嗙骇 - private void batBtnCancelGradingApply_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - CancelApplyGrading(); - } - - #endregion - - #endregion - - #region 浜哄伐鍒锋柊 - - //鍒锋柊 - private async void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - if (XtraMessageBox.Show("鍒锋柊鍚庡皢涓㈠け褰撳墠姘村姏淇℃伅鏇存敼锛屾槸鍚︾户缁埛鏂帮紵", "璇㈤棶", MessageBoxButtons.YesNo) == DialogResult.Yes) - { - if (_project == null) - { - return; - } - if (_projectSite == null) - { - return; - } - 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); - _selectedParter = null; - await _bimfaceCtrl?.ZoomAndSelectComponents(null); - ShowProperty(); - TipFormHelper.ShowSucceed("鏁版嵁宸插埛鏂�"); - } - } - - #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 -- Gitblit v1.9.3