namespace Yw.WinFrmUI { /// /// 管段属性视图 /// public class HydroLinkViewModel : HydroVisualViewModel, IHydroCalcuLinkResult { /// /// /// public HydroLinkViewModel() { } /// /// /// public HydroLinkViewModel(Yw.Model.HydroLinkInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo) { this.StartCode = rhs.StartCode; this.UpdatePropStatus(nameof(this.StartCode), rhs, nameof(rhs.StartCode)); this.EndCode = rhs.EndCode; this.UpdatePropStatus(nameof(this.EndCode), rhs, nameof(rhs.EndCode)); this.LinkStatus = HydroLinkStatusHelper.GetStatusName(rhs.LinkStatus); this.UpdatePropStatus(nameof(this.LinkStatus), rhs, nameof(rhs.LinkStatus)); this.Vmo = rhs; } /// /// Y流向 /// [Category("拓扑结构")] [DisplayName("Y流向")] [HydroFlowDirectionPro] [PropertyOrder(102)] [Browsable(false)] [TypeConverter(typeof(HydroFlowDirectionConverter))] public override string FlowDirectionY { get; set; } /// /// 上游节点 /// [Category("拓扑结构")] [DisplayName("上游节点")] [PropertyOrder(1001)] [HydroLinkPro] [ReadOnly(true)] [Browsable(true)] public string StartCode { get; set; } /// /// 下游节点 /// [Category("拓扑结构")] [DisplayName("下游节点")] [PropertyOrder(1002)] [HydroLinkPro] [ReadOnly(true)] [Browsable(true)] public string EndCode { get; set; } /// /// 管段状态 /// [Category("数据")] [DisplayName("管段状态")] [PropertyOrder(1003)] [Browsable(true)] public virtual string LinkStatus { get; set; } /// /// 流量 /// [Category("计算结果")] [DisplayName("流量")] [Display(Name = "流量(m³/h)")] [PropertyOrder(10001)] [Browsable(true)] [DisplayUnit("m³/h")] [HydroCalcuPro] [ShowEditor(false)] public virtual double? CalcuFlow { get; set; } /// /// 流速 /// [Category("计算结果")] [DisplayName("流速")] [Display(Name = "流速(m/s)")] [PropertyOrder(10002)] [Browsable(true)] [DisplayUnit("m/s")] [HydroCalcuPro] [ShowEditor(false)] public virtual double? CalcuVelocity { get; set; } /// /// 水头损失 /// [Category("计算结果")] [DisplayName("水头损失")] [Display(Name = "水头损失(m)")] [PropertyOrder(10003)] [Browsable(true)] [DisplayUnit("m")] [HydroCalcuPro] [ShowEditor(false)] public virtual double? CalcuHeadLoss { get; set; } /// /// 局部损失 /// [Category("计算结果")] [DisplayName("局部损失")] [Display(Name = "局部损失(m)")] [PropertyOrder(10004)] [Browsable(true)] [DisplayUnit("m")] [HydroCalcuPro] [ShowEditor(false)] public virtual double? CalcuMinorLoss { get; set; } /// /// 沿程损失 /// [Category("计算结果")] [DisplayName("沿程损失")] [Display(Name = "沿程损失(m)")] [PropertyOrder(10005)] [Browsable(true)] [DisplayUnit("m")] [HydroCalcuPro] [ShowEditor(false)] public virtual double? CalcuFrictionLoss { get; set; } /// /// Vmo /// [Browsable(false)] public new Yw.Model.HydroLinkInfo Vmo { get; set; } /// /// /// public override void UpdateProperty() { base.UpdateProperty(); this.StartCode = this.Vmo.StartCode; this.UpdatePropStatus(nameof(this.StartCode), this.Vmo, nameof(this.Vmo.StartCode)); this.EndCode = this.Vmo.EndCode; this.UpdatePropStatus(nameof(this.EndCode), this.Vmo, nameof(this.Vmo.EndCode)); this.LinkStatus = HydroLinkStatusHelper.GetStatusName(this.Vmo.LinkStatus); this.UpdatePropStatus(nameof(this.LinkStatus), this.Vmo, nameof(this.Vmo.LinkStatus)); } /// /// /// public override void UpdateVmoProperty() { base.UpdateVmoProperty(); this.Vmo.StartCode = this.StartCode; this.Vmo.UpdatePropStatus(nameof(this.Vmo.StartCode), this, nameof(this.StartCode)); this.Vmo.EndCode = this.EndCode; this.Vmo.UpdatePropStatus(nameof(this.Vmo.EndCode), this, nameof(this.EndCode)); this.Vmo.LinkStatus = HydroLinkStatusHelper.GetStatusCode(this.LinkStatus); this.Vmo.UpdatePropStatus(nameof(this.Vmo.LinkStatus), this, nameof(this.LinkStatus)); } /// /// 更新计算属性 /// /// public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs) { base.UpdateCalcuProperty(rhs); if (rhs is HydroCalcuLinkResult calcuLinkProperty) { this.CalcuFlow = calcuLinkProperty.CalcuFlow.HasValue ? Math.Round(calcuLinkProperty.CalcuFlow.Value, 1) : null; this.CalcuVelocity = calcuLinkProperty.CalcuVelocity.HasValue ? Math.Round(calcuLinkProperty.CalcuVelocity.Value, 2) : null; this.CalcuHeadLoss = calcuLinkProperty.CalcuHeadLoss.HasValue ? Math.Round(calcuLinkProperty.CalcuHeadLoss.Value, 2) : null; this.CalcuMinorLoss = calcuLinkProperty.CalcuMinorLoss.HasValue ? Math.Round(calcuLinkProperty.CalcuMinorLoss.Value, 4) : null; this.CalcuFrictionLoss = calcuLinkProperty.CalcuFrictionLoss.HasValue ? Math.Round(calcuLinkProperty.CalcuFrictionLoss.Value, 4) : null; } } } }