From c09478fe73685a87de0c48f9b300008f06408dd8 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期三, 20 十一月 2024 15:15:51 +0800 Subject: [PATCH] 核心界面 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs | 653 +++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 387 insertions(+), 266 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 1037523..f1d7d30 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,13 +1,16 @@ 锘縢lobal using Yw.EPAnet; using DevExpress.CodeParser; +using DevExpress.Diagram.Core.Native; using DevExpress.Mvvm.Native; using DevExpress.Office.Utils; +using DevExpress.PivotGrid.QueryMode.TuplesTree; using DevExpress.Utils.Extensions; using DevExpress.Xpo.Helpers; using DevExpress.XtraBars.Ribbon; using DevExpress.XtraRichEdit.Layout; using DevExpress.XtraSpreadsheet.Commands; using HStation.WinFrmUI.PhartRelation; +using NetTaste; using NPOI.SS.Formula.Functions; using System.Diagnostics; using System.Windows.Media; @@ -81,11 +84,15 @@ ShowBimfaceCtrl(); ShowQ3dCtrl(); ShowPropertyCtrl(); + } + private void InitialUI() + { + InitialCurrentWorking(); } - #region Bimface + #region BIM鎺т欢 //bimface鎺т欢 private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null; @@ -97,13 +104,14 @@ { _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; } + InitialUI(); }; _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) => {//榧犳爣宸﹂敭鐐瑰嚮浜嬩欢 @@ -111,7 +119,7 @@ { return; } - _selectedVisual = obj; + //_selectedVisual = obj; ShowSelectedProperty(); }; } @@ -133,7 +141,7 @@ #endregion - #region Q3d + #region Q3d鎺т欢 //Q3d 鎺т欢 private XhsProjectSimulationQ3dCtrl _q3dCtrl = null; @@ -350,7 +358,7 @@ #endregion - #region 鍙瑙嗗浘鍒楄〃 + #region 瑙嗗浘鍒楄〃 //鎵�鏈夊彲瑙佽鍥惧瓧鍏� private Dictionary<string, HydroVisualViewModel> _allVisualViewModelDict = null; @@ -720,7 +728,7 @@ #endregion - #region 鏈尮閰嶅垪琛� + #region 鏈尮鍒楄〃 //鑾峰彇鏈尮閰嶅垪琛ㄦ帶浠� private XhsProjectSimulationUnMatchingListCtrl GetUnMatchingListCtrl() @@ -1236,99 +1244,6 @@ this.barBtnSetValveList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; } - } - - #endregion - - #region 骞惰仈鍒嗘瀽 - - //骞惰仈鍒嗘瀽 - private void barBtnAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - if (_hydroInfo == null) - { - return; - } - if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1) - { - return; - } - var allCalcuResultList = GetCalcuVisualResultList(Yw.EPAnet.CalcuMode.MinorLoss, false); - 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; - - if (allCalcuResultList != null && allCalcuResultList.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(); } #endregion @@ -2000,7 +1915,7 @@ #endregion - #region 鏋勪欢鏄庣粏鎺т欢 + #region 鏋勪欢鎺т欢 //鏋勪欢鏄庣粏鎺т欢 private Yw.WinFrmUI.HydroVisualListCtrl _visualListCtrl = null; @@ -2097,12 +2012,10 @@ #region 鐩戞祴鍒楄〃 - #region 娴嬬偣鍒楄〃 - - //鎵�鏈夌洃娴嬬偣鍒楄〃 + //鎵�鏈夌洃娴嬪垪琛� private List<HydroMonitorVmo> _allMonitorList = null; - //鑾峰彇鐩戞祴鐐瑰垪琛� + //鑾峰彇鐩戞祴鍒楄〃 private async Task<List<HydroMonitorVmo>> GetMonitorList() { if (_hydroInfo == null) @@ -2120,14 +2033,10 @@ return _allMonitorList; } - //鏇存柊鐩戞祴鐐瑰垪琛� + //鏇存柊鐩戞祴鍒楄〃 private async void UpdateMonitorList(string code) { if (_hydroInfo == null) - { - return; - } - if (string.IsNullOrEmpty(code)) { return; } @@ -2185,6 +2094,10 @@ } #endregion + + #region 鐩戞祴鍒楄〃 + + #region 鐩戞祴鍊煎垪琛� @@ -2545,7 +2458,7 @@ #endregion - #region 瀵煎嚭INP鏂囦欢 + #region 瀵煎嚭INP //瀵煎嚭INP鏂囦欢 private void barBtnExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) @@ -2650,8 +2563,70 @@ #region 宸ュ喌璁$畻 + //鎵�鏈夊伐鍐靛垪琛� + private List<HydroWorkingVmo> _allWorkingList = null; + + //鑾峰彇宸ュ喌鍒楄〃 + private async Task<List<HydroWorkingVmo>> GetWorkingList() + { + if (_allWorkingList == null) + { + _allWorkingList = await BLLFactory<Yw.BLL.HydroWorking>.Instance.GetByModelID(_hydroInfo.ID); + if (_allWorkingList == null) + { + _allWorkingList = new List<HydroWorkingVmo>(); + } + } + return _allWorkingList; + } + //鎵�鏈夊伐鍐靛厓缁勫垪琛� - private List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>> _allWorkingTupleList = new List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>>(); + private List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>> _allWorkingTupleList = null; + + //鑾峰彇宸ュ喌鍏冪粍鍒楄〃 + private async Task<List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>>> GetWorkingTupleList() + { + if (_hydroInfo == null) + { + return default; + } + if (_allWorkingTupleList == null) + { + _allWorkingTupleList = new List<Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>>(); + var allWorkingList = await GetWorkingList(); + if (allWorkingList.Count > 0) + { + allWorkingList.ForEach(x => + { + var checkResult = _hydroInfo.Check(); + HydroCalcuResult calcuResult = null; + if (checkResult != null && checkResult.Succeed) + { + calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss); + } + _allWorkingTupleList.Add(new Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>(x, checkResult, calcuResult)); + }); + } + } + return _allWorkingTupleList; + } + + //娣诲姞宸ュ喌鍏冪粍 + private async void AppendWorkingTuple(HydroWorkingVmo working, HydroCheckResult check, HydroCalcuResult calcu) + { + var allWorkingTupleList = await GetWorkingTupleList(); + allWorkingTupleList.Add(new Tuple<HydroWorkingVmo, HydroCheckResult, HydroCalcuResult>(working, check, calcu)); + } + + //绉婚櫎宸ュ喌鍏冪粍 + private async void RemoveWorkingTuple(HydroWorkingVmo working) + { + var allWorkingTupleList = await GetWorkingTupleList(); + if (allWorkingTupleList.Count > 0) + { + allWorkingTupleList.RemoveAll(x => x.Item1.ID == working.ID); + } + } //鏄剧ず宸ュ喌璁$畻绐椾綋 private void ShowWorkingCalcuDlg() @@ -2672,12 +2647,13 @@ { return; } + var allWorkingList = await GetWorkingList(); 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.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) @@ -2685,7 +2661,7 @@ TipFormHelper.ShowError("鍒涘缓宸ュ喌澶辫触锛岃绠楀彇娑堬紒"); return; } - _allWorkingList.Add(vmo); + allWorkingList.Add(vmo); _hydroInfo.UpdateWorkingInfo(working.WorkingInfo); //鏍¢獙 @@ -2713,7 +2689,7 @@ UpdateVisualViewModelCalcuProperty(); UpdateVisualListCtrl(); UpdateSelectedProperty(); - await _bimfaceCtrl?.SetLogicCalcuCustomLabelsCalcuResult(_calcuResult); + //await _bimfaceCtrl?.SetLogicCalcuCustomLabelsCalcuResult(_calcuResult); TipFormHelper.ShowSucceed("璁$畻鎴愬姛锛�"); var codes = _hydroInfo.Pumps.Select(x => x.Code).ToList(); await _bimfaceCtrl?.ZoomAndSelectComponents(codes); @@ -2739,14 +2715,98 @@ #endregion + #region 璁$畻鏍囩 + + //璁$畻鏍囩鏄惁鏄剧ず + private bool _isCalcuLabelsVisible = false; + + //鎵�鏈夎绠楁爣绛� + private List<LogicCalcuCustomLabel> _allCalcuLabels = null; + + //鑾峰彇璁$畻鏍囩 + private List<LogicCalcuCustomLabel> GetCalcuLabels() + { + if (_hydroInfo == null) + { + return default; + } + var allCalcuResultList = GetCalcuVisualResultList(Yw.EPAnet.CalcuMode.MinorLoss, false); + if (allCalcuResultList == null || allCalcuResultList.Count < 1) + { + return default; + } + var list = new List<LogicCalcuCustomLabel>(); + + _hydroInfo.Pumps?.ForEach(x => + { + var hz = Math.Round(x.RatedHz * x.SpeedRatio); + var calcuPumpResult = GetCalcuVisualResult(x.Code) as HydroCalcuLinkResult; + if (calcuPumpResult != null) + { + var calcuPumpStartResult = GetCalcuVisualResult(x.StartCode) as HydroCalcuNodeResult; + var calcuPumpEndResult = GetCalcuVisualResult(x.EndCode) as HydroCalcuNodeResult; + var pumpCustomLabel = new LogicCalcuCustomLabel(); + pumpCustomLabel.Id = x.Code; + pumpCustomLabel.Distance = 20000; + pumpCustomLabel.Data = new List<LogicCalcuCustomLabelItem>() + { + new LogicCalcuCustomLabelItem(){ Name="鐘舵��",Value=HydroLinkStatusHelper.GetStatusName(x.LinkStatus),Unit=string.Empty}, + new LogicCalcuCustomLabelItem(){ Name="棰戠巼",Value=hz.ToString(),Unit=string.Empty}, + new LogicCalcuCustomLabelItem(){ Name="娴侀噺",Value=Math.Round(calcuPumpResult.CalcuFlow.Value,1).ToString(),Unit="m鲁/h"}, + new LogicCalcuCustomLabelItem(){ Name="杩涘彛鍘嬪姏",Value=Math.Round(calcuPumpStartResult.CalcuHead.Value,4).ToString(),Unit="m"}, + new LogicCalcuCustomLabelItem(){ Name="鍑哄彛鍘嬪姏",Value=Math.Round(calcuPumpEndResult.CalcuHead.Value,4).ToString(),Unit="m"}, + }; + list.Add(pumpCustomLabel); + } + }); + + _hydroInfo.GetAllEmitters()?.ForEach(x => + { + var calcuEmitter = GetCalcuVisualResult(x.Code) as HydroCalcuNodeResult; + var emitterCustomLabel = new LogicCalcuCustomLabel(); + emitterCustomLabel.Id = x.Code; + emitterCustomLabel.Distance = 30000; + emitterCustomLabel.Data = new List<LogicCalcuCustomLabelItem>() + { + new LogicCalcuCustomLabelItem(){ Name="娴侀噺",Value=Math.Round(calcuEmitter.CalcuDemand.Value,1).ToString(),Unit="m鲁/h"}, + new LogicCalcuCustomLabelItem(){ Name="鍘嬪姏",Value=Math.Round(calcuEmitter.CalcuDemand.Value,4).ToString(),Unit="m"} + }; + list.Add(emitterCustomLabel); + }); + return list; + } + + //璁剧疆璁$畻鏍囩 + private void SetCalcuLabels() + { + if (_isCalcuLabelsVisible) + { + var allCalcuLabels = GetCalcuLabels(); + _bimfaceCtrl?.SetLogicCalcuCustomLabels(allCalcuLabels); + } + else + { + _bimfaceCtrl?.ClearLogicCalcuCustomLabels(); + } + } + + //璁剧疆璁$畻鏍囩鏄惁鏄剧ず + private void barCkCalcuLabels_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + _isCalcuLabelsVisible = this.barCkCalcuLabels.Checked; + } + + #endregion + #region 褰撳墠宸ュ喌 //褰撳墠宸ュ喌 private Yw.Vmo.HydroWorkingVmo _currentWorking = null; //鍒濆鍖栧綋鍓嶅伐鍐� - private void InitialCurrentWorking(List<HydroWorkingVmo> allWorkingList) + private async void InitialCurrentWorking() { + var allWorkingList = await GetWorkingList(); this.repositoryItemImageComboBox1.Items.BeginUpdate(); this.repositoryItemImageComboBox1.Items.Clear(); if (allWorkingList != null && allWorkingList.Count > 0) @@ -2767,9 +2827,22 @@ } //璁剧疆褰撳墠宸ュ喌 - private void SetCurrentWorking(HydroWorkingVmo working) + private async void SetCurrentWorking(HydroWorkingVmo working) { + if (working == null) + { + return; + } + this.barEditCurrentWorking.EditValue = working; _currentWorking = working; + var allWorkingTupleList = await GetWorkingTupleList(); + var tuple = allWorkingTupleList?.Find(x => x.Item1.ID == working.ID); + if (tuple == null) + { + return; + } + _checkResult = tuple.Item2; + _calcuResult = tuple.Item3; } //褰撳墠宸ュ喌鍙戠敓鏀瑰彉 @@ -2777,155 +2850,6 @@ { var working = this.barEditCurrentWorking.EditValue as HydroWorkingVmo; SetCurrentWorking(working); - } - - - #endregion - - #region 宸ュ喌鍒楄〃 - - //鎵�鏈夊伐鍐靛垪琛� - private List<HydroWorkingVmo> _allWorkingList = null; - - //鍒濆鍖栧伐鍐靛垪琛� - private async void InitialWorkingList() - { - _allWorkingList = await BLLFactory<Yw.BLL.HydroWorking>.Instance.GetByModelID(_hydroInfo.ID); - if (_allWorkingList == null) - { - _allWorkingList = new List<HydroWorkingVmo>(); - } - } - - - - ////鑾峰彇灞炴�ф帶浠� - //private XhsProjectSimulationPropertyCtrl GetPropertyCtrl() - //{ - // if (_propertyCtrl == null) - // { - // _propertyCtrl = new XhsProjectSimulationPropertyCtrl(); - // _propertyCtrl.Dock = DockStyle.Fill; - // _propertyCtrl.HydroViewEvent += (visual) => - // { - // if (visual == null) - // { - // return; - // } - // _bimfaceCtrl?.ZoomToComponent(visual.Code); - // }; - // _propertyCtrl.BlinkLinkNodeEvent += async (link, linkNodeCode) => - // { //寮鸿皟杩炴帴鑺傜偣 - // if (_hydroInfo == null) - // { - // return; - // } - // if (link == null) - // { - // return; - // } - // if (string.IsNullOrEmpty(linkNodeCode)) - // { - // return; - // } - // var linkNode = GetVisual(linkNodeCode); - // if (linkNode == null) - // { - // return; - // } - // var blinkCodes = new List<string>(); - // if (linkNode.GetType() == typeof(HydroJunctionInfo)) - // { - // var allLinkList = 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 += (visual) => - // { - // if (visual == null) - // { - // return; - // } - // UpdateVisualListCtrl(); - // //ApplyGradingResultList(visual); - // }; - // _propertyCtrl.MarkPropertyValueChangedEvent += (visual) => - // { - // //鏍囨敞灞炴�у彂鐢熸敼鍙� - // //鍒ゆ柇褰撳墠鏄惁鏈夋爣娉ㄥ睍绀猴紝鑻ユ湁鍒欐洿鏂版爣娉紝鏈�濂芥槸鏇存柊鍗曚釜鏍囨敞 - // //UpdateMark(visual); - // }; - // _propertyCtrl.GradingPropertyValueChangedEvent += (parter) => - // { - // //鍒嗙骇灞炴�у彂鐢熸敼鍙� - // //鍒ゆ柇褰撳墠鏄惁鏈夊垎绾у睍绀猴紝鑻ユ湁鍒欐洿鏂板垎绾э紝鏈�濂芥槸鏇存柊鍗曚釜鍒嗙骇 - // }; - // _propertyCtrl.FlowEffectPropertyValueChangedEvent += (visual) => - // { - // //娴佸悜灞炴�у彂鐢熸敼鍙� - // //鍒ゆ柇娴佸悜鏄惁鍔犺浇锛屽鏋滃姞杞藉垯鏇存柊娴佸悜锛屾渶濂芥槸鏇存柊鍗曚釜娴佸悜 - // //UpdateFlowEffect(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); - // this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - // this.docPnlRight.Text = "灞炴��"; - // this.docPnlRight.Width = 300; - //} - - private void barBtnWorkingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) - { - } #endregion @@ -2936,20 +2860,217 @@ private HydroWorkingTreeCtrl _workingCtrl = null; //鑾峰彇宸ュ喌鎺т欢 - private HydroWorkingTreeCtrl GetWorkingCtrl() + private async Task<HydroWorkingTreeCtrl> GetWorkingCtrl() { if (_workingCtrl == null) { _workingCtrl = new HydroWorkingTreeCtrl(); _workingCtrl.Dock = DockStyle.Fill; + var allWorkingList = await GetWorkingList(); + _workingCtrl.SetBindingData(allWorkingList); + _workingCtrl.FocusedChangedEvent += (vmo) => + { + + }; } 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() + { + if (IsWorkingCtrlVisible) + { + return; + } + var workingCtrl = await GetWorkingCtrl(); + this.controlContainerRight.Controls.Clear(); + this.controlContainerRight.Controls.Add(workingCtrl); + this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; + this.docPnlRight.Text = "宸ュ喌"; + this.docPnlRight.Width = 300; + } + + //闅愯棌宸ュ喌鎺т欢 + private void HideWorkingCtrl() + { + if (IsWorkingCtrlVisible) + { + this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden; + } + } + + //鏇存柊宸ュ喌鎺т欢 + private async void UpdateWorkingCtrl() + { + var workingCtrl = await GetWorkingCtrl(); + var allWorkingList = await GetWorkingList(); + workingCtrl.SetBindingData(allWorkingList); + } + + //宸ュ喌鍒楄〃鐐瑰嚮 + private void barBtnWorkingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + ShowWorkingCtrl(); + } + #endregion + #region 宸ュ喌璇勪及 + private void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); + } + + #endregion + + #region 宸ュ喌骞惰仈 + + //骞惰仈鍒嗘瀽 + private void barBtnAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + if (_hydroInfo == null) + { + return; + } + if (_hydroInfo.Pumps == null || _hydroInfo.Pumps.Count < 1) + { + return; + } + var allCalcuResultList = GetCalcuVisualResultList(Yw.EPAnet.CalcuMode.MinorLoss, false); + 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; + + if (allCalcuResultList != null && allCalcuResultList.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(); + } + + #endregion + + #region 宸ュ喌鑳芥晥 + + private void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); + } + + #endregion + + #region 鎹熷け鏇茬嚎 + + private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); + } + + #endregion + + #region 鎹熷け姣斾緥 + + private void barBtnWorkingLossScale_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); + } + + #endregion + + #region 缁煎悎鍒嗘瀽 + private void barBtnWorkingAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) + { + XtraMessageBox.Show("姝e湪寮�鍙戜腑锛屾暚璇锋湡寰咃紒"); + } + #endregion -- Gitblit v1.9.3