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.GetAllTanks()?.ForEach(x => { var calcuTankResult = allCalcuResultVisualDict.GetValue(x.Code) as HydroCalcuTankResult; var customLabel = new LogicCalcuCustomLabel(); customLabel.Id = x.Code; customLabel.Distance = 50000; customLabel.Data = new List() { new LogicCalcuCustomLabelItem(){ Name="水位",Value=Math.Round(calcuTankResult.CalcuL.Value,2).ToString(),Unit="m"}, }; allCalcuLabels.Add(customLabel); }); #endregion #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.Valves?.ForEach(x => //{ // var calcuResult = allCalcuResultVisualDict.GetValue(x.Code) as HydroCalcuValveResult; // var customLabel = new LogicCalcuCustomLabel(); // customLabel.Id = x.Code; // customLabel.Distance = 50000; // customLabel.Data = new List() // { // new LogicCalcuCustomLabelItem(){ Name="流量",Value=Math.Round(calcuResult.CalcuQ.Value,1).ToString(),Unit="m³/h"}, // new LogicCalcuCustomLabelItem(){ Name="进口压力",Value=Math.Round(calcuResult.CalcuPr1.Value,2).ToString(),Unit="m"}, // new LogicCalcuCustomLabelItem(){ Name="出口压力",Value=Math.Round(calcuResult.CalcuPr2.Value,2).ToString(),Unit="m"}, // new LogicCalcuCustomLabelItem(){ Name="阀门开度",Value=Math.Round(x.OpeningDegree,0).ToString(),Unit="°"} // }; // allCalcuLabels.Add(customLabel); //}); #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 #region 水力阻件 //_calcuResultHelper.HydroInfo.GetAllResistances()?.ForEach(x => //{ // var calcuResistanceResult = allCalcuResultVisualDict.GetValue(x.Code) as HydroCalcuResistanceResult; // var resistanceCustomLabel = new LogicCalcuCustomLabel(); // resistanceCustomLabel.Id = x.Code; // resistanceCustomLabel.Distance = 50000; // resistanceCustomLabel.Data = new List() // { // new LogicCalcuCustomLabelItem(){ Name="流量",Value=Math.Round(calcuResistanceResult.CalcuQ.Value,1).ToString(),Unit="m³/h"}, // new LogicCalcuCustomLabelItem(){ Name="进口压力",Value=Math.Round(calcuResistanceResult.CalcuPr1.Value,2).ToString(),Unit="m"}, // new LogicCalcuCustomLabelItem(){ Name="出口压力",Value=Math.Round(calcuResistanceResult.CalcuPr2.Value,2).ToString(),Unit="m"} // }; // allCalcuLabels.Add(resistanceCustomLabel); //}); #endregion return allCalcuLabels; } } }