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