From f460fd2c628ab56db7450d70f3b7ad4b3524e6c8 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期一, 02 十二月 2024 14:33:48 +0800 Subject: [PATCH] 水泵界面控件 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs | 2769 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 2,436 insertions(+), 333 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 ebb2761..9231ef3 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,10 +1,16 @@ -锘縢lobal using Yw.EPAnet; -using DevExpress.Xpo.Helpers; -using HStation.WinFrmUI.Xhs; -using HStation.WinFrmUI.Xhs.Core; +锘縰sing DevExpress.Diagram.Core.Native; +using DevExpress.Mvvm.Native; +using DevExpress.Utils.MVVM; +using DevExpress.XtraMap; +using HStation.WinFrmUI.PhartRelation; +using Mapster; using NPOI.SS.Formula.Functions; -using Yw.WinFrmUI.HydroL2d; -using Yw.WinFrmUI.HydroL3d; +using System.Diagnostics; +using Yw.EPAnet; +using Yw.Hydro; +using Yw.Model; +using Yw.Vmo; +using Yw.WinFrmUI.Q3d; namespace HStation.WinFrmUI { @@ -15,333 +21,609 @@ InitializeComponent(); this.PageTitle.Caption = "姘村姏妯℃嫙"; this.PageTitle.HeaderSvgImage = this.svgImg32[0]; - this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; + this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; + RegistBulkSetEvents(); } + + /// <summary> + /// 鏂板宸ュ喌浜嬩欢 + /// </summary> + public event Action<HydroWorkingVmo> AppendWorkingEvent; private HStation.Vmo.XhsProjectVmo _project = null;//椤圭洰 private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//椤圭洰绔� private Yw.Model.HydroModelInfo _hydroInfo = null;//姘村姏淇℃伅 - - private Yw.Model.HydroParterInfo _parter = null; - private Yw.EPAnet.CheckResult _checkResult = null; - private Yw.EPAnet.CalcuResult _calcuResult = null; + private Dictionary<HydroWorkingVmo, bool> _allWorkingCheckedListDict = null;//鎵�鏈夊伐鍐甸�夋嫨鍒楄〃瀛楀吀 /// <summary> /// 缁戝畾鏁版嵁 /// </summary> - public async Task SetBindingData + public void SetBindingData ( - HStation.Vmo.XhsProjectVmo project, - HStation.Vmo.XhsProjectSiteVmo projectSite, - Yw.Model.HydroModelInfo hydroInfo + XhsProjectVmo project, + XhsProjectSiteVmo projectSite, + Yw.Model.HydroModelInfo hydroInfo, + Dictionary<HydroWorkingVmo, bool> allWorkingCheckedListDict ) { - if (project == null) - { - return; - } _project = project; _projectSite = projectSite; _hydroInfo = hydroInfo; - if (_projectSite == null) - { - _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID); - } - if (_hydroInfo == null) - { - var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance - .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); - _hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID); - } + _allWorkingCheckedListDict = allWorkingCheckedListDict; } /// <summary> /// 鍒濆鍖栨暟鎹� /// </summary> - public override async void InitialDataSource() + public override void InitialDataSource() { base.InitialDataSource(); - if (_project == null) + ShowBimfaceCtrl(); + ShowQ3dCtrl(); + ShowPropertyCtrl(); + } + + #region BIM鎺т欢 + + //bimface鎺т欢 + private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null; + + //鑾峰彇 bimface 鎺т欢 + private async Task<XhsProjectSimulationBimfaceCtrl> GetBimfaceCtrl() + { + if (_hydroInfo == null) + { + return default; + } + if (_bimfaceCtrl == null) + { + var overlay = this.ShowOverlay(); + _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl(); + _bimfaceCtrl.Dock = DockStyle.Fill; + await _bimfaceCtrl.InitialData(_project, _projectSite); + _bimfaceCtrl.LoadCompletedEvent += () => + {//view鍔犺浇瀹屾垚浜嬩欢 + overlay.Close(); + this.barCkDecorator.Checked = false; + this.barCkGrading.Checked = true; + }; + _bimfaceCtrl.HydroMouseLeftClickEvent += (code) => + {//榧犳爣宸﹂敭鐐瑰嚮浜嬩欢 + var visualListHelper = GetVisualListHelper(); + var visual = visualListHelper.GetVisual(code); + SelectVisual(visual, eVisualSource.Bimface); + }; + } + return _bimfaceCtrl; + } + + //鏄剧ず bimface 鎺т欢 + private async void ShowBimfaceCtrl() + { + var bimfaceCtrl = await GetBimfaceCtrl(); + this.tabPageBimface.Controls.Clear(); + this.tabPageBimface.Controls.Add(bimfaceCtrl); + } + + #endregion + + #region Q3d鎺т欢 + + //Q3d 鎺т欢 + private XhsProjectSimulationQ3dCtrl _q3dCtrl = null; + + //鑾峰彇 Q3d 鎺т欢 + private XhsProjectSimulationQ3dCtrl GetQ3dCtrl() + { + if (_hydroInfo == null) + { + return default; + } + if (_q3dCtrl == null) + { + _q3dCtrl = new XhsProjectSimulationQ3dCtrl(); + _q3dCtrl.Dock = DockStyle.Fill; + _q3dCtrl.InitialData(() => _hydroInfo); + _q3dCtrl.SelectedPartersChangedEvent += (codes) => + { + var visualListHelper = GetVisualListHelper(); + var visuals = visualListHelper.GetVisualList(codes); + SelectVisual(visuals?.LastOrDefault(), eVisualSource.Q3d); + }; + } + return _q3dCtrl; + } + + //鏄剧ず Q3d 鎺т欢 + private void ShowQ3dCtrl() + { + var q3dCtrl = GetQ3dCtrl(); + this.tabPageQ3d.Controls.Clear(); + this.tabPageQ3d.Controls.Add(q3dCtrl); + } + + #endregion + + #region 灞炴�ф帶浠� + + //灞炴�ф帶浠� + private XhsProjectSimulationPropertyCtrl _propertyCtrl = null; + + //鑾峰彇灞炴�ф帶浠� + private XhsProjectSimulationPropertyCtrl GetPropertyCtrl() + { + if (_hydroInfo == null) + { + return default; + } + if (_propertyCtrl == null) + { + _propertyCtrl = new XhsProjectSimulationPropertyCtrl(); + _propertyCtrl.Dock = DockStyle.Fill; + _propertyCtrl.HydroViewEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Property); + }; + _propertyCtrl.BlinkLinkNodeEvent += async (link, linkNodeCode) => + { //寮鸿皟杩炴帴鑺傜偣 + if (link == null) + { + return; + } + var visualListHelper = GetVisualListHelper(); + var linkNode = visualListHelper.GetVisual(linkNodeCode); + if (linkNode == null) + { + return; + } + var blinkCodes = new List<string>(); + if (linkNode.GetType() == typeof(HydroJunctionInfo)) + { + var allLinkList = visualListHelper.GetLinkList(); + if (allLinkList == null || allLinkList.Count < 1) + { + return; + } + var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != linkNodeCode).ToList(); + if (linkList == null || linkList.Count < 1) + { + return; + } + blinkCodes.AddRange(linkList.Select(x => x.Code)); + } + else + { + blinkCodes.Add(linkNodeCode); + } + + await _bimfaceCtrl?.ClearBlinkComponents(); + await _bimfaceCtrl?.SetBlinkComponents(blinkCodes); + await Task.Delay(5000); + await _bimfaceCtrl?.ClearBlinkComponents(); + }; + _propertyCtrl.PropertyValueChangedEvent += async (visual) => + { + if (visual == null) + { + return; + } + UpdateVisualListCtrl(); + var gradingHelper = await GetGradingHelper(); + gradingHelper.Set(); + }; + _propertyCtrl.MarkPropertyValueChangedEvent += async (visual) => + { + //鏍囨敞灞炴�у彂鐢熸敼鍙� + //鍒ゆ柇褰撳墠鏄惁鏈夋爣娉ㄥ睍绀猴紝鑻ユ湁鍒欐洿鏂版爣娉紝鏈�濂芥槸鏇存柊鍗曚釜鏍囨敞 + 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; } - this.PageTitle.Caption = $"{_project.Name}\r\n姘村姏妯℃嫙"; - await this.xhsProjectSimulationBimfaceCtrl1.SetBindingData(_project, _projectSite, () => _hydroInfo); - this.xhsProjectSimulationQ3dCtrl1.SetBindingData(_hydroInfo); - this.xhsProjectSimulationL3dCtrl1.SetBindingData(_hydroInfo); - this.xhsProjectSimulationPropertyCtrl1.SetBindingData(() => _hydroInfo); + var propertyCtrl = GetPropertyCtrl(); + this.controlContainerRight.Controls.Clear(); + this.controlContainerRight.Controls.Add(propertyCtrl); + this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlRight.Text = "灞炴��"; + this.docPnlRight.Width = 300; } - //姘村姏璁$畻 - private async void barBtnHydroCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + //璁剧疆灞炴�ф帶浠� + private void SetPropertyCtrl(HydroVisualInfo visual) + { + 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, + Set, + Search, + Monitor, + Check, + Calcu, + Warning, + } + + //閫夋嫨鏋勪欢 + private Yw.Model.HydroVisualInfo _visual = null; + + //閫夋嫨鏋勪欢 + private void SelectVisual(HydroVisualInfo visual, eVisualSource source) + { + _visual = visual; + switch (source) + { + 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.Set: + { + _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; + } + } + + #endregion + + #region 鏋勪欢鏄庣粏 + + #region 鍙鍒楄〃 + + //鍙鍒楄〃杈呭姪绫� + private SimulationVisualListHelper _visualListHelper = null; + + //鑾峰彇鍙鍒楄〃杈呭姪绫� + private SimulationVisualListHelper GetVisualListHelper() + { + if (_visualListHelper == null) + { + _visualListHelper = new SimulationVisualListHelper(); + _visualListHelper.InitialData(_hydroInfo); + } + return _visualListHelper; + } + + #endregion + + #region 瑙嗗浘鍒楄〃 + + //鍙瑙嗗浘鍒楄〃杈呭姪绫� + private SimulationVisualVmListHelper _visualVmListHelper = null; + + //鑾峰彇鍙瑙嗗浘鍒楄〃杈呭姪绫� + private SimulationVisualVmListHelper GetVisualVmListHelper() + { + if (_hydroInfo == null) + { + return default; + } + if (_visualVmListHelper == null) + { + var visualListHelper = GetVisualListHelper(); + var calcuResultHelper = GetCalcuResultHelper(); + _visualVmListHelper = new SimulationVisualVmListHelper(visualListHelper, calcuResultHelper); + } + return _visualVmListHelper; + } + + #endregion + + #region 鏄庣粏鎺т欢 + + //鏋勪欢鏄庣粏鎺т欢 + private Yw.WinFrmUI.HydroVisualListCtrl _visualListCtrl = null; + + //鑾峰彇鏋勪欢鏄庣粏鎺т欢 + private Yw.WinFrmUI.HydroVisualListCtrl GetVisualListCtrl() + { + if (_visualListCtrl == null) + { + _visualListCtrl = new HydroVisualListCtrl(); + _visualListCtrl.Dock = DockStyle.Fill; + _visualListCtrl.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.List); + }; + _visualListCtrl.HydroChangedInfoEvent += (visualList) => + { + SelectVisual(_visual, eVisualSource.List); + }; + } + return _visualListCtrl; + } + + //鏋勪欢鏄庣粏鎺т欢鏄惁鍙 + private bool IsVisualListCtrlVisible + { + get + { + 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; + } + } + + //鏄剧ず鏋勪欢鏄庣粏鎺т欢 + private void ShowVisualListCtrl() { if (_hydroInfo == null) { return; } - this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - - var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); - _calcuResult = netWork.Calcu(); - if (_calcuResult.Succeed) + var visualListCtrl = GetVisualListCtrl(); + if (!IsVisualListCtrlVisible) { - ShowProperty(); - TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�"); + 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 visualVmListHelper = GetVisualVmListHelper(); + var allVisualVmList = visualVmListHelper.GetVisualList(); + visualListCtrl.SetBindingData(allVisualVmList); + var calcuResult = GetCalcuResult(); + if (calcuResult != null && calcuResult.Succeed) + { + visualListCtrl.SetCalcuView(); } else { - this.xhsProjectSimulationHydroCalcuFailedCtrl1.SetBindingData(_calcuResult.FailedList); - this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlHydroCalcu.Height = 350; + visualListCtrl.SetNormalView(); } - await this.xhsProjectSimulationBimfaceCtrl1.ShowCalcuCustomLabels(_calcuResult); } - - - //瀵煎嚭姘村姏INP鏂囦欢 - private void barBtnHydroExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + //鏇存柊鏋勪欢鏄庣粏鎺т欢 + private void UpdateVisualListCtrl() { - if (_hydroInfo == null) + if (!IsVisualListCtrlVisible) { return; } - var fileName = Yw.WinFrmUI.FileDialogHelper.SaveInp("瀵煎嚭Inp鏂囦欢"); - if (string.IsNullOrEmpty(fileName)) + _visualListCtrl?.UpdateBindingData(); + var calcuResult = GetCalcuResult(); + if (calcuResult != null && calcuResult.Succeed) { - return; + _visualListCtrl.SetCalcuView(); } - var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); - var result = netWork.ToInpString(); - File.WriteAllText(fileName, result); - TipFormHelper.ShowSucceed("瀵煎嚭鎴愬姛"); + else + { + _visualListCtrl.SetNormalView(); + } } - - - #region Bimface - - //bimface 鍔犺浇瀹屾垚浜嬩欢 - private async void xhsProjectSimulationBimfaceCtrl1_LoadCompletedEvent() + //鏋勪欢鏄庣粏 + private void barBtnVisualList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - if (_hydroInfo == null) - { - return; - } - var elementIds = new List<string>(); - var pumps = _hydroInfo.Pumps?.Where(x => x.LinkStatus == Yw.Hydro.PumpStatus.Open).ToList(); - pumps?.ForEach(x => elementIds.Add(x.Code)); - var valves = _hydroInfo.Valves?.Where(x => x.LinkStatus == Yw.Hydro.ValveStatus.Open).ToList(); - valves?.ForEach(x => elementIds.Add(x.Code)); - await this.xhsProjectSimulationBimfaceCtrl1.SetOpenComponentsColor(elementIds); - } - - //bimface 姘村姏鐐瑰嚮浜嬩欢 - private void xhsProjectSimulationBimfaceCtrl1_HydroClickEvent(Yw.Model.HydroParterInfo obj) - { - if (_hydroInfo == null) - { - return; - } - _parter = obj; - ShowProperty(); - SetBimfaceLinkColor(); - } - - //璁剧疆Bimface杩炴帴棰滆壊 - private async void SetBimfaceLinkColor() - { - if (_hydroInfo == null) - { - return; - } - List<string> elementIds = null; - if (_parter != null) - { - if (_parter is Yw.Model.HydroLinkInfo linker) - { - elementIds = new List<string>() { linker.StartCode, linker.EndCode }; - } - } - await this.xhsProjectSimulationBimfaceCtrl1.SetLinkComponentsColor(elementIds); - } - - #endregion Bimface - - #region 灞炴�ч潰鏉� - - - - #endregion - - #region 鑷姩鍖归厤 - - //鑷姩鍖归厤 - private void barBtnMatchingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - if (_hydroInfo == null) - { - return; - } - this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - - var input = AssetsMatchingParasHelper.Create(_hydroInfo); - this.xhsProjectSimulationMatchingListCtrl1.SetBindingData(input); - this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlMatchingList.Height = 350; - } - - //姘村姏淇℃伅鐐瑰嚮 - private async void xhsProjectSimulationMatchingListCtrl1_HydroClickEvent(string code) - { - if (_hydroInfo == null) - { - return; - } - var allParterList = _hydroInfo.GetAllParters(); - _parter = allParterList.Find(x => x.Code == code); - var elementIds = new List<string>() { _parter.Code }; - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); - ShowProperty(); - SetBimfaceLinkColor(); - } - - //搴旂敤鍖归厤浜嬩欢 - private bool xhsProjectSimulationMatchingListCtrl1_ApplyMatchingEvent(AssetsMatchingViewModel output) - { - return AssetsMatchingParasHelper.Apply(_hydroInfo, output); + ShowVisualListCtrl(); } #endregion - #region 鏈尮閰嶅垪琛� + #region 鏋勪欢鏄剧ず - //鏈尮閰嶅垪琛� - private void barBtnUnMatchingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + //鏋勪欢鍙杈呭姪绫� + 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; } - this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - - this.xhsProjectSimulationUnMatchingListCtrl1.SetBindingData(_hydroInfo); - this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlUnMatchingList.Height = 350; + 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 async void xhsProjectSimulationUnMatchingListCtrl1_HydroClickEvent(Yw.Model.HydroParterInfo parter) + //璁剧疆鏋勪欢鏄剧ず + private void barBtnSetVisualVisible_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - var allParterList = _hydroInfo.GetAllParters(); - _parter = allParterList.Find(x => x.ID == parter.ID); - var elementIds = new List<string>() { _parter.Code }; - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); - ShowProperty(); - SetBimfaceLinkColor(); + SetVisualVisible(); } - //鏈尮閰嶅垪琛ㄦ煡鐪嬫ā鍨� - private async void xhsProjectSimulationUnMatchingListCtrl1_ViewModelEvent(List<Yw.Model.HydroParterInfo> parters) - { - var codes = parters?.Select(x => x.Code).Distinct().ToList(); - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(codes); - _parter = null; - ShowProperty(); - } + #endregion #endregion #region 涓�閿樉闅� - //鏄鹃殣缂栫爜鍒楄〃 - private List<string> _fastShowHideCodeList = null; - - //瑙﹀彂涓�閿樉闅� - private async void barBtnShowHide_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + //璁剧疆瑁呴グ浠跺彲瑙佹�� + 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 (_fastShowHideCodeList == null) - { - _fastShowHideCodeList = _hydroInfo.Decorators.Select(x => x.Code).ToList(); - await this.xhsProjectSimulationBimfaceCtrl1.HideComponents(_fastShowHideCodeList); + await _bimfaceCtrl?.ShowComponents(codes); } else { - await this.xhsProjectSimulationBimfaceCtrl1.ShowComponents(_fastShowHideCodeList); - _fastShowHideCodeList = null; + await _bimfaceCtrl?.HideComponents(codes); } } - #endregion - - #region 姘村姏鏍¢獙 - - //姘村姏楠岃瘉 - private void barBtnHydroCheck_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + //璁剧疆 + private void barCkDecorator_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { - if (_hydroInfo == null) - { - return; - } - this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - - var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo); - _checkResult = netWork.Check(); - if (_checkResult.Succeed) - { - TipFormHelper.ShowSucceed("鏍¢獙閫氳繃锛�"); - return; - } - this.xhsProjectSimulationHydroCheckFailedCtrl1.SetBindingData(_checkResult.FailedList); - this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlHydroCheck.Height = 350; + SetDecoratorVisible(this.barCkDecorator.Checked); } - //姘村姏鏍¢獙鐐瑰嚮 - private async void xhsProjectSimulationHydroCheckFailedCtrl1_HydroClickEvent(string code) - { - if (_hydroInfo == null) - { - return; - } - var allParterList = _hydroInfo.GetAllParters(); - _parter = allParterList.Find(x => x.Code == code); - var elementIds = new List<string>() { _parter.Code }; - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds); - ShowProperty(); - SetBimfaceLinkColor(); - } + #endregion - #endregion - - #region 淇濆瓨姘村姏淇℃伅 + #region 淇濆瓨淇℃伅 //淇濆瓨 private async void barBtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -350,7 +632,17 @@ { return; } + Stopwatch sw = new Stopwatch(); + sw.Start(); + + var id = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(_hydroInfo); + + //鑰楁椂宸ㄥぇ鐨勪唬鐮� + + sw.Stop(); + TimeSpan ts2 = sw.Elapsed; + Console.WriteLine("Stopwatch鎬诲叡鑺辫垂{0}ms.", ts2.TotalMilliseconds); if (id < 1) { TipFormHelper.ShowError("淇濆瓨澶辫触锛�"); @@ -362,93 +654,336 @@ #endregion - #region 鏋勪欢鏄庣粏 + #region 鎵归噺閰嶇疆 - //姘村姏鏋勪欢鍒楄〃 - private void barBtnHydroParterList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + //娉ㄥ唽鎵归噺閰嶇疆浜嬩欢 + private void RegistBulkSetEvents() { - if (_hydroInfo == null) + //姘村簱 + this.barBtnSetReservoirList.ItemClick += delegate { - return; - } - this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; - - this.hydroParterListCtrl1.SetBindingData(_hydroInfo); - this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlHydroParterList.Height = 350; - } - - //姘村姏鏋勪欢鏄庣粏闈㈡澘鐐瑰嚮浜嬩欢 - private async void hydroParterListCtrl1_HydroClickEvent(Yw.Model.HydroParterInfo parter) - { - var allParterList = _hydroInfo.GetAllParters(); - _parter = allParterList.Find(x => x.ID == parter.ID); - await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(new List<string>() { _parter.Code }); - ShowProperty(); - SetBimfaceLinkColor(); - } - - #endregion - - #region 涓氬姟鏂规硶 - - //鏄剧ず灞炴�� - private void ShowProperty() - { - if (_hydroInfo == null) - { - return; - } - if (_parter == null) - { - this.xhsProjectSimulationPropertyCtrl1.SelectParter(null); - return; - } - this.xhsProjectSimulationPropertyCtrl1.SelectParter(_parter.Code); - if (_calcuResult != null) - { - if (_calcuResult.Succeed) + if (_hydroInfo == null) { - var allCalcuParterList = _calcuResult.GetParterList(); - var calcuParter = allCalcuParterList.Find(x => x.Id == _parter.Code); - if (calcuParter != null) - { - IHydroCalcuProperty calcuProperty = null; - if (calcuParter is Yw.EPAnet.CalcuNode calcuNode) - { - var calcuNodeProperty = new Yw.WinFrmUI.HydroCalcuNodeProperty(); - calcuNodeProperty.ID = _parter.ID; - calcuNodeProperty.CalcuPress = calcuNode.Press; - calcuNodeProperty.CalcuDemand = calcuNode.Demand; - calcuNodeProperty.CalcuHead = calcuNode.Head; - calcuProperty = calcuNodeProperty; - } - else if (calcuParter is Yw.EPAnet.CalcuLink calcuLink) - { - var calcuLinkProperty = new Yw.WinFrmUI.HydroCalcuLinkProperty(); - calcuLinkProperty.ID = _parter.ID; - calcuLinkProperty.CalcuHeadLoss = calcuLink.Headloss; - calcuLinkProperty.CalcuFlow = calcuLink.Flow; - calcuLinkProperty.CalcuVelocity = calcuLink.Velocity; - calcuProperty = calcuLinkProperty; - } - - if (calcuProperty != null) - { - this.xhsProjectSimulationPropertyCtrl1.UpdateCalcuProperty(calcuProperty); - } - } + return; } - } + var dlg = new SetHydroReservoirListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //姘存睜 + this.barBtnSetTankList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroTankListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //姘寸 + this.barBtnSetWaterboxList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroWaterboxListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //杩炴帴鑺傜偣 + this.barBtnSetJunctionList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroJunctionListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //闂峰ご + this.barBtnSetBluntheadList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroBluntheadListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //寮ご + this.barBtnSetElbowsList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroElbowListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //涓夐�� + this.barBtnSetThreelinkList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroThreelinkListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //鍥涢�� + this.barBtnSetFourlinkList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroFourlinkListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //姘磋〃 + this.barBtnSetMeterList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroMeterListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //娴侀噺璁� + this.barBtnSetFlowmeterList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroFlowmeterListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //鍘嬪姏琛� + this.barBtnSetPressmeterList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroPressmeterListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //绠¢亾 + this.barBtnSetPipeList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroPipeListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //杩囨浮浠� + this.barBtnSetTranslationList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroTranslationListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //姘存车 + this.barBtnSetPumpList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroPumpListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //闃�闂� + this.barBtnSetValveList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroValveListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //鎹㈢儹鍣� + this.barBtnSetExchangerList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroExchangerListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; + //鎹㈢儹鍣� + this.barBtnSetCompressorList.ItemClick += delegate + { + if (_hydroInfo == null) + { + return; + } + var dlg = new SetHydroCompressorListDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.HydroClickInfoEvent += (visual) => + { + SelectVisual(visual, eVisualSource.Set); + }; + dlg.HydroChangedInfoEvent += visuals => + { + SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set); + }; + dlg.ShowDialog(); + }; } - #endregion 涓氬姟鏂规硶 - - #region 閰嶇疆 //鏄剧ずRadialMenu private void barBtnSetList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -456,8 +991,1576 @@ this.rmSet.ShowPopup(MousePosition, true); } + //寮瑰嚭鍓� + private void rmSet_BeforePopup(object sender, CancelEventArgs e) + { + if (_hydroInfo == null) + { + e.Cancel = true; + return; + } + //姘村簱 + if (_hydroInfo.Reservoirs == null || _hydroInfo.Reservoirs.Count < 1) + { + this.barBtnSetReservoirList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetReservoirList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //姘存睜 + if (_hydroInfo.Tanks == null || _hydroInfo.Tanks.Count < 1) + { + this.barBtnSetTankList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetTankList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //姘寸 + if (_hydroInfo.Waterboxs == null || _hydroInfo.Waterboxs.Count < 1) + { + this.barBtnSetWaterboxList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetWaterboxList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //杩炴帴鑺傜偣 + if (_hydroInfo.Junctions == null || _hydroInfo.Junctions.Count < 1) + { + this.barBtnSetJunctionList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetJunctionList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //鍠峰槾 + if (_hydroInfo.Nozzles == null || _hydroInfo.Nozzles.Count < 1) + { + this.barBtnSetNozzleList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetNozzleList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //娑堢伀鏍� + if (_hydroInfo.Hydrants == null || _hydroInfo.Hydrants.Count < 1) + { + this.barBtnSetHydrantList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetHydrantList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //闂峰ご + if (_hydroInfo.Bluntheads == null || _hydroInfo.Bluntheads.Count < 1) + { + this.barBtnSetBluntheadList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetBluntheadList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //寮ご + if (_hydroInfo.Elbows == null || _hydroInfo.Elbows.Count < 1) + { + this.barBtnSetElbowsList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetElbowsList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //涓夐�� + if (_hydroInfo.Threelinks == null || _hydroInfo.Threelinks.Count < 1) + { + this.barBtnSetThreelinkList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetThreelinkList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //鍥涢�� + if (_hydroInfo.Fourlinks == null || _hydroInfo.Fourlinks.Count < 1) + { + this.barBtnSetFourlinkList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetFourlinkList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //姘磋〃 + if (_hydroInfo.Meters == null || _hydroInfo.Meters.Count < 1) + { + this.barBtnSetMeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetMeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //娴侀噺璁� + if (_hydroInfo.Flowmeters == null || _hydroInfo.Flowmeters.Count < 1) + { + this.barBtnSetFlowmeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetFlowmeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //鍘嬪姏琛� + if (_hydroInfo.Pressmeters == null || _hydroInfo.Pressmeters.Count < 1) + { + this.barBtnSetPressmeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetPressmeterList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //绠¢亾 + if (_hydroInfo.Pipes == null || _hydroInfo.Pipes.Count < 1) + { + this.barBtnSetPipeList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetPipeList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //杩囨浮浠� + if (_hydroInfo.Translations == null || _hydroInfo.Translations.Count < 1) + { + this.barBtnSetTranslationList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetTranslationList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //姘存车 + if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1) + { + this.barBtnSetPumpList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetPumpList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //闃�闂� + if (_hydroInfo.Valves == null || _hydroInfo.Valves.Count < 1) + { + this.barBtnSetValveList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetValveList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //鎹㈢儹鍣� + if (_hydroInfo.Exchangers == null || _hydroInfo.Exchangers.Count < 1) + { + this.barBtnSetExchangerList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetExchangerList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + //绌哄帇鏈� + if (_hydroInfo.Compressors == null || _hydroInfo.Compressors.Count < 1) + { + this.barBtnSetCompressorList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; + } + else + { + this.barBtnSetCompressorList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; + } + + + } + #endregion + #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 calcuResultHelper = GetCalcuResultHelper(); + var bimfaceCtrl = await GetBimfaceCtrl(); + _markHelper = new SimulationMarkHelper(visualListHelper, calcuResultHelper, 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) + { + var visualListHelper = GetVisualListHelper(); + _monitorHelper = new SimulationMonitorHelper(visualListHelper); + } + 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); + } + 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 calcuResultHelper = GetCalcuResultHelper(); + var bimfaceCtrl = await GetBimfaceCtrl(); + _calcuResultLabelHelper = new SimulationCalcuResultLabelHelper(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 barBtnPumpCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var dlg = new SimulationPumpFeatDlg(); + dlg.SetBindingData(_hydroInfo); + dlg.ShowDialog(); + } + + #region 骞惰仈妯℃嫙 + + //骞惰仈妯℃嫙 + private void PumpParallel() + { + 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 barBtnPumpParallel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var dlg = new SimulationPumpParallelDlg(); + dlg.ShowDialog(); + // PumpParallel(); + } + + #endregion + + #endregion + + #region 姘村姏璁$畻 + + //璁$畻 + private async void Calcu() + { + if (_hydroInfo == null) + { + return; + } + var workingCheckedListHelper = GetWorkingCheckedListHelper(); + var allWorkingList = workingCheckedListHelper.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 (vm) => + { + _hydroInfo.UpdateWorkingInfo(vm.WorkingInfo); + allMonitorValueList.UpdateMonitorValue(vm.MonitorInfo); + + var hydroInfo = _hydroInfo.Adapt<Yw.Model.HydroModelInfo>(); + + var working = new HydroWorkingVmo(); + working.ModelID = vm.ModelID; + working.Name = vm.Name; + working.WorkingInfo = JsonHelper.Object2Json(vm.WorkingInfo); + working.MonitorInfo = JsonHelper.Object2Json(vm.MonitorInfo); + working.SortCode = vm.SortCode; + working.Description = vm.Description; + + var workingHelper = GetWorkingHelper(); + //鏍¢獙 + var checkResult = _hydroInfo.Check(); + if (!checkResult.Succeed) + { + ShowCheckCtrl(checkResult); + workingHelper.InitialData(hydroInfo, working, checkResult, null); + TipFormHelper.ShowError("鏍¢獙澶辫触锛岃妫�鏌ュ悗閲嶈瘯"); + return; + } + + WaitFormHelper.ShowWaitForm(this, "姝e湪璁$畻鍒嗘瀽涓紝璇风◢鍊�..."); + //await Task.Delay(3000); + var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss); + WaitFormHelper.HideWaitForm(); + workingHelper.InitialData(hydroInfo, working, checkResult, calcuResult); + if (calcuResult.Succeed) + { + if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0) + { + ShowCalcuWarningCtrl(calcuResult); + } + this.barBtnAddWorking.Enabled = true; + TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�"); + } + else + { + ShowCalcuFailedCtrl(calcuResult); + TipFormHelper.ShowError("璁$畻澶辫触锛�"); + } + + #region 瑙嗗浘鍒楄〃 + + var visualVmListHelper = GetVisualVmListHelper(); + visualVmListHelper.UpdateCalcuProperty(calcuResult); + + #endregion + + #region 褰撳墠鏋勪欢 + + SelectVisual(_visual, eVisualSource.Calcu); + + #endregion + + #region 鏋勪欢鏄庣粏 + + UpdateVisualListCtrl(); + + #endregion + + #region 璁$畻鏍囩 + + var calcuResultLabelHelper = await GetCalcuResultLabelHelper(); + calcuResultLabelHelper.Set(); + + #endregion + + }; + + dlg.ShowDialog(); + + } + + //姘村姏璁$畻 + private void barBtnCalcu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + Calcu(); + } + + #endregion + + #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; + } + + //鏂板宸ュ喌 + private void AddWorking() + { + var workingHelper = GetWorkingHelper(); + if (workingHelper.Working == null) + { + TipFormHelper.ShowWarn("灏氭湭璁$畻锛岃璁$畻鍚庨噸璇曪紒"); + return; + } + var dlg = new AddHydroWorkingDlg(); + dlg.SetBindingData(workingHelper.Working); + dlg.ReloadDataEvent += (rhs) => + { + this.barBtnAddWorking.Enabled = false; + workingHelper.ResetWorking(rhs); + this.AppendWorkingEvent?.Invoke(rhs); + }; + dlg.ShowDialog(); + } + + //澧炲姞宸ュ喌 + private void barBtnAddWorking_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + AddWorking(); + } + + #endregion + + #region 閫夋嫨宸ュ喌 + + //宸ュ喌閫夋嫨鍒楄〃杈呭姪绫� + private SimulationWorkingCheckedListHelper _workingCheckedListHelper = null; + + //鑾峰彇宸ュ喌鍏冪粍杈呭姪绫� + private SimulationWorkingCheckedListHelper GetWorkingCheckedListHelper() + { + if (_workingCheckedListHelper == null) + { + var visualListHelper = GetVisualListHelper(); + _workingCheckedListHelper = new SimulationWorkingCheckedListHelper(visualListHelper); + _workingCheckedListHelper.InitialData(_allWorkingCheckedListDict); + } + return _workingCheckedListHelper; + } + + //鏇存柊宸ュ喌閫夋嫨鍒楄〃 + public void UpdateWorkingCheckedList(HydroWorkingVmo working, bool hasChecked) + { + var helper = GetWorkingCheckedListHelper(); + helper.Update(working, hasChecked); + } + + + #endregion + + #region 宸ュ喌鍒嗘瀽 + + //绮惧害璇勪及 + private async void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var monitorHelper = GetMonitorHelper(); + var allMonitorList = await monitorHelper.Get(); + + var workingCheckedListHelper = GetWorkingCheckedListHelper(); + var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList(); + if (allCheckedWorkingList == null || allCheckedWorkingList.Count < 1) + { + var workingHelper = GetWorkingHelper(); + if (!workingHelper.Initialized) + { + TipFormHelper.ShowWarn("璇疯绠楀悗閲嶈瘯锛�"); + return; + } + var dlg = new HydroSingleWorkingEvaluationDlg(); + dlg.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult); + dlg.ShowDialog(); + } + else + { + var dlg = new HydroMultiWorkingEvaluationDlg(); + dlg.SetBindingData(_hydroInfo, allMonitorList, allCheckedWorkingList); + dlg.ShowDialog(); + } + } + + //姘存车鍒嗘瀽 + private void barBtnPumpAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (_hydroInfo == null) + { + return; + } + if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1) + { + return; + } + + var calcuResultHelper = GetCalcuResultHelper(); + var vmList = new List<XhsSinglePumpViewModel>(); + foreach (var pump in _hydroInfo.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); + vm.CurveQH = qhPtList; + vm.CurveQE = qePtList; + vm.CurveQP = qpPtList; + + 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 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 dlg = new PumpParallelAnalyDlg(); + dlg.SetBindingData(vmList); + dlg.ReloadDataEvent += (list) => + { + list?.ForEach(x => + { + var pump = _hydroInfo.Pumps?.Find(t => t.Code == x.Code); + if (pump != null) + { + pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed; + pump.SpeedRatio = Math.Round(x.CurrentHz / pump.RatedHz, 1); + } + }); + //ShowSelectedProperty(); + return true; + }; + dlg.ShowDialog(); + } + + //鑳芥晥鍒嗘瀽 + private void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var workingCheckedListHelper = GetWorkingCheckedListHelper(); + var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList(); + if (allCheckedWorkingList == null || allCheckedWorkingList.Count < 1) + { + var workingHelper = GetWorkingHelper(); + if (!workingHelper.Initialized) + { + TipFormHelper.ShowWarn("璇疯绠楀悗閲嶈瘯锛�"); + return; + } + var dlg = new SimulationSingleWorkingEnergyDlg(); + dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult); + dlg.ShowDialog(); + } + else + { + var dlg = new SimulationMultiWorkingEnergyDlg(); + dlg.SetBindingData(_hydroInfo, allCheckedWorkingList); + dlg.ShowDialog(); + } + } + + //鎹熷け鏇茬嚎 + private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (_visual == null) + { + TipFormHelper.ShowWarn("璇烽�夋嫨鏋勪欢鍚庨噸璇曪紒"); + return; + } + HydroVisualInfo visual = _visual; + if (_visual is HydroLinkInfo linkInfo) + { + var visualListHelper = GetVisualListHelper(); + visual = visualListHelper.GetVisual(linkInfo.StartCode); + } + + var workingCheckedListHelper = GetWorkingCheckedListHelper(); + var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList(); + if (allCheckedWorkingList == null || allCheckedWorkingList.Count < 1) + { + var workingHelper = GetWorkingHelper(); + if (!workingHelper.Initialized) + { + TipFormHelper.ShowWarn("璇疯绠楀悗閲嶈瘯锛�"); + return; + } + var dlg = new HydroSingleWorkingLossCurveDlg(); + dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult, visual); + dlg.ShowDialog(); + } + else + { + var dlg = new HydroMultiWorkingLossCurveDlg(); + dlg.SetBindingData(_hydroInfo, allCheckedWorkingList, visual); + dlg.ShowDialog(); + } + } + + //鎹熷け缁熻 + private void barBtnWorkingLossStatistics_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + var workingCheckedListHelper = GetWorkingCheckedListHelper(); + var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList(); + if (allCheckedWorkingList == null || allCheckedWorkingList.Count < 1) + { + var workingHelper = GetWorkingHelper(); + if (!workingHelper.Initialized) + { + TipFormHelper.ShowWarn("璇疯绠楀悗閲嶈瘯锛�"); + return; + } + var dlg = new HydroSingleWorkingLossStatisticsDlg(); + dlg.SetBindingData(workingHelper.HydroInfo); + dlg.ShowDialog(); + } + else + { + var dlg = new HydroMultiWorkingLossStatisticsDlg(); + dlg.SetBindingData(_hydroInfo, allCheckedWorkingList); + dlg.ShowDialog(); + } + } + + //缁煎悎鍒嗘瀽 + private async void barBtnWorkingAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (_visual == null) + { + TipFormHelper.ShowWarn("璇烽�夋嫨鏋勪欢鍚庨噸璇曪紒"); + return; + } + HydroVisualInfo visual = _visual; + if (_visual is HydroLinkInfo linkInfo) + { + var visualListHelper = GetVisualListHelper(); + visual = visualListHelper.GetVisual(linkInfo.StartCode); + } + + var monitorHelper = GetMonitorHelper(); + var allMonitorList = await monitorHelper.Get(); + + var workingCheckedListHelper = GetWorkingCheckedListHelper(); + var allCheckedWorkingList = workingCheckedListHelper.GetCheckedWorkingList(); + if (allCheckedWorkingList == null || allCheckedWorkingList.Count < 1) + { + var workingHelper = GetWorkingHelper(); + if (!workingHelper.Initialized) + { + TipFormHelper.ShowWarn("璇疯绠楀悗閲嶈瘯锛�"); + return; + } + var dlg = new SimulationSingleWorkingAnalyDlg(); + dlg.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult, visual); + dlg.ShowDialog(); + } + else + { + var dlg = new SimulationMultiWorkingAnalyDlg(); + dlg.SetBindingData(_hydroInfo, allMonitorList, allCheckedWorkingList, visual); + dlg.ShowDialog(); + } + } + + #endregion + + + + -- Gitblit v1.9.3