From a2ad15911dcde2d45cd546d5b8d7fb791f7afafd Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期二, 17 十二月 2024 09:04:18 +0800
Subject: [PATCH] 优化计算属性

---
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/03-valve/HydroValveViewModel.cs |  244 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 236 insertions(+), 8 deletions(-)

diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/03-valve/HydroValveViewModel.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/03-valve/HydroValveViewModel.cs
index 7167674..5f413de 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/03-valve/HydroValveViewModel.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/03-valve/HydroValveViewModel.cs
@@ -1,11 +1,9 @@
-锘縰sing Yw.Model;
-
-namespace Yw.WinFrmUI
+锘縩amespace Yw.WinFrmUI
 {
     /// <summary>
     /// 闃�闂ㄨ鍥�
     /// </summary>
-    public class HydroValveViewModel : HydroLinkViewModel
+    public class HydroValveViewModel : HydroLinkViewModel, IHydroCalcuValveResult
     {
         /// <summary>
         /// 
@@ -17,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;
@@ -29,8 +29,7 @@
             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();
         }
 
 
@@ -39,6 +38,7 @@
         /// </summary>
         [Category("鏁版嵁")]
         [DisplayName("闃�闂ㄧ姸鎬�")]
+        [Description("[榛樿]浣跨敤闃�闂ㄨ缃紱[寮�鍚痌浣跨敤灞�闃荤郴鏁�")]
         [PropertyOrder(1003)]
         [Browsable(true)]
         [TypeConverter(typeof(HydroValveStatusConverter))]
@@ -97,15 +97,129 @@
         [Category("鏁版嵁")]
         [DisplayName("闃�闂ㄨ缃�")]
         [PropertyOrder(2006)]
-        [IsHydroCurvePro(HydroCurve.ValveQL)]
         [Browsable(true)]
         public string ValveSetting { get; set; }
+
+        /// <summary>
+        /// 鍘嬪己璁剧疆
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("鍘嬪己璁剧疆")]
+        [Display(Name = "鍘嬪己璁剧疆(m)")]
+        [DisplayUnit("m")]
+        [HydroRealPro("ValveSetting")]
+        [PropertyOrder(2007)]
+        [Browsable(true)]
+        public double? ValvePress { get; set; }
+
+        /// <summary>
+        /// 鍘嬪己璁剧疆
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("娴侀噺璁剧疆")]
+        [Display(Name = "娴侀噺璁剧疆(m鲁/h)")]
+        [DisplayUnit("m鲁/h")]
+        [HydroRealPro("ValveSetting")]
+        [PropertyOrder(2008)]
+        [Browsable(true)]
+        public double? ValveFlow { get; set; }
+
+        /// <summary>
+        /// 寮�搴︽崯澶辨洸绾�
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("寮�搴︽崯澶辨洸绾�")]
+        [HydroRealPro("ValveSetting")]
+        [HydroCurvePro(HydroCurve.Valve, HydroCurveType.CurveOL)]
+        [PropertyOrder(2009)]
+        [Browsable(true)]
+        public string ValveOL { get; set; }
+
+        /// <summary>
+        /// 姘村ご鎹熷け鏇茬嚎
+        /// </summary>
+        [Category("鏁版嵁")]
+        [DisplayName("姘村ご鎹熷け鏇茬嚎")]
+        [HydroRealPro("ValveSetting")]
+        [HydroCurvePro(HydroCurve.Valve, HydroCurveType.CurveQL)]
+        [PropertyOrder(2010)]
+        [Browsable(true)]
+        public string ValveQL { get; set; }
+
+        /// <summary>
+        /// 姘村ご鎹熷け
+        /// </summary>
+        [Category("璁$畻缁撴灉")]
+        [DisplayName("姘村ご鎹熷け")]
+        [Display(Name = "姘村ご鎹熷け(m)")]
+        [PropertyOrder(10003)]
+        [DisplayUnit("m")]
+        [HydroCalcuPro]
+        [ShowEditor(false)]
+        [Browsable(false)]
+        public override double? CalcuHeadLoss { get; set; }
+
+        /// <summary>
+        /// 娌跨▼鎹熷け
+        /// </summary>
+        [Category("璁$畻缁撴灉")]
+        [DisplayName("娌跨▼鎹熷け")]
+        [Display(Name = "娌跨▼鎹熷け(m)")]
+        [PropertyOrder(10005)]
+        [DisplayUnit("m")]
+        [HydroCalcuPro]
+        [ShowEditor(false)]
+        [Browsable(false)]
+        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>
@@ -114,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;
@@ -126,6 +242,7 @@
             this.UpdatePropStatus(nameof(this.OpeningDegree), this.Vmo, nameof(this.Vmo.OpeningDegree));
             this.ValveSetting = this.Vmo.ValveSetting;
             this.UpdatePropStatus(nameof(this.ValveSetting), this.Vmo, nameof(this.Vmo.ValveSetting));
+            UpdateValveSetting();
         }
 
         /// <summary>
@@ -134,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;
@@ -144,6 +263,115 @@
             this.Vmo.UpdatePropStatus(nameof(this.Vmo.ValveType), this, nameof(this.ValveType));
             this.Vmo.OpeningDegree = this.OpeningDegree;
             this.Vmo.UpdatePropStatus(nameof(this.Vmo.OpeningDegree), this, nameof(this.OpeningDegree));
+            UpdateVmoValveSetting();
+            this.Vmo.ValveSetting = this.ValveSetting;
+            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()
+        {
+            switch (this.Vmo.ValveType)
+            {
+                case Yw.Hydro.ValveType.PSV:
+                    {
+                        if (double.TryParse(this.ValveSetting, out double press))
+                        {
+                            this.ValvePress = press;
+                        }
+                    }
+                    break;
+                case Yw.Hydro.ValveType.PBV:
+                    {
+                        if (double.TryParse(this.ValveSetting, out double press))
+                        {
+                            this.ValvePress = press;
+                        }
+                    }
+                    break;
+                case Yw.Hydro.ValveType.PRV:
+                    {
+                        if (double.TryParse(this.ValveSetting, out double press))
+                        {
+                            this.ValvePress = press;
+                        }
+                    }
+                    break;
+                case Yw.Hydro.ValveType.FCV:
+                    {
+                        if (double.TryParse(this.ValveSetting, out double flow))
+                        {
+                            this.ValveFlow = flow;
+                        }
+                    }
+                    break;
+                case Yw.Hydro.ValveType.TCV:
+                    {
+                        this.ValveOL = this.ValveSetting;
+                    }
+                    break;
+                case Yw.Hydro.ValveType.GPV:
+                    {
+                        this.ValveQL = this.ValveSetting;
+                    }
+                    break;
+                default: break;
+            }
+        }
+
+        //鏇存柊vmo闃�闂ㄨ缃�
+        //浣跨敤鑷韩灞炴�э紝鏇存柊vmo闃�闂ㄨ缃�
+        private void UpdateVmoValveSetting()
+        {
+            switch (this.Vmo.ValveType)
+            {
+                case Yw.Hydro.ValveType.PSV:
+                    {
+                        this.ValveSetting = this.ValvePress?.ToString();
+                    }
+                    break;
+                case Yw.Hydro.ValveType.PBV:
+                    {
+                        this.ValveSetting = this.ValvePress?.ToString();
+                    }
+                    break;
+                case Yw.Hydro.ValveType.PRV:
+                    {
+                        this.ValveSetting = this.ValvePress?.ToString();
+                    }
+                    break;
+                case Yw.Hydro.ValveType.FCV:
+                    {
+                        this.ValveSetting = this.ValveFlow?.ToString();
+                    }
+                    break;
+                case Yw.Hydro.ValveType.TCV:
+                    {
+                        this.ValveSetting = this.ValveOL;
+                    }
+                    break;
+                case Yw.Hydro.ValveType.GPV:
+                    {
+                        this.ValveSetting = this.ValveQL;
+                    }
+                    break;
+                default: break;
+            }
         }
 
 

--
Gitblit v1.9.3