namespace Yw.WinFrmUI
{
///
/// 组件视图
///
public class HydroResistanceViewModel : HydroLinkViewModel, IHydroCalcuResistanceResult
{
///
///
///
public HydroResistanceViewModel() { }
///
///
///
public HydroResistanceViewModel(Yw.Model.HydroResistanceInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo)
{
this.LinkStatus = HydroResistanceStatusHelper.GetStatusName(rhs.LinkStatus);
this.UpdatePropStatus(nameof(this.LinkStatus), rhs, nameof(rhs.LinkStatus));
this.Material = rhs.Material;
this.UpdatePropStatus(nameof(this.Material), rhs, nameof(rhs.Material));
this.Diameter = rhs.Diameter;
this.UpdatePropStatus(nameof(this.Diameter), rhs, nameof(rhs.Diameter));
this.MinorLoss = rhs.MinorLoss;
this.UpdatePropStatus(nameof(this.MinorLoss), rhs, nameof(rhs.MinorLoss));
this.CurveQL = rhs.CurveQL;
this.UpdatePropStatus(nameof(this.CurveQL), rhs, nameof(rhs.CurveQL));
}
///
/// 开关状态
///
[Category("数据")]
[DisplayName("开关状态")]
[Display(Name = "开关状态")]
[Description("[默认]使用水头损失曲线;[开启]使用局阻系数")]
[PropertyOrder(103)]
[Browsable(true)]
[TypeConverter(typeof(HydroResistanceStatusConverter))]
public override string LinkStatus { get; set; }
///
/// 材料
///
[Category("数据")]
[DisplayName("材料")]
[PropertyOrder(1001)]
[Browsable(true)]
public string Material { get; set; }
///
/// 直径
///
[Category("数据")]
[DisplayName("直径")]
[DisplayUnit("mm")]
[PropertyOrder(1002)]
[Browsable(true)]
public double Diameter { get; set; }
///
/// 局阻系数
///
[Category("数据")]
[DisplayName("局阻系数")]
[PropertyOrder(1003)]
[Browsable(true)]
public double MinorLoss { get; set; }
///
/// 水头损失曲线
///
[Category("数据")]
[DisplayName("水头损失曲线")]
[HydroCurvePro(HydroCurve.ResistanceQL, HydroCurveType.CurveQL)]
[PropertyOrder(1004)]
[Browsable(true)]
public virtual string Curve
{
get
{
if (string.IsNullOrEmpty(this.CurveQL))
{
return "未配置";
}
return "已配置";
}
}
///
/// 水头损失曲线
///
[Category("数据")]
[DisplayName("水头损失曲线")]
[PropertyOrder(1005)]
[HydroCurvePro(HydroCurve.ResistanceQL, HydroCurveType.CurveQL)]
[Browsable(false)]
public string CurveQL { get; set; }
///
/// 流量
///
[Category("计算结果")]
[DisplayName("流量")]
[Display(Name = "流量(m³/h)")]
[PropertyOrder(11001)]
[Browsable(true)]
[DisplayUnit("m³/h")]
[HydroCalcuPro]
[ShowEditor(false)]
public virtual double? CalcuQ { get; set; }
///
/// 进口压力
///
[Category("计算结果")]
[DisplayName("进口压力")]
[Display(Name = "进口压力(m)")]
[PropertyOrder(11002)]
[Browsable(true)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
public virtual double? CalcuPr1 { get; set; }
///
/// 出口压力
///
[Category("计算结果")]
[DisplayName("出口压力")]
[Display(Name = "出口压力(m)")]
[PropertyOrder(11003)]
[Browsable(true)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
public virtual double? CalcuPr2 { get; set; }
///
///
///
[Browsable(false)]
public new Yw.Model.HydroResistanceInfo Vmo
{
get { return _vmo as Yw.Model.HydroResistanceInfo; }
set { _vmo = value; }
}
///
///
///
public override void UpdateProperty()
{
base.UpdateProperty();
this.LinkStatus = HydroResistanceStatusHelper.GetStatusName(this.Vmo.LinkStatus);
this.UpdatePropStatus(nameof(this.LinkStatus), this.Vmo, nameof(this.Vmo.LinkStatus));
this.Material = this.Vmo.Material;
this.UpdatePropStatus(nameof(this.Material), this.Vmo, nameof(this.Vmo.Material));
this.Diameter = this.Vmo.Diameter;
this.UpdatePropStatus(nameof(this.Diameter), this.Vmo, nameof(this.Vmo.Diameter));
this.MinorLoss = this.Vmo.MinorLoss;
this.UpdatePropStatus(nameof(this.MinorLoss), this.Vmo, nameof(this.Vmo.MinorLoss));
this.CurveQL = this.Vmo.CurveQL;
this.UpdatePropStatus(nameof(this.CurveQL), this.Vmo, nameof(this.Vmo.CurveQL));
}
///
///
///
public override void UpdateVmoProperty()
{
base.UpdateVmoProperty();
this.Vmo.LinkStatus = HydroResistanceStatusHelper.GetStatusCode(this.LinkStatus);
this.Vmo.UpdatePropStatus(nameof(this.Vmo.LinkStatus), this, nameof(this.LinkStatus));
this.Vmo.Material = this.Material;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.Material), this, nameof(this.Material));
this.Vmo.Diameter = this.Diameter;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.Diameter), this, nameof(this.Diameter));
this.Vmo.MinorLoss = this.MinorLoss;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.MinorLoss), this, nameof(this.MinorLoss));
this.Vmo.CurveQL = this.CurveQL;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.CurveQL), this, nameof(this.CurveQL));
}
///
/// 更新计算属性
///
public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
{
base.UpdateCalcuProperty(rhs);
if (rhs is HydroCalcuResistanceResult calcuResistanceProperty)
{
this.CalcuQ = calcuResistanceProperty.CalcuQ.HasValue ? Math.Round(calcuResistanceProperty.CalcuQ.Value, 1) : null;
this.CalcuPr1 = calcuResistanceProperty.CalcuPr1.HasValue ? Math.Round(calcuResistanceProperty.CalcuPr1.Value, 2) : null;
this.CalcuPr2 = calcuResistanceProperty.CalcuPr2.HasValue ? Math.Round(calcuResistanceProperty.CalcuPr2.Value, 2) : null;
}
}
}
}