using Yw.WinFrmUI.Bimface; namespace HStation.WinFrmUI { /// /// 计算结果标签辅助类 /// public class SimulationCalcuResultLabelHelper { /// /// /// public SimulationCalcuResultLabelHelper ( SimulationCalcuResultHelper calcuResultHelper, ISimulationCalcuResultLabelView view ) { _calcuResultHelper = calcuResultHelper; _views = new List() { view }; } private SimulationCalcuResultHelper _calcuResultHelper = null;//计算结果辅助类 private List _views = null;//视图列表 /// /// 可见性 /// public bool Visible { get { return _visible; } set { _visible = value; } } private bool _visible = false; /// /// 设置 /// public void Set() { if (this.Visible) { var labels = GetLabels(); if (labels != null && labels.Count > 0) { _views.ForEach(async x => await x.SetLogicCalcuCustomLabels(labels)); return; } } _views.ForEach(async x => await x.ClearLogicCalcuCustomLabels()); } //获取计算标签 private List GetLabels() { if (!_calcuResultHelper.Initialized) { return default; } var allCalcuResultVisualDict = _calcuResultHelper.GetVisualDict(); var allCalcuLabels = new List(); #region 水泵 _calcuResultHelper.HydroInfo.Pumps?.ForEach(x => { var hz = Math.Round(x.RatedHz * x.SpeedRatio); var calcuPumpResult = allCalcuResultVisualDict.GetValue(x.Code) as HydroCalcuPumpResult; if (calcuPumpResult != null) { var pumpCustomLabel = new LogicCalcuCustomLabel(); pumpCustomLabel.Id = x.Code; pumpCustomLabel.Distance = 50000; pumpCustomLabel.Data = new List() { new LogicCalcuCustomLabelItem(){ Name="状态",Value=HydroLinkStatusHelper.GetStatusName(x.LinkStatus),Unit=string.Empty}, new LogicCalcuCustomLabelItem(){ Name="频率",Value=x.LinkStatus==Yw.Hydro.PumpStatus.Open?hz.ToString():"0",Unit="hz"}, new LogicCalcuCustomLabelItem(){ Name="流量",Value=Math.Round(calcuPumpResult.CalcuQ.Value,1).ToString(),Unit="m³/h"}, new LogicCalcuCustomLabelItem(){ Name="进口压力",Value=Math.Round(calcuPumpResult.CalcuPr1.Value,2).ToString(),Unit="m"}, new LogicCalcuCustomLabelItem(){ Name="出口压力",Value=Math.Round(calcuPumpResult.CalcuPr2.Value,2).ToString(),Unit="m"}, }; allCalcuLabels.Add(pumpCustomLabel); } }); #endregion #region 扩散器 _calcuResultHelper.HydroInfo.GetAllEmitters()?.ForEach(x => { var calcuEmitter = allCalcuResultVisualDict.GetValue(x.Code) as HydroCalcuEmitterResult; var emitterCustomLabel = new LogicCalcuCustomLabel(); emitterCustomLabel.Id = x.Code; emitterCustomLabel.Distance = 50000; emitterCustomLabel.Data = new List() { new LogicCalcuCustomLabelItem(){ Name="流量",Value=Math.Round(calcuEmitter.CalcuQ.Value,1).ToString(),Unit="m³/h"}, new LogicCalcuCustomLabelItem(){ Name="压力",Value=Math.Round(calcuEmitter.CalcuPr.Value,2).ToString(),Unit="m"} }; allCalcuLabels.Add(emitterCustomLabel); }); #endregion return allCalcuLabels; } } }