From 5444a486dcbf9b7598efca01d0a39b902aca386d Mon Sep 17 00:00:00 2001 From: duheng <2784771470@qq.com> Date: 星期二, 29 十月 2024 12:23:11 +0800 Subject: [PATCH] 修改泵重新匹配界面选择项问题 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs | 188 +++++++++++++++++++++++++++++----------------- 1 files changed, 117 insertions(+), 71 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 684a388..1dfcdf0 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 @@ -457,7 +457,7 @@ return _checkCtrl; } - //鏄剧ず鏍¢獙鎺т欢 + //鏄剧ず妫�鏌ユ帶浠� private void ShowCheckCtrl() { if (_checkResult == null) @@ -469,12 +469,12 @@ this.controlContainerBottom.Controls.Clear(); this.controlContainerBottom.Controls.Add(checkCtrl); this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible; - this.docPnlBottom.Text = "鏍¢獙缁撴灉"; + this.docPnlBottom.Text = "妫�鏌ョ粨鏋�"; this.docPnlBottom.Height = 350; } - //姘村姏楠岃瘉 + //姘村姏妫�鏌� private void barBtnHydroCheck_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_hydroInfo == null) @@ -1135,11 +1135,11 @@ #region 璁$畻缁撴灉 //鎵�鏈夎绠楃粨鏋滃垪琛� - private List<IHydroCalcuResult> _allCalcuResultList = null; + private List<HydroCalcuResult> _allCalcuResultList = null; //鑾峰彇璁$畻缁撴灉 //true 浣跨敤缂撳瓨锛宖alse 涓嶄娇鐢ㄧ紦瀛� - private List<IHydroCalcuResult> GetAllCalcuResultList(bool isCache = true) + private List<HydroCalcuResult> GetAllCalcuResultList(bool isCache = true) { if (_hydroInfo == null) { @@ -1158,97 +1158,143 @@ return _allCalcuResultList; } - _allCalcuResultList = new List<IHydroCalcuResult>(); + _allCalcuResultList = new List<HydroCalcuResult>(); + + //鑺傜偣 var allNodeList = _hydroInfo.GetAllNodes(); if (allNodeList != null && allNodeList.Count > 0) { - var allCalcuNodeList = _calcuResult.NodeList; - if (allCalcuNodeList != null && allCalcuNodeList.Count > 0) + foreach (var node in allNodeList) { - foreach (var node in allNodeList) + var calcuNode = _calcuResult.NodeList?.Find(x => x.Id == node.Code); + if (calcuNode != null) { - var calcuNode = allCalcuNodeList.Find(x => x.Id == node.Code); - if (calcuNode != null) + var calcuResult = new HydroCalcuNodeResult() { - var calcuResult = new HydroCalcuNodeResult() - { - Code = node.Code, - CalcuPress = calcuNode.Press, - CalcuHead = calcuNode.Head, - CalcuDemand = calcuNode.Demand - }; - _allCalcuResultList.Add(calcuResult); - } + Code = node.Code, + CalcuPress = calcuNode.Press, + CalcuHead = calcuNode.Head, + CalcuDemand = calcuNode.Demand + }; + _allCalcuResultList.Add(calcuResult); } } } + //绠℃ var allLinkList = _hydroInfo.GetAllLinks(); if (allLinkList != null && allLinkList.Count > 0) { - var allCalcuLinkList = _calcuResult.LinkList; - if (allCalcuLinkList != null && allCalcuLinkList.Count > 0) + foreach (var link in allLinkList) { - foreach (var link in allLinkList) + var calcuLink = _calcuResult.LinkList?.Find(x => x.Id == link.Code); + if (calcuLink != null) { - var calcuLink = allCalcuLinkList.Find(x => x.Id == link.Code); - if (calcuLink != null) + var calcuResult = new HydroCalcuLinkResult() { - if (link is Yw.Model.HydroPumpInfo pump) - { - var calcuResult = new HydroCalcuPumpResult() - { - Code = link.Code, - CalcuFlow = calcuLink.Flow, - CalcuVelocity = calcuLink.Velocity, - CalcuHeadLoss = calcuLink.Headloss, - CalcuQ = calcuLink.Flow - }; - if (calcuResult.CalcuQ > 0) - { - var startCalcuNode = _calcuResult.NodeList?.Find(x => x.Id == link.StartCode); - var endCalcuNode = _calcuResult.NodeList?.Find(x => x.Id == link.EndCode); - if (startCalcuNode != null && endCalcuNode != null) - { - calcuResult.CalcuH = Math.Abs(startCalcuNode.Press - endCalcuNode.Press); - } + Code = link.Code, + CalcuFlow = calcuLink.Flow, + CalcuVelocity = calcuLink.Velocity, + CalcuHeadLoss = calcuLink.Headloss + }; + _allCalcuResultList.Add(calcuResult); + } + } + } - if (pump.RatedN.HasValue) + //娴侀噺璁� + var allFlowmeterList = _hydroInfo.Flowmeters; + if (allFlowmeterList != null && allFlowmeterList.Count > 0) + { + foreach (var flowmeter in allFlowmeterList) + { + var calcuFlowmeterResult = _allCalcuResultList.Find(x => x.Code == flowmeter.Code) as HydroCalcuNodeResult; + if (calcuFlowmeterResult != null) + { + var calcuFlowmeterNewResult = new HydroCalcuFlowmeterResult(calcuFlowmeterResult); + var calcuFlowmeterLinkResultList = new List<HydroCalcuLinkResult>(); + var flowmeterLinkList = allLinkList?.Where(x => x.StartCode == flowmeter.Code || x.EndCode == flowmeter.Code).ToList(); + if (flowmeterLinkList != null && flowmeterLinkList.Count > 0) + { + foreach (var flowmeterLink in flowmeterLinkList) + { + var calcuFlowmeterLinkResult = _allCalcuResultList.Find(x => x.Code == flowmeterLink.Code) as HydroCalcuLinkResult; + if (calcuFlowmeterLinkResult != null) + { + calcuFlowmeterLinkResultList.Add(calcuFlowmeterLinkResult); + } + } + } + if (calcuFlowmeterLinkResultList.Exists(x => x.CalcuFlow.HasValue)) + { + calcuFlowmeterNewResult.CalcuQ = calcuFlowmeterLinkResultList.Where(x => x.CalcuFlow.HasValue).Average(x => x.CalcuFlow.Value); + } + _allCalcuResultList.Remove(calcuFlowmeterResult); + _allCalcuResultList.Add(calcuFlowmeterNewResult); + } + } + } + + //鍘嬪姏琛� + var allPressmeterList = _hydroInfo.Pressmeters; + if (allPressmeterList != null && allPressmeterList.Count > 0) + { + foreach (var pressmeter in allPressmeterList) + { + var calcuPressmeterResult = _allCalcuResultList.Find(x => x.Code == pressmeter.Code) as HydroCalcuNodeResult; + if (calcuPressmeterResult != null) + { + var calcuPressmeterNewResult = new HydroCalcuPressmeterResult(calcuPressmeterResult); + calcuPressmeterNewResult.CalcuPr = calcuPressmeterResult.CalcuPress; + _allCalcuResultList.Remove(calcuPressmeterResult); + _allCalcuResultList.Add(calcuPressmeterNewResult); + } + } + } + + //姘存车 + var allPumpList = _hydroInfo.Pumps; + if (allPumpList != null && allPumpList.Count > 0) + { + foreach (var pump in allPumpList) + { + var calcuPumpResult = _allCalcuResultList.Find(x => x.Code == pump.Code) as HydroCalcuLinkResult; + if (calcuPumpResult != null) + { + var calcuPumpNewResult = new HydroCalcuPumpResult(calcuPumpResult); + calcuPumpNewResult.CalcuQ = calcuPumpResult.CalcuFlow; + if (calcuPumpNewResult.CalcuQ.HasValue) + { + var calcuNodeStartResult = _allCalcuResultList.Find(x => x.Code == pump.StartCode) as HydroCalcuNodeResult; + var calcuNodeEndResult = _allCalcuResultList.Find(x => x.Code == pump.EndCode) as HydroCalcuNodeResult; + if (calcuNodeStartResult != null && calcuNodeEndResult != null) + { + if (calcuNodeStartResult.CalcuPress.HasValue && calcuNodeEndResult.CalcuPress.HasValue) + { + calcuPumpNewResult.CalcuH = Math.Abs(calcuNodeStartResult.CalcuPress.Value - calcuNodeEndResult.CalcuPress.Value); + } + if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open && pump.RatedN.HasValue) + { + var curveqp = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP); + if (curveqp != null) { - var curveqp = _hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP); - if (curveqp != null) + if (curveqp.CurveData != null && curveqp.CurveData.Count > 3) { - if (curveqp.CurveData != null && curveqp.CurveData.Count > 3) - { - var point2dList = curveqp.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); - var point2dSimularList = point2dList.GetQPPointListByN(pump.RatedN.Value, pump.RatedN.Value * pump.SpeedRatio); - var pumpCurveQp = new Yw.Pump.CurveQP(eFeatType.Cubic, point2dSimularList); - calcuResult.CalcuP = pumpCurveQp.FeatCurve.GetPointY(calcuResult.CalcuQ.Value); - } + var point2dList = curveqp.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + var point2dSimularList = point2dList.GetQPPointListByN(pump.RatedN.Value, pump.RatedN.Value * pump.SpeedRatio); + var pumpCurveQp = new Yw.Pump.CurveQP(eFeatType.Cubic, point2dSimularList); + calcuPumpNewResult.CalcuP = pumpCurveQp.FeatCurve.GetPointY(calcuPumpNewResult.CalcuQ.Value); } } - if (calcuResult.CalcuH.HasValue && calcuResult.CalcuP.HasValue) - { - calcuResult.CalcuE = Yw.Pump.CalculationHelper.CalcuE(calcuResult.CalcuQ.Value, calcuResult.CalcuH.Value, calcuResult.CalcuP.Value); - } } - - - _allCalcuResultList.Add(calcuResult); - } - else - { - var calcuResult = new HydroCalcuLinkResult() + if (calcuPumpNewResult.CalcuH.HasValue && calcuPumpNewResult.CalcuP.HasValue) { - Code = link.Code, - CalcuFlow = calcuLink.Flow, - CalcuVelocity = calcuLink.Velocity, - CalcuHeadLoss = calcuLink.Headloss - }; - _allCalcuResultList.Add(calcuResult); + calcuPumpNewResult.CalcuE = Yw.Pump.CalculationHelper.CalcuE(calcuPumpNewResult.CalcuQ.Value, calcuPumpNewResult.CalcuH.Value, calcuPumpNewResult.CalcuP.Value); + } } - } + _allCalcuResultList.Remove(calcuPumpResult); + _allCalcuResultList.Add(calcuPumpNewResult); } } } -- Gitblit v1.9.3