duheng
2024-12-22 51e66d3bc5ef0fe491800ccdce292a8d58300efa
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/03-valve/HydroValveViewModel.cs
@@ -3,7 +3,7 @@
    /// <summary>
    /// 阀门视图
    /// </summary>
    public class HydroValveViewModel : HydroLinkViewModel
    public class HydroValveViewModel : HydroLinkViewModel, IHydroCalcuValveResult
    {
        /// <summary>
        /// 
@@ -15,6 +15,8 @@
        /// </summary>
        public HydroValveViewModel(Yw.Model.HydroValveInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo)
        {
            this.LinkStatus = HydroValveStatusHelper.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;
@@ -27,7 +29,6 @@
            this.UpdatePropStatus(nameof(this.OpeningDegree), rhs, nameof(rhs.OpeningDegree));
            this.ValveSetting = rhs.ValveSetting;
            this.UpdatePropStatus(nameof(this.ValveSetting), rhs, nameof(rhs.ValveSetting));
            this.Vmo = rhs;
            UpdateValveSetting();
        }
@@ -172,10 +173,53 @@
        public override double? CalcuFrictionLoss { get; set; }
        /// <summary>
        /// 流量
        /// </summary>
        [Category("计算结果")]
        [DisplayName("流量")]
        [Display(Name = "流量(m³/h)")]
        [PropertyOrder(11001)]
        [Browsable(true)]
        [DisplayUnit("m³/h")]
        [HydroCalcuPro]
        [ShowEditor(false)]
        public virtual double? CalcuQ { get; set; }
        /// <summary>
        /// 进口压力
        /// </summary>
        [Category("计算结果")]
        [DisplayName("进口压力")]
        [Display(Name = "进口压力(m)")]
        [PropertyOrder(11002)]
        [Browsable(true)]
        [DisplayUnit("m")]
        [HydroCalcuPro]
        [ShowEditor(false)]
        public virtual double? CalcuPr1 { get; set; }
        /// <summary>
        /// 出口压力
        /// </summary>
        [Category("计算结果")]
        [DisplayName("出口压力")]
        [Display(Name = "出口压力(m)")]
        [PropertyOrder(11003)]
        [Browsable(true)]
        [DisplayUnit("m")]
        [HydroCalcuPro]
        [ShowEditor(false)]
        public virtual double? CalcuPr2 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public new Yw.Model.HydroValveInfo Vmo { get; set; }
        public new Yw.Model.HydroValveInfo Vmo
        {
            get { return _vmo as Yw.Model.HydroValveInfo; }
            set { _vmo = value; }
        }
        /// <summary>
@@ -184,6 +228,8 @@
        public override void UpdateProperty()
        {
            base.UpdateProperty();
            this.LinkStatus = HydroValveStatusHelper.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;
@@ -205,6 +251,8 @@
        public override void UpdateVmoProperty()
        {
            base.UpdateVmoProperty();
            this.Vmo.LinkStatus = HydroValveStatusHelper.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;
@@ -220,6 +268,20 @@
            this.Vmo.UpdatePropStatus(nameof(this.Vmo.ValveSetting), this, nameof(this.ValveSetting));
        }
        /// <summary>
        /// 更新计算属性
        /// </summary>
        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
        {
            base.UpdateCalcuProperty(rhs);
            if (rhs is HydroCalcuValveResult calcuValveProperty)
            {
                this.CalcuQ = calcuValveProperty.CalcuQ.HasValue ? Math.Round(calcuValveProperty.CalcuQ.Value, 1) : null;
                this.CalcuPr1 = calcuValveProperty.CalcuPr1.HasValue ? Math.Round(calcuValveProperty.CalcuPr1.Value, 2) : null;
                this.CalcuPr2 = calcuValveProperty.CalcuPr2.HasValue ? Math.Round(calcuValveProperty.CalcuPr2.Value, 2) : null;
            }
        }
        //更新阀门设置
        //使用vmo更新自身属性时,再度更新阀门设置的其他属性
        private void UpdateValveSetting()