namespace Yw.WinFrmUI
{
///
/// 水泵属性视图
///
public class HydroPumpViewModel : HydroLinkViewModel, IHydroCalcuPumpResult
{
///
///
///
public HydroPumpViewModel() { }
///
///
///
public HydroPumpViewModel(Yw.Model.HydroPumpInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo)
{
this.RatedP = rhs.RatedP;
this.UpdatePropStatus(nameof(this.RatedP), rhs, nameof(rhs.RatedP));
this.RatedQ = rhs.RatedQ;
this.UpdatePropStatus(nameof(this.RatedQ), rhs, nameof(rhs.RatedQ));
this.RatedH = rhs.RatedH;
this.UpdatePropStatus(nameof(this.RatedH), rhs, nameof(rhs.RatedH));
this.RatedN = rhs.RatedN;
this.UpdatePropStatus(nameof(this.RatedN), rhs, nameof(rhs.RatedN));
this.RatedHz = rhs.RatedHz;
this.UpdatePropStatus(nameof(this.RatedHz), rhs, nameof(rhs.RatedHz));
this.SpeedRatio = rhs.SpeedRatio;
this.UpdatePropStatus(nameof(this.SpeedRatio), rhs, nameof(rhs.SpeedRatio));
this.SpeedRatioPattern = rhs.SpeedRatioPattern;
this.UpdatePropStatus(nameof(this.SpeedRatioPattern), rhs, nameof(rhs.SpeedRatioPattern));
this.CurveQH = rhs.CurveQH;
this.UpdatePropStatus(nameof(this.CurveQH), rhs, nameof(rhs.CurveQH));
this.CurveQP = rhs.CurveQP;
this.UpdatePropStatus(nameof(this.CurveQP), rhs, nameof(rhs.CurveQP));
this.CurveQE = rhs.CurveQE;
this.UpdatePropStatus(nameof(this.CurveQE), rhs, nameof(rhs.CurveQE));
this.Vmo = rhs;
}
///
/// 水泵状态
///
[Category("数据")]
[DisplayName("水泵状态")]
[PropertyOrder(1003)]
[Browsable(true)]
[TypeConverter(typeof(HydroPumpStatusConverter))]
public override string LinkStatus { get; set; }
///
/// 额定流量
///
[Category("数据")]
[Display(Name = "额定流量(m³/h)")]
[DisplayName("额定流量")]
[DisplayUnit("m³/h")]
[PropertyOrder(2001)]
[Browsable(true)]
public double? RatedQ { get; set; }
///
/// 额定扬程
///
[Category("数据")]
[Display(Name = "额定扬程(m)")]
[DisplayName("额定扬程")]
[DisplayUnit("m")]
[PropertyOrder(2002)]
[Browsable(true)]
public double? RatedH { get; set; }
///
/// 额定功率
///
[Category("数据")]
[Display(Name = "额定功率(kW)")]
[DisplayName("额定功率")]
[DisplayUnit("kW")]
[PropertyOrder(2003)]
[Browsable(true)]
public double RatedP { get; set; }
///
/// 额定转速
///
[Category("数据")]
[Display(Name = "额定转速(r/min)")]
[DisplayName("额定转速")]
[DisplayUnit("r/min")]
[PropertyOrder(2004)]
[Browsable(true)]
public double? RatedN { get; set; }
///
/// 额定频率
///
[Category("数据")]
[Display(Name = "额定频率")]
[DisplayName("额定频率")]
[DisplayUnit("hz")]
[PropertyOrder(2005)]
[Browsable(true)]
public double RatedHz { get; set; }
///
/// 设定频率
///
[Category("数据")]
[Display(Name = "设定频率")]
[DisplayName("设定频率")]
[DisplayUnit("hz")]
[PropertyOrder(2006)]
[Browsable(true)]
public double CurrentHz
{
get { return this.SpeedRatio * this.RatedHz; }
set
{
if (this.RatedHz <= 0)
{
return;
}
this.SpeedRatio = value / this.RatedHz;
}
}
///
/// 转速比
///
[Category("数据")]
[DisplayName("转速比")]
[PropertyOrder(2007)]
[Browsable(false)]
public double SpeedRatio { get; set; }
///
/// 转速比模式
///
[Category("数据")]
[DisplayName("转速比模式")]
[PropertyOrder(2008)]
[Browsable(false)]
public string SpeedRatioPattern { get; set; }
///
/// 性能曲线
///
[Category("数据")]
[DisplayName("性能曲线")]
[PropertyOrder(2009)]
[HydroCurvePro(HydroCurve.Pump)]
[Browsable(true)]
public string Curve
{
get
{
if (string.IsNullOrEmpty(this.CurveQH))
{
return "未配置";
}
return "已配置";
}
}
///
/// 流量扬程曲线
///
[Category("数据")]
[DisplayName("流量扬程曲线")]
[PropertyOrder(2010)]
[HydroCurvePro(HydroCurve.PumpQH)]
[Browsable(false)]
public string CurveQH { get; set; }
///
/// 流量功率曲线
///
[Category("数据")]
[DisplayName("流量功率曲线")]
[PropertyOrder(2011)]
[HydroCurvePro(HydroCurve.PumpQP)]
[Browsable(false)]
public string CurveQP { get; set; }
///
/// 流量效率曲线
///
[Category("数据")]
[DisplayName("流量效率曲线")]
[PropertyOrder(2012)]
[HydroCurvePro(HydroCurve.PumpQE)]
[Browsable(false)]
public string CurveQE { get; set; }
///
/// 流量
///
[Category("计算结果")]
[DisplayName("流量")]
[PropertyOrder(10001)]
[DisplayUnit("m³/h")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(false)]
public override double? CalcuFlow { get; set; }
///
/// 流速
///
[Category("计算结果")]
[DisplayName("流速")]
[PropertyOrder(10002)]
[DisplayUnit("m/s")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(false)]
public override double? CalcuVelocity { get; set; }
///
/// 水头损失
///
[Category("计算结果")]
[DisplayName("水头损失")]
[PropertyOrder(10003)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(false)]
public override double? CalcuHeadLoss { get; set; }
///
/// 局部损失
///
[Category("计算结果")]
[DisplayName("局部损失")]
[Display(Name = "局部损失(m)")]
[PropertyOrder(10004)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(false)]
public override double? CalcuMinorLoss { get; set; }
///
/// 沿程损失
///
[Category("计算结果")]
[DisplayName("沿程损失")]
[Display(Name = "沿程损失(m)")]
[PropertyOrder(10005)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(false)]
public override double? CalcuFrictionLoss { get; set; }
///
/// 流量
///
[Category("计算结果")]
[DisplayName("流量")]
[PropertyOrder(11001)]
[DisplayUnit("m³/h")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(true)]
public double? CalcuQ { get; set; }
///
/// 扬程
///
[Category("计算结果")]
[DisplayName("扬程")]
[PropertyOrder(11002)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(true)]
public double? CalcuH { get; set; }
///
/// 功率
///
[Category("计算结果")]
[DisplayName("功率")]
[PropertyOrder(11003)]
[DisplayUnit("kW")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(true)]
public double? CalcuP { get; set; }
///
/// 效率
///
[Category("计算结果")]
[DisplayName("效率")]
[PropertyOrder(11004)]
[DisplayUnit("%")]
[HydroCalcuPro]
[ShowEditor(false)]
[Browsable(true)]
public double? CalcuE { get; set; }
///
///
///
[Browsable(false)]
public new Yw.Model.HydroPumpInfo Vmo { get; set; }
///
///
///
public override void UpdateProperty()
{
base.UpdateProperty();
this.RatedP = this.Vmo.RatedP;
this.UpdatePropStatus(nameof(this.RatedP), this.Vmo, nameof(this.Vmo.RatedP));
this.RatedQ = this.Vmo.RatedQ;
this.UpdatePropStatus(nameof(this.RatedQ), this.Vmo, nameof(this.Vmo.RatedQ));
this.RatedH = this.Vmo.RatedH;
this.UpdatePropStatus(nameof(this.RatedH), this.Vmo, nameof(this.Vmo.RatedH));
this.RatedN = this.Vmo.RatedN;
this.UpdatePropStatus(nameof(this.RatedN), this.Vmo, nameof(this.Vmo.RatedN));
this.RatedHz = this.Vmo.RatedHz;
this.UpdatePropStatus(nameof(this.RatedHz), this.Vmo, nameof(this.Vmo.RatedHz));
this.SpeedRatio = this.Vmo.SpeedRatio;
this.UpdatePropStatus(nameof(this.SpeedRatio), this.Vmo, nameof(this.Vmo.SpeedRatio));
this.SpeedRatioPattern = this.Vmo.SpeedRatioPattern;
this.UpdatePropStatus(nameof(this.SpeedRatioPattern), this.Vmo, nameof(this.Vmo.SpeedRatioPattern));
this.CurveQH = this.Vmo.CurveQH;
this.UpdatePropStatus(nameof(this.CurveQH), this.Vmo, nameof(this.Vmo.CurveQH));
this.CurveQP = this.Vmo.CurveQP;
this.UpdatePropStatus(nameof(this.CurveQP), this.Vmo, nameof(this.Vmo.CurveQP));
this.CurveQE = this.Vmo.CurveQE;
this.UpdatePropStatus(nameof(this.CurveQE), this.Vmo, nameof(this.Vmo.CurveQE));
}
public override void UpdateVmoProperty()
{
base.UpdateVmoProperty();
this.Vmo.RatedQ = this.RatedQ;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedQ), this, nameof(this.RatedQ));
this.Vmo.RatedH = this.RatedH;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedH), this, nameof(this.RatedH));
this.Vmo.RatedP = this.RatedP;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedP), this, nameof(this.RatedP));
this.Vmo.RatedN = this.RatedN;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedN), this, nameof(this.RatedN));
this.Vmo.RatedHz = this.RatedHz;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.RatedHz), this, nameof(this.RatedHz));
this.Vmo.SpeedRatio = this.SpeedRatio;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.SpeedRatio), this, nameof(this.SpeedRatio));
this.Vmo.SpeedRatioPattern = this.SpeedRatioPattern;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.SpeedRatioPattern), this, nameof(this.SpeedRatioPattern));
this.Vmo.CurveQH = this.CurveQH;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.CurveQH), this, nameof(this.CurveQH));
this.Vmo.CurveQP = this.CurveQP;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.CurveQP), this, nameof(this.CurveQP));
this.Vmo.CurveQE = this.CurveQE;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.CurveQE), this, nameof(this.CurveQE));
}
///
/// 更新计算属性
///
public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
{
base.UpdateCalcuProperty(rhs);
if (rhs is HydroCalcuPumpResult calcuPumpProperty)
{
this.CalcuQ = calcuPumpProperty.CalcuQ.HasValue ? Math.Round(calcuPumpProperty.CalcuQ.Value, 1) : null;
this.CalcuH = calcuPumpProperty.CalcuH.HasValue ? Math.Round(calcuPumpProperty.CalcuH.Value, 2) : null;
this.CalcuP = calcuPumpProperty.CalcuP.HasValue ? Math.Round(calcuPumpProperty.CalcuP.Value, 1) : null;
this.CalcuE = calcuPumpProperty.CalcuE.HasValue ? Math.Round(calcuPumpProperty.CalcuE.Value, 1) : null;
}
}
}
}