lixiaojun
2025-01-22 46f64905a3c309a50c0f245b3350cdeb8dd699c6
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/00-core/HydroLinkViewModel.cs
@@ -3,7 +3,7 @@
    /// <summary>
    /// 管段属性视图
    /// </summary>
    public class HydroLinkViewModel : HydroParterViewModel, IHydroCalcuLinkResult
    public class HydroLinkViewModel : HydroVisualViewModel, IHydroCalcuLinkResult
    {
        /// <summary>
        /// 
@@ -16,22 +16,17 @@
        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;
        }
        /// <summary>
        /// 上游节点
        /// </summary>
        [Category("基础信息")]
        [Category("拓扑结构")]
        [DisplayName("上游节点")]
        [PropertyOrder(101)]
        [IsHydroLinkCode]
        [PropertyOrder(1001)]
        [HydroLinkPro]
        [ReadOnly(true)]
        [Browsable(true)]
        public string StartCode { get; set; }
@@ -39,86 +34,113 @@
        /// <summary>
        /// 下游节点
        /// </summary>
        [Category("基础信息")]
        [Category("拓扑结构")]
        [DisplayName("下游节点")]
        [PropertyOrder(102)]
        [IsHydroLinkCode]
        [PropertyOrder(1002)]
        [HydroLinkPro]
        [ReadOnly(true)]
        [Browsable(true)]
        public string EndCode { get; set; }
        /// <summary>
        /// 管段状态
        /// </summary>
        [Category("数据")]
        [DisplayName("管段状态")]
        [PropertyOrder(103)]
        [Browsable(true)]
        public virtual string LinkStatus { get; set; }
        /// <summary>
        /// 流量
        /// </summary>
        [Category("计算结果")]
        [DisplayName("流量")]
        [PropertyOrder(10001)]
        [Browsable(true)]
        [DisplayUnit("m³/h")]
        [IsHydroCalcuPro(true)]
        [Display(Name = "流量(m³/h)")]
        [PropertyOrder(10001)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(false)]
        public virtual double? CalcuFlow { get; set; }
        /// <summary>
        /// 流速
        /// </summary>
        [Category("计算结果")]
        [DisplayName("流速")]
        [PropertyOrder(10002)]
        [Browsable(true)]
        [DisplayUnit("m/s")]
        [IsHydroCalcuPro(true)]
        [ShowEditor(false)]
        public virtual double? CalcuVelocity { get; set; }
        /// <summary>
        /// 水头损失
        /// </summary>
        [Category("计算结果")]
        [DisplayName("水头损失")]
        [PropertyOrder(10003)]
        [Browsable(true)]
        [DisplayUnit("m")]
        [IsHydroCalcuPro(true)]
        [Display(Name = "水头损失(m)")]
        [PropertyOrder(10002)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(false)]
        public virtual double? CalcuHeadLoss { get; set; }
        /// <summary>
        /// 流速
        /// </summary>
        [Category("计算结果")]
        [DisplayName("流速")]
        [DisplayUnit("m/s")]
        [Display(Name = "流速(m/s)")]
        [PropertyOrder(19007)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(false)]
        public virtual double? CalcuVelocity { get; set; }
        /// <summary>
        /// Vmo
        /// 局部损失
        /// </summary>
        [Category("计算结果")]
        [DisplayName("局部损失")]
        [DisplayUnit("m")]
        [Display(Name = "局部损失(m)")]
        [PropertyOrder(19008)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(false)]
        public new Yw.Model.HydroLinkInfo Vmo { get; set; }
        public virtual double? CalcuMinorLoss { get; set; }
        /// <summary>
        /// 沿程损失
        /// </summary>
        [Category("计算结果")]
        [DisplayName("沿程损失")]
        [DisplayUnit("m")]
        [Display(Name = "沿程损失(m)")]
        [PropertyOrder(19009)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(false)]
        public virtual double? CalcuFrictionLoss { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public override void Update()
        [Browsable(false)]
        public new Yw.Model.HydroLinkInfo Vmo
        {
            base.Update();
            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));
            get { return _vmo as Yw.Model.HydroLinkInfo; }
            set { _vmo = value; }
        }
        /// <summary>
        ///
        /// </summary>
        public override void UpdateProperty()
        {
            base.UpdateProperty();
            this.StartCode = this.Vmo.StartCode;
            this.EndCode = this.Vmo.EndCode;
        }
        /// <summary>
        ///
        /// </summary>
        public override void UpdateVmoProperty()
        {
            base.UpdateVmoProperty();
            this.Vmo.StartCode = this.StartCode;
            this.Vmo.EndCode = this.EndCode;
        }
        /// <summary>
        /// 更新计算属性
        /// </summary>
        /// <param name="rhs"></param>
        public override void UpdateCalcuProperty(HydroCalcuResult rhs)
        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
        {
            base.UpdateCalcuProperty(rhs);
            if (rhs is HydroCalcuLinkResult calcuLinkProperty)
@@ -126,9 +148,14 @@
                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;
            }
        }
    }
}