Shuxia Ning
2025-01-14 0f99d4d12f2eae29bbe343f4b3131f2faeccda5d
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-viewmodel/04-link/02-pump/HydroPumpViewModel.cs
@@ -16,25 +16,17 @@
        public HydroPumpViewModel(Yw.Model.HydroPumpInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo)
        {
            this.RatedP = rhs.RatedP;
            this.UpdatePropStatus(nameof(this.RatedP), rhs, nameof(rhs.RatedP));
            this.RatedQ = rhs.RatedQ;
            this.UpdatePropStatus(nameof(this.RatedQ), rhs, nameof(rhs.RatedQ));
            this.RatedH = rhs.RatedH;
            this.UpdatePropStatus(nameof(this.RatedH), rhs, nameof(rhs.RatedH));
            this.RatedN = rhs.RatedN;
            this.UpdatePropStatus(nameof(this.RatedN), rhs, nameof(rhs.RatedN));
            this.RatedHz = rhs.RatedHz;
            this.UpdatePropStatus(nameof(this.RatedHz), rhs, nameof(rhs.RatedHz));
            this.InletDiameter = rhs.InletDiameter;
            this.OutletDiameter = rhs.OutletDiameter;
            this.SpeedRatio = rhs.SpeedRatio;
            this.UpdatePropStatus(nameof(this.SpeedRatio), rhs, nameof(rhs.SpeedRatio));
            this.SpeedRatioPattern = rhs.SpeedRatioPattern;
            this.UpdatePropStatus(nameof(this.SpeedRatioPattern), rhs, nameof(rhs.SpeedRatioPattern));
            this.CurveQH = rhs.CurveQH;
            this.UpdatePropStatus(nameof(this.CurveQH), rhs, nameof(rhs.CurveQH));
            this.CurveQP = rhs.CurveQP;
            this.UpdatePropStatus(nameof(this.CurveQP), rhs, nameof(rhs.CurveQP));
            this.CurveQE = rhs.CurveQE;
            this.UpdatePropStatus(nameof(this.CurveQE), rhs, nameof(rhs.CurveQE));
        }
        /// <summary>
@@ -42,38 +34,41 @@
        /// </summary>
        [Category("数据")]
        [DisplayName("水泵状态")]
        [PropertyOrder(13)]
        [Browsable(true)]
        [PropertyOrder(1003)]
        [TypeConverter(typeof(HydroPumpStatusConverter))]
        [Browsable(true)]
        public override string LinkStatus { get; set; }
        /// <summary>
        /// 额定流量
        /// </summary>
        [Category("数据")]
        [DisplayName("额定流量")]
        [PropertyOrder(101)]
        [Display(Name = "额定流量(m³/h)")]
        [DisplayUnit("m³/h")]
        [DisplayName("额定流量")]
        [PropertyOrder(2001)]
        [Browsable(true)]
        public double? RatedQ { get; set; }
        public double RatedQ { get; set; }
        /// <summary>
        /// 额定扬程
        /// </summary>
        [Category("数据")]
        [Display(Name = "额定扬程(m)")]
        [DisplayName("额定扬程")]
        [PropertyOrder(102)]
        [DisplayUnit("m")]
        [PropertyOrder(2002)]
        [Browsable(true)]
        public double? RatedH { get; set; }
        public double RatedH { get; set; }
        /// <summary>
        /// 额定功率
        /// </summary>
        [Category("数据")]
        [Display(Name = "额定功率(kW)")]
        [DisplayName("额定功率")]
        [PropertyOrder(103)]
        [DisplayUnit("kW")]
        [PropertyOrder(2003)]
        [Browsable(true)]
        public double RatedP { get; set; }
@@ -81,29 +76,54 @@
        /// 额定转速
        /// </summary>
        [Category("数据")]
        [Display(Name = "额定转速(r/min)")]
        [DisplayName("额定转速")]
        [PropertyOrder(104)]
        [DisplayUnit("r/min")]
        [PropertyOrder(2004)]
        [Browsable(true)]
        public double? RatedN { get; set; }
        public double RatedN { get; set; }
        /// <summary>
        /// 额定频率
        /// </summary>
        [Category("数据")]
        [Display(Name = "额定频率")]
        [DisplayName("额定频率")]
        [PropertyOrder(105)]
        [DisplayUnit("hz")]
        [PropertyOrder(2005)]
        [Browsable(true)]
        public double RatedHz { get; set; }
        /// <summary>
        /// 进口口径
        /// </summary>
        [Category("数据")]
        [Display(Name = "进口口径(mm)")]
        [DisplayName("进口口径")]
        [DisplayUnit("mm")]
        [PropertyOrder(2006)]
        [Browsable(true)]
        public double? InletDiameter { get; set; }
        /// <summary>
        /// 出口口径
        /// </summary>
        [Category("数据")]
        [Display(Name = "出口口径(mm)")]
        [DisplayName("出口口径")]
        [DisplayUnit("mm")]
        [PropertyOrder(2007)]
        [Browsable(true)]
        public double? OutletDiameter { get; set; }
        /// <summary>
        /// 设定频率
        /// </summary>
        [Category("数据")]
        [Display(Name = "设定频率")]
        [DisplayName("设定频率")]
        [PropertyOrder(106)]
        [DisplayUnit("hz")]
        [PropertyOrder(2006)]
        [Browsable(true)]
        public double CurrentHz
        {
@@ -123,7 +143,7 @@
        /// </summary>
        [Category("数据")]
        [DisplayName("转速比")]
        [PropertyOrder(107)]
        [PropertyOrder(2007)]
        [Browsable(false)]
        public double SpeedRatio { get; set; }
@@ -132,7 +152,7 @@
        /// </summary>
        [Category("数据")]
        [DisplayName("转速比模式")]
        [PropertyOrder(108)]
        [PropertyOrder(2008)]
        [Browsable(false)]
        public string SpeedRatioPattern { get; set; }
@@ -141,8 +161,8 @@
        /// </summary>
        [Category("数据")]
        [DisplayName("性能曲线")]
        [PropertyOrder(110)]
        [IsHydroCurvePro(HydroCurve.Pump)]
        [PropertyOrder(2009)]
        [HydroCurvePro(HydroCurve.Pump)]
        [Browsable(true)]
        public string Curve
        {
@@ -161,9 +181,9 @@
        /// </summary>
        [Category("数据")]
        [DisplayName("流量扬程曲线")]
        [PropertyOrder(111)]
        [IsHydroCurvePro(HydroCurve.PumpQH)]
        [Browsable(false)]
        [PropertyOrder(2010)]
        [HydroCurvePro(HydroCurve.Pump, HydroCurveType.CurveQH)]
        [Browsable(true)]
        public string CurveQH { get; set; }
        /// <summary>
@@ -171,9 +191,9 @@
        /// </summary>
        [Category("数据")]
        [DisplayName("流量功率曲线")]
        [PropertyOrder(112)]
        [IsHydroCurvePro(HydroCurve.PumpQP)]
        [Browsable(false)]
        [PropertyOrder(2011)]
        [HydroCurvePro(HydroCurve.Pump, HydroCurveType.CurveQP)]
        [Browsable(true)]
        public string CurveQP { get; set; }
        /// <summary>
@@ -181,87 +201,59 @@
        /// </summary>
        [Category("数据")]
        [DisplayName("流量效率曲线")]
        [PropertyOrder(113)]
        [IsHydroCurvePro(HydroCurve.PumpQE)]
        [Browsable(false)]
        [PropertyOrder(2012)]
        [HydroCurvePro(HydroCurve.Pump, HydroCurveType.CurveQE)]
        [Browsable(true)]
        public string CurveQE { get; set; }
        /// <summary>
        /// 能耗价格
        /// </summary>
        [Category("数据")]
        [DisplayName("能耗价格")]
        [PropertyOrder(114)]
        [Browsable(false)]
        public double? Price { get; set; }
        /// <summary>
        /// 价格模式
        /// </summary>
        [Category("数据")]
        [DisplayName("价格模式")]
        [PropertyOrder(115)]
        [Browsable(false)]
        public string PricePattern { get; set; }
        /// <summary>
        /// 流量
        /// </summary>
        [Category("计算结果")]
        [DisplayName("流量")]
        [PropertyOrder(10001)]
        [DisplayUnit("m³/h")]
        [IsHydroCalcuPro(true)]
        [ShowEditor(false)]
        [Browsable(false)]
        public override double? CalcuFlow { get; set; }
        /// <summary>
        /// 流速
        /// </summary>
        [Category("计算结果")]
        [DisplayName("流速")]
        [PropertyOrder(10002)]
        [DisplayUnit("m/s")]
        [IsHydroCalcuPro(true)]
        [ShowEditor(false)]
        [Browsable(false)]
        public override double? CalcuVelocity { get; set; }
        /// <summary>
        /// 水头损失
        /// </summary>
        [Category("计算结果")]
        [DisplayName("水头损失")]
        [PropertyOrder(10003)]
        [DisplayUnit("m")]
        [IsHydroCalcuPro(true)]
        [ShowEditor(false)]
        [Browsable(false)]
        public override double? CalcuHeadLoss { get; set; }
        /// <summary>
        /// 流量
        /// </summary>
        [Category("计算结果")]
        [DisplayName("流量")]
        [Display(Name = "流量(m³/h)")]
        [PropertyOrder(11001)]
        [DisplayUnit("m³/h")]
        [IsHydroCalcuPro(true)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(true)]
        public 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("扬程")]
        [PropertyOrder(11002)]
        [DisplayUnit("m")]
        [IsHydroCalcuPro(true)]
        [Display(Name = "扬程(m)")]
        [PropertyOrder(11004)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(true)]
        public double? CalcuH { get; set; }
@@ -271,9 +263,10 @@
        /// </summary>
        [Category("计算结果")]
        [DisplayName("功率")]
        [PropertyOrder(11003)]
        [DisplayUnit("kW")]
        [IsHydroCalcuPro(true)]
        [Display(Name = "功率(kW)")]
        [PropertyOrder(11005)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(true)]
        public double? CalcuP { get; set; }
@@ -283,9 +276,10 @@
        /// </summary>
        [Category("计算结果")]
        [DisplayName("效率")]
        [PropertyOrder(11004)]
        [DisplayUnit("%")]
        [IsHydroCalcuPro(true)]
        [Display(Name = "效率(%)")]
        [PropertyOrder(11006)]
        [HydroCalcuPro]
        [ShowEditor(false)]
        [Browsable(true)]
        public double? CalcuE { get; set; }
@@ -294,43 +288,57 @@
        /// 
        /// </summary>
        [Browsable(false)]
        public new Yw.Model.HydroPumpInfo Vmo { get; set; }
        public override void Update()
        public new Yw.Model.HydroPumpInfo Vmo
        {
            base.Update();
            get { return _vmo as Yw.Model.HydroPumpInfo; }
            set { _vmo = value; }
        }
        /// <summary>
        ///
        /// </summary>
        public override void UpdateProperty()
        {
            base.UpdateProperty();
            this.RatedP = this.Vmo.RatedP;
            this.UpdatePropStatus(nameof(this.RatedP), this.Vmo, nameof(this.Vmo.RatedP));
            this.RatedQ = this.Vmo.RatedQ;
            this.UpdatePropStatus(nameof(this.RatedQ), this.Vmo, nameof(this.Vmo.RatedQ));
            this.RatedH = this.Vmo.RatedH;
            this.UpdatePropStatus(nameof(this.RatedH), this.Vmo, nameof(this.Vmo.RatedH));
            this.RatedN = this.Vmo.RatedN;
            this.UpdatePropStatus(nameof(this.RatedN), this.Vmo, nameof(this.Vmo.RatedN));
            this.RatedHz = this.Vmo.RatedHz;
            this.UpdatePropStatus(nameof(this.RatedHz), this.Vmo, nameof(this.Vmo.RatedHz));
            this.SpeedRatio = this.Vmo.SpeedRatio;
            this.UpdatePropStatus(nameof(this.SpeedRatio), this.Vmo, nameof(this.Vmo.SpeedRatio));
            this.SpeedRatioPattern = this.Vmo.SpeedRatioPattern;
            this.UpdatePropStatus(nameof(this.SpeedRatioPattern), this.Vmo, nameof(this.Vmo.SpeedRatioPattern));
            this.CurveQH = this.Vmo.CurveQH;
            this.UpdatePropStatus(nameof(this.CurveQH), this.Vmo, nameof(this.Vmo.CurveQH));
            this.CurveQP = this.Vmo.CurveQP;
            this.UpdatePropStatus(nameof(this.CurveQP), this.Vmo, nameof(this.Vmo.CurveQP));
            this.CurveQE = this.Vmo.CurveQE;
            this.UpdatePropStatus(nameof(this.CurveQE), this.Vmo, nameof(this.Vmo.CurveQE));
        }
        public override void UpdateVmoProperty()
        {
            base.UpdateVmoProperty();
            this.Vmo.RatedQ = this.RatedQ;
            this.Vmo.RatedH = this.RatedH;
            this.Vmo.RatedP = this.RatedP;
            this.Vmo.RatedN = this.RatedN;
            this.Vmo.RatedHz = this.RatedHz;
            this.Vmo.SpeedRatio = this.SpeedRatio;
            this.Vmo.SpeedRatioPattern = this.SpeedRatioPattern;
            this.Vmo.CurveQH = this.CurveQH;
            this.Vmo.CurveQP = this.CurveQP;
            this.Vmo.CurveQE = this.CurveQE;
        }
        /// <summary>
        /// 更新计算属性
        /// </summary>
        public override void UpdateCalcuProperty(HydroCalcuResult rhs)
        public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
        {
            base.UpdateCalcuProperty(rhs);
            if (rhs is HydroCalcuPumpResult calcuPumpProperty)
            {
                this.CalcuQ = calcuPumpProperty.CalcuQ.HasValue ? Math.Round(calcuPumpProperty.CalcuQ.Value, 1) : null;
                this.CalcuPr1 = calcuPumpProperty.CalcuPr1.HasValue ? Math.Round(calcuPumpProperty.CalcuPr1.Value, 2) : null;
                this.CalcuPr2 = calcuPumpProperty.CalcuPr2.HasValue ? Math.Round(calcuPumpProperty.CalcuPr2.Value, 2) : null;
                this.CalcuH = calcuPumpProperty.CalcuH.HasValue ? Math.Round(calcuPumpProperty.CalcuH.Value, 2) : null;
                this.CalcuP = calcuPumpProperty.CalcuP.HasValue ? Math.Round(calcuPumpProperty.CalcuP.Value, 1) : null;
                this.CalcuE = calcuPumpProperty.CalcuE.HasValue ? Math.Round(calcuPumpProperty.CalcuE.Value, 1) : null;