lixiaojun
2025-01-15 b2b2686f9c49e9ce7c27fffaf76347b38f03f0aa
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/04-resistance/00-core/HydroResistanceViewModel.cs
@@ -3,7 +3,7 @@
    /// <summary>
    /// 组件视图
    /// </summary>
    public class HydroResistanceViewModel : HydroLinkViewModel
    public class HydroResistanceViewModel : HydroLinkViewModel, IHydroCalcuResistanceResult
    {
        /// <summary>
        /// 
@@ -16,26 +16,18 @@
        public HydroResistanceViewModel(Yw.Model.HydroResistanceInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo)
        {
            this.LinkStatus = HydroResistanceStatusHelper.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;
            this.UpdatePropStatus(nameof(this.Diameter), rhs, nameof(rhs.Diameter));
            this.MinorLoss = rhs.MinorLoss;
            this.UpdatePropStatus(nameof(this.MinorLoss), rhs, nameof(rhs.MinorLoss));
            this.CurveQL = rhs.CurveQL;
            this.UpdatePropStatus(nameof(this.CurveQL), rhs, nameof(rhs.CurveQL));
            this.Vmo = rhs;
        }
        /// <summary>
        /// 开关状态
        /// 模式
        /// </summary>
        [Category("数据")]
        [DisplayName("开关状态")]
        [Display(Name = "开关状态")]
        [Description("[默认]使用水头损失曲线;[开启]使用局阻系数")]
        [DisplayName("模式")]
        [Display(Name = "模式")]
        [PropertyOrder(103)]
        [Browsable(true)]
        [TypeConverter(typeof(HydroResistanceStatusConverter))]
@@ -74,9 +66,9 @@
        /// </summary>
        [Category("数据")]
        [DisplayName("水头损失曲线")]
        [HydroCurvePro(HydroCurve.ResistanceQL, HydroCurveType.CurveQL)]
        [HydroCurvePro(HydroCurve.Resistance, HydroCurveType.CurveQL)]
        [PropertyOrder(1004)]
        [Browsable(true)]
        [Browsable(false)]
        public virtual string Curve
        {
            get
@@ -95,15 +87,84 @@
        [Category("数据")]
        [DisplayName("水头损失曲线")]
        [PropertyOrder(1005)]
        [HydroCurvePro(HydroCurve.ResistanceQL, HydroCurveType.CurveQL)]
        [HydroCurvePro(HydroCurve.Resistance, HydroCurveType.CurveQL)]
        [Browsable(true)]
        public virtual string CurveQL { get; set; }
        /// <summary>
        /// 沿程损失
        /// </summary>
        [Category("计算结果")]
        [DisplayName("沿程损失")]
        [Display(Name = "沿程损失(m)")]
        [PropertyOrder(19009)]
        [DisplayUnit("m")]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(false)]
        public string CurveQL { get; set; }
        public override double? CalcuFrictionLoss { get; set; }
        /// <summary>
        /// 流量
        /// </summary>
        [Category("计算结果")]
        [DisplayName("流量")]
        [DisplayUnit("m³/h")]
        [Display(Name = "流量(m³/h)")]
        [PropertyOrder(11001)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(true)]
        public virtual double? CalcuQ { get; set; }
        /// <summary>
        /// 进口压力
        /// </summary>
        [Category("计算结果")]
        [DisplayName("进口压力")]
        [DisplayUnit("m")]
        [Display(Name = "进口压力(m)")]
        [PropertyOrder(11002)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(true)]
        public virtual double? CalcuPr1 { get; set; }
        /// <summary>
        /// 出口压力
        /// </summary>
        [Category("计算结果")]
        [DisplayName("出口压力")]
        [DisplayUnit("m")]
        [Display(Name = "出口压力(m)")]
        [PropertyOrder(11003)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(true)]
        public virtual double? CalcuPr2 { get; set; }
        /// <summary>
        /// 局部损失
        /// </summary>
        [Category("计算结果")]
        [DisplayName("局部损失")]
        [DisplayUnit("m")]
        [Display(Name = "局部损失(m)")]
        [PropertyOrder(19008)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(true)]
        public override double? CalcuMinorLoss { get; set; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public new Yw.Model.HydroResistanceInfo Vmo { get; set; }
        public new Yw.Model.HydroResistanceInfo Vmo
        {
            get { return _vmo as Yw.Model.HydroResistanceInfo; }
            set { _vmo = value; }
        }
        /// <summary>
        /// 
@@ -112,15 +173,10 @@
        {
            base.UpdateProperty();
            this.LinkStatus = HydroResistanceStatusHelper.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;
            this.UpdatePropStatus(nameof(this.Diameter), this.Vmo, nameof(this.Vmo.Diameter));
            this.MinorLoss = this.Vmo.MinorLoss;
            this.UpdatePropStatus(nameof(this.MinorLoss), this.Vmo, nameof(this.Vmo.MinorLoss));
            this.CurveQL = this.Vmo.CurveQL;
            this.UpdatePropStatus(nameof(this.CurveQL), this.Vmo, nameof(this.Vmo.CurveQL));
        }
        /// <summary>
@@ -130,15 +186,24 @@
        {
            base.UpdateVmoProperty();
            this.Vmo.LinkStatus = HydroResistanceStatusHelper.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;
            this.Vmo.UpdatePropStatus(nameof(this.Vmo.Diameter), this, nameof(this.Diameter));
            this.Vmo.MinorLoss = this.MinorLoss;
            this.Vmo.UpdatePropStatus(nameof(this.Vmo.MinorLoss), this, nameof(this.MinorLoss));
            this.Vmo.CurveQL = this.CurveQL;
            this.Vmo.UpdatePropStatus(nameof(this.Vmo.CurveQL), this, nameof(this.CurveQL));
        }
        /// <summary>
        /// 更新计算属性
        /// </summary>
        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
        {
            base.UpdateCalcuProperty(rhs);
            if (rhs is HydroCalcuResistanceResult calcuResistanceProperty)
            {
                this.CalcuQ = calcuResistanceProperty.CalcuQ.HasValue ? Math.Round(calcuResistanceProperty.CalcuQ.Value, 1) : null;
                this.CalcuPr1 = calcuResistanceProperty.CalcuPr1.HasValue ? Math.Round(calcuResistanceProperty.CalcuPr1.Value, 2) : null;
                this.CalcuPr2 = calcuResistanceProperty.CalcuPr2.HasValue ? Math.Round(calcuResistanceProperty.CalcuPr2.Value, 2) : null;
            }
        }