duheng
2024-10-22 b0944e2f380a3d538e6cc740673ea49c67abfebf
Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0
已修改15个文件
已添加2个文件
433 ■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/PumpMatchingViewModel.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/06-analy/XhsProjectSimualtionAnalySingleResultViewModel.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/06-analy/XhsProjectSimulationAnalySinglePumpViewModel.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/PumpFullInfoCtrl.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/00-core/HydroLinkViewModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpViewModel.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/02-chart-edit/PumpPerform2dEditChart.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/02-chart-edit/PumpPerform2dEditCtrl.cs 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/02-chart-edit/PumpPerform2dEditDlg.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/02-valve-chart/02-chart-edit/ValvePerform2dEditCtrl.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/02-valve-chart/02-chart-edit/ValvePerform2dEditDlg.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/99-models/01-coordinate/PumpCoordinate_Disp.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs
@@ -11,7 +11,7 @@
        /// <summary>
        /// åˆ›å»ºèµ„产自动匹配ViewModel
        /// </summary>
        public static AssetsMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo)
        public static AssetsMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, List<IHydroCalcuResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -20,22 +20,22 @@
            var input = new AssetsMatchingViewModel();
            //æ°´æ³µ
            input.PumpMatchingList = hydroInfo.Pumps?.Select(x => Create(hydroInfo, x)).ToList();
            input.PumpMatchingList = hydroInfo.Pumps?.Select(x => Create(hydroInfo, x, allCalcuResultList)).ToList();
            //阀门
            input.ValveMatchingList = hydroInfo.Valves?.Select(x => Create(hydroInfo, x)).ToList();
            input.ValveMatchingList = hydroInfo.Valves?.Select(x => Create(hydroInfo, x, allCalcuResultList)).ToList();
            //管道
            input.PipeMatchingList = hydroInfo.Pipes?.Select(x => Create(hydroInfo, x)).ToList();
            input.PipeMatchingList = hydroInfo.Pipes?.Select(x => Create(hydroInfo, x, allCalcuResultList)).ToList();
            //弯头
            input.ElbowMatchingList = hydroInfo.Elbows?.Select(x => Create(hydroInfo, x)).ToList();
            input.ElbowMatchingList = hydroInfo.Elbows?.Select(x => Create(hydroInfo, x, allCalcuResultList)).ToList();
            //三通
            input.ThreelinkMatchingList = hydroInfo.Threelinks?.Select(x => Create(hydroInfo, x)).ToList();
            input.ThreelinkMatchingList = hydroInfo.Threelinks?.Select(x => Create(hydroInfo, x, allCalcuResultList)).ToList();
            //四通
            input.FourlinkMatchingList = hydroInfo.Fourlinks?.Select(x => Create(hydroInfo, x)).ToList();
            input.FourlinkMatchingList = hydroInfo.Fourlinks?.Select(x => Create(hydroInfo, x, allCalcuResultList)).ToList();
            return input;
        }
@@ -43,7 +43,7 @@
        /// <summary>
        /// åˆ›å»ºæ³µè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static PumpMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPumpInfo pumpInfo)
        public static PumpMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPumpInfo pumpInfo, List<IHydroCalcuResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -53,26 +53,13 @@
            {
                return default;
            }
            return new PumpMatchingViewModel()
            {
                ID = pumpInfo.ID,
                Code = pumpInfo.Code,
                Name = pumpInfo.Name,
                DbLocked = pumpInfo.DbLocked,
                ModelType = pumpInfo.ModelType,
                DbId = pumpInfo.DbId,
                CurveDbId = hydroInfo.Curves?.Find(t => t.Code == pumpInfo.CurveQH)?.DbId,
                RatedP = pumpInfo.RatedP,
                RatedH = pumpInfo.RatedH,
                RatedN = pumpInfo.RatedN,
                RatedQ = pumpInfo.RatedQ,
            };
            return new PumpMatchingViewModel(pumpInfo, hydroInfo, allCalcuResultList);
        }
        /// <summary>
        /// åˆ›å»ºé˜€é—¨è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static ValveMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroValveInfo valveInfo)
        public static ValveMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroValveInfo valveInfo, List<IHydroCalcuResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -100,7 +87,7 @@
        /// <summary>
        /// åˆ›å»ºç®¡é“自动匹配ViewModel
        /// </summary>
        public static PipeMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPipeInfo pipeInfo)
        public static PipeMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPipeInfo pipeInfo, List<IHydroCalcuResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -129,7 +116,7 @@
        /// <summary>
        /// åˆ›å»ºå¼¯å¤´è‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static ElbowMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroElbowInfo elbowInfo)
        public static ElbowMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroElbowInfo elbowInfo, List<IHydroCalcuResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -156,7 +143,7 @@
        /// <summary>
        /// åˆ›å»ºä¸‰é€šè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static ThreelinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroThreelinkInfo threelinkInfo)
        public static ThreelinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroThreelinkInfo threelinkInfo, List<IHydroCalcuResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -183,7 +170,7 @@
        /// <summary>
        /// åˆ›å»ºå››é€šè‡ªåŠ¨åŒ¹é…ViewModel
        /// </summary>
        public static FourlinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroFourlinkInfo fourlinkInfo)
        public static FourlinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroFourlinkInfo fourlinkInfo, List<IHydroCalcuResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -309,6 +296,7 @@
                pump.RatedQ = matching.RatedQ;
                pump.RatedH = matching.RatedH;
                pump.RatedN = matching.RatedN;
                pump.RatedHz = matching.RatedHz;
                if (!pump.DbLocked)
                {
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs
@@ -235,7 +235,7 @@
            feedBackMsg?.Invoke("正在进行产品匹配...", Color.Black);
            hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroId);
            var matchingParas = AssetsMatchingParasHelper.Create(hydroInfo);
            var matchingParas = AssetsMatchingParasHelper.Create(hydroInfo, null);
            if (AssetsMatchingHelper.Matching(matchingParas, out string error))
            {
                if (AssetsMatchingParasHelper.Apply(hydroInfo, matchingParas))
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
@@ -27,13 +27,15 @@
        //水力信息方法
        private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null;
        private Func<List<IHydroCalcuResult>> _allHydroCalcuResultListFunc = null;
        /// <summary>
        /// åˆå§‹åŒ–数据
        /// </summary>
        public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc)
        public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc, Func<List<IHydroCalcuResult>> allHydroCalcuResultListFunc)
        {
            _hydroInfoFunc = hydroInfoFunc;
            _allHydroCalcuResultListFunc = allHydroCalcuResultListFunc;
            this.hydroParterPropertyCtrl1.InitialData(hydroInfoFunc);
        }
@@ -144,7 +146,7 @@
                        }
                        var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == propViewModel.Code);
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo);
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke());
                        var dlg = new PumpSingleMatchingDlg();
                        dlg.SetBindingData(input);
                        dlg.ReloadDataEvent += (rhs) =>
@@ -243,7 +245,7 @@
                            break;
                        }
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo);
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo, _allHydroCalcuResultListFunc?.Invoke());
                        if (string.IsNullOrEmpty(pumpInfo.DbId))
                        {
                            var dlg = new PumpSingleMatchingDlg();
@@ -281,7 +283,7 @@
                        {
                            break;
                        }
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, valveInfo);
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, valveInfo, _allHydroCalcuResultListFunc?.Invoke());
                        var dlg = new ValveSingleMatchingDlg();
                        dlg.SetBindingData(input);
                        dlg.ReloadDataEvent += (rhs) =>
@@ -302,7 +304,7 @@
                        {
                            break;
                        }
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, elbowInfo);
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, elbowInfo, _allHydroCalcuResultListFunc?.Invoke());
                        var dlg = new ElbowSingMatchingDlg();
                        dlg.SetBindingData(input);
                        dlg.ReloadDataEvent += (output) =>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/PumpMatchingViewModel.cs
@@ -6,18 +6,57 @@
    public class PumpMatchingViewModel
    {
        /// <summary>
        ///
        /// </summary>
        public PumpMatchingViewModel() { }
        /// <summary>
        ///
        /// </summary>
        public PumpMatchingViewModel(Yw.Model.HydroPumpInfo rhs, Yw.Model.HydroModelInfo hydroInfo, List<IHydroCalcuResult> allCalcuResult)
        {
            this.ID = rhs.ID;
            this.Name = rhs.Name;
            this.Code = rhs.Code;
            this.ModelType = rhs.ModelType;
            this.DbId = rhs.DbId;
            this.DbLocked = rhs.DbLocked;
            this.CurveDbId = hydroInfo.Curves?.Find(x => x.Code == rhs.CurveQH)?.DbId;
            this.RatedP = rhs.RatedP;
            this.RatedQ = rhs.RatedQ;
            this.RatedH = rhs.RatedH;
            this.RatedN = rhs.RatedN;
            this.RatedHz = rhs.RatedHz;
            this.CurrentHz = Math.Round(rhs.RatedHz * rhs.SpeedRatio, 1);
            if (allCalcuResult != null && allCalcuResult.Count > 0)
            {
                var calcuResult = allCalcuResult.Find(x => x.Code == rhs.Code) as HydroCalcuLinkResult;
                if (calcuResult != null)
                {
                    if (calcuResult.CalcuFlow.HasValue)
                    {
                        this.CalcuQ = Math.Abs(calcuResult.CalcuFlow.Value);
                    }
                    var calcuResultStart = allCalcuResult.Find(x => x.Code == rhs.StartCode) as HydroCalcuNodeResult;
                    var calcuResultEnd = allCalcuResult.Find(x => x.Code == rhs.EndCode) as HydroCalcuNodeResult;
                    if (calcuResultStart != null && calcuResultEnd != null)
                    {
                        if (calcuResultStart.CalcuHead.HasValue && calcuResultEnd.CalcuHead.HasValue)
                        {
                            this.CalcuH = Math.Round(Math.Abs(calcuResultStart.CalcuHead.Value - calcuResultEnd.CalcuHead.Value), 4);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// ID
        /// </summary>
        [DisplayName("ID")]
        [Browsable(false)]
        public long ID { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        [DisplayName("编码")]
        [Browsable(true)]
        public string Code { get; set; }
        /// <summary>
        /// åç§°
@@ -27,11 +66,11 @@
        public string Name { get; set; }
        /// <summary>
        /// Db锁定
        /// ç¼–码
        /// </summary>
        [DisplayName("锁定")]
        [DisplayName("编码")]
        [Browsable(true)]
        public bool DbLocked { get; set; }
        public string Code { get; set; }
        /// <summary>
        /// åž‹å·
@@ -46,6 +85,13 @@
        [DisplayName("DbId")]
        [Browsable(false)]
        public string DbId { get; set; }
        /// <summary>
        /// Db锁定
        /// </summary>
        [DisplayName("锁定")]
        [Browsable(true)]
        public bool DbLocked { get; set; }
        /// <summary>
        /// CurveDbId
@@ -81,6 +127,34 @@
        [DisplayName("额定转速")]
        [Browsable(true)]
        public double? RatedN { get; set; }
        /// <summary>
        /// é¢å®šé¢‘率
        /// </summary>
        [DisplayName("额定频率")]
        [Browsable(true)]
        public double RatedHz { get; set; }
        /// <summary>
        /// è®¾å®šé¢‘率
        /// </summary>
        [DisplayName("设定频率")]
        [Browsable(true)]
        public double CurrentHz { get; set; }
        /// <summary>
        /// è®¡ç®—流量
        /// </summary>
        [DisplayName("计算流量")]
        [Browsable(true)]
        public double? CalcuQ { get; set; }
        /// <summary>
        /// è®¡ç®—扬程
        /// </summary>
        [DisplayName("计算扬程")]
        [Browsable(true)]
        public double? CalcuH { get; set; }
        /// <summary>
        /// åŒ¹é…åž‹å·
@@ -132,6 +206,20 @@
        public double? MatchingRatedN { get; set; }
        /// <summary>
        /// åŒ¹é…é¢å®šé¢‘率
        /// </summary>
        [DisplayName("匹配额定频率")]
        [Browsable(true)]
        public double? MatchingRatedHz { get; set; }
        /// <summary>
        /// åŒ¹é…è®¾å®šé¢‘率
        /// </summary>
        [DisplayName("匹配设定频率")]
        [Browsable(true)]
        public double? MatchingCurrentHz { get; set; }
        /// <summary>
        /// åŒ¹é…æµé‡æ‰¬ç¨‹æ›²çº¿
        /// </summary>
        [DisplayName("匹配流量扬程曲线")]
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/06-analy/XhsProjectSimualtionAnalySingleResultViewModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HStation.WinFrmUI
{
    internal class XhsProjectSimualtionAnalySingleResultViewModel
    {
        public long ID { get; set; }
        public string Name { get; set; }
        public string Code { get; set; }
        public bool IsBp { get; set; }
        public string RunStatus { get; set; }
        public double CurrentHz { get; set; }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/06-analy/XhsProjectSimulationAnalySinglePumpViewModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HStation.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public class XhsProjectSimulationAnalySinglePumpViewModel
    {
        /// <summary>
        /// id
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// Open Closed
        /// </summary>
        public string RunStatus { get; set; }
        /// <summary>
        ///
        /// </summary>
        public bool IsBp { get; set; }
        /// <summary>
        /// 50hz 60hz
        /// </summary>
        public double RatedHz { get; set; }
        /// <summary>
        /// è®¾å®šé¢‘率
        /// </summary>
        public double CurrentHz { get; set; }
        /// <summary>
        /// æµé‡æ‰¬ç¨‹çº¿
        /// </summary>
        public List<HStation.WinFrmUI.CurvePointMatchingViewModel> CurveQH { get; set; }
        /// <summary>
        ///
        /// </summary>
        public List<HStation.WinFrmUI.CurvePointMatchingViewModel> CurveQP { get; set; }
        /// <summary>
        ///
        /// </summary>
        public List<HStation.WinFrmUI.CurvePointMatchingViewModel> CurveQE { get; set; }
        /// <summary>
        /// è®¡ç®—流量
        /// </summary>
        public double? CalcuQ { get; set; }
        /// <summary>
        /// è®¡ç®—扬程
        /// </summary>
        public double? CalcuH { get; set; }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -13,7 +13,7 @@
            this.PageTitle.Caption = "水力模拟";
            this.PageTitle.HeaderSvgImage = this.svgImg32[0];
            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
            this.docPnlRight.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
        }
        private HStation.Vmo.XhsProjectVmo _project = null;//项目
@@ -72,6 +72,8 @@
            this.tabPageQ3d.Controls.Clear();
            this.tabPageQ3d.Controls.Add(q3dCtrl);
            q3dCtrl.InitialData(() => _hydroInfo);
            ShowPropertyCtrl();
        }
        #region Bimface
@@ -216,7 +218,7 @@
            {
                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
                _propertyCtrl.Dock = DockStyle.Fill;
                _propertyCtrl.InitialData(() => _hydroInfo);
                _propertyCtrl.InitialData(() => _hydroInfo, () => GetAllCalcuResult());
                _propertyCtrl.BlinkLinkParterEvent += async (code, linkCode) =>
                { //强调连接组件
                    if (string.IsNullOrEmpty(code))
@@ -395,7 +397,7 @@
            }
            this.controlContainerBottom.Controls.Clear();
            var matchingListCtrl = GetMatchingListCtrl();
            var input = AssetsMatchingParasHelper.Create(_hydroInfo);
            var input = AssetsMatchingParasHelper.Create(_hydroInfo, GetAllCalcuResult());
            matchingListCtrl.SetBindingData(input);
            this.controlContainerBottom.Controls.Add(matchingListCtrl);
            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
@@ -682,15 +684,16 @@
            {
                return;
            }
            if (_calcuResult == null)
            {
                return;
            }
            if (!_calcuResult.Succeed)
            {
                return;
            }
            var pumps = _hydroInfo.Pumps;
            //if (_calcuResult == null)
            //{
            //    return;
            //}
            //if (!_calcuResult.Succeed)
            //{
            //    return;
            //}
            var pumps = _hydroInfo.Pumps?.Where(x => x.LinkStatus == Yw.Hydro.LinkStatus.Open).ToList();
            var curve_list = _hydroInfo.Curves;
            if (curve_list == null || !curve_list.Any())
            {
@@ -721,7 +724,7 @@
                var vm = new Yw.WinFrmUI.Phart.PumpSerialParallelViewModel();
                vm.Id = x.Code;
                vm.Name = x.Code;
                vm.Name = x.Name;
                //vm.IsBp = ;
                vm.RatedSpeed = rated_speed;
                vm.CurrentSpeed = Math.Round(rated_speed * speed_ratio);
@@ -738,7 +741,7 @@
            dlg.ShowDialog();
        }
        #endregion æ€§èƒ½æ›²çº¿
        #endregion
        #region æ°´åŠ›è®¡ç®—
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/PumpFullInfoCtrl.cs
@@ -28,6 +28,7 @@
            {
                InitData(pump_mian_id, null);
            }
        }
        //刷新属性值
@@ -38,7 +39,7 @@
        private Yw.Geometry.CubicSpline2d _qh, _qe, _qp;
        private Yw.Geometry.Point2d _work_pt;
        private double _rated_speed;
        private double _rated_speed=50;
        private async void InitData(long pump_main_id, Yw.Geometry.Point2d work_pt)
        {
@@ -84,37 +85,49 @@
            var qe = new Yw.Geometry.CubicSpline2d(points_qe);
            var qp = new Yw.Geometry.CubicSpline2d(points_qp);
            InitChart(qh, qe, qp, work_pt, pump_main.RatedSpeed);
            InitChart(qh, qe, qp, work_pt, pump_main.RatedSpeed, pump_main.RatedSpeed, 50);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="qh">流量扬程线</param>
        /// <param name="qe">流量效率线</param>
        /// <param name="qp">流量功率线</param>
        /// <param name="work_pt">工作点</param>
        /// <param name="rated_spped">额定转速</param>
        /// <param name="current_speed">当前转速</param>
        /// <param name="current_hz">当前频率</param>
        public void InitChart(
            Yw.Geometry.CubicSpline2d qh,
            Yw.Geometry.CubicSpline2d qe,
            Yw.Geometry.CubicSpline2d qp,
            Yw.Geometry.Point2d work_pt,
            double rated_speed)
            double rated_spped,
            double current_speed,
            double current_hz)
        {
            _qh = qh;
            _qe = qe;
            _qp = qp;
            _work_pt = work_pt;
            _rated_speed = rated_speed;
            _rated_speed = rated_spped;
            this.pumpPerformCompareChart1.SetBindingData(_qh, _qe, _qp);
            if (work_pt != null)
            {
                var calc_speed = PumpCalcHelper.GetSimuValue(qh, work_pt, rated_speed);
                var calc_hz = calc_speed / rated_speed * 50;
                var calc_hz = PumpCalcHelper.GetSimuValue(qh, work_pt, _rated_speed);
                calc_hz = Math.Round(calc_hz, 1);
                this.pumpPerformCompareInfoCtrl1.SetDesignPoint(work_pt, calc_hz);
            }
            var vm_vs = new Yw.WinFrmUI.Phart.PumpVariableSpeedInfoViewModel();
            vm_vs.Id = Guid.NewGuid().ToString();
            vm_vs.Name = rated_speed.ToString();
            vm_vs.RatedSpeed = rated_speed;
            vm_vs.CurrentSpeed = rated_speed;
            vm_vs.CurrentHz = 50;
            vm_vs.Name = current_hz.ToString();
            vm_vs.RatedSpeed = _rated_speed;
            vm_vs.CurrentSpeed = current_speed;
            vm_vs.CurrentHz = current_hz;
            vm_vs.Qh = _qh;
            vm_vs.Qe = _qe;
            vm_vs.Qp = _qp;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
@@ -81,7 +81,6 @@
  </ItemGroup>
  <ItemGroup>
    <Folder Include="03-simulation\06-simulation\06-curve\" />
    <Folder Include="03-simulation\06-simulation\07-bulkset\02-valve\" />
    <Folder Include="map\gaode\css\" />
  </ItemGroup>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/00-core/HydroLinkViewModel.cs
@@ -18,7 +18,7 @@
        {
            this.StartCode = rhs.StartCode;
            this.EndCode = rhs.EndCode;
            this.LinkStatus = rhs.LinkStatus;
            this.LinkStatus = HydroLinkStatusHelper.GetStatusName(rhs.LinkStatus);
            this.Vmo = rhs;
        }
WinFrmUI/Yw.WinFrmUI.Hydro.Core/04-parter/03-link/02-pump/HydroPumpViewModel.cs
@@ -55,6 +55,12 @@
        }
        /// <summary>
        /// æ°´æ³µçŠ¶æ€
        /// </summary>
        [DisplayName("水泵状态")]
        public override string LinkStatus { get; set; }
        /// <summary>
        /// é¢å®šåŠŸçŽ‡(kW)
        /// </summary>
        [DisplayName("额定功率(kW)")]
@@ -90,7 +96,11 @@
        [DisplayName("设定频率(hz)")]
        public double CurrentHz
        {
            get { return this.SpeedRatio * this.RatedHz; }
            get
            {
                var value = this.SpeedRatio * this.RatedHz;
                return Math.Round(value, 1);
            }
            set
            {
                if (this.RatedHz <= 0)
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/02-chart-edit/PumpPerform2dEditChart.cs
@@ -428,8 +428,8 @@
            }
            _axisYQE.SetAxisRange(_coordinate_paras.CoordMinE, _coordinate_paras.CoordMinE + _coordinate_paras.GridNumberY * _coordinate_paras.CoordSpaceE);
            _axisYQP.SetAxisRange(_coordinate_paras.CoordMinP, _coordinate_paras.CoordMinP + _coordinate_paras.GridNumberY * _coordinate_paras.CoordSpaceP);
            //_axisYQE.SetAxisRange(_coordinate_paras.CoordMinE-_coordinate_paras.CoordMinP, _coordinate_paras.CoordMinE + _coordinate_paras.GridNumberY * _coordinate_paras.CoordSpaceE);
            //_axisYQP.SetAxisRange(_coordinate_paras.DispMinP(), _coordinate_paras.CoordMinP + _coordinate_paras.GridNumberY * _coordinate_paras.CoordSpaceP);
        }
        /// <summary>
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/02-chart-edit/PumpPerform2dEditCtrl.cs
@@ -121,21 +121,34 @@
                    {
                        _qh_pt_list = points;
                        foreach (Yw.Geometry.Point2d pt in _qh_pt_list)
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(pt.X, pt.Y));
                        {
                            var x = Math.Round(pt.X, 2);
                            var y = Math.Round(pt.Y, 2);
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(x, y));
                        }
                    }
                    break;
                case Yw.Pump.eCurveType.QE:
                    {
                        _qe_pt_list = points;
                        foreach (Yw.Geometry.Point2d pt in _qe_pt_list)
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(pt.X, pt.Y));
                        {
                            var x = Math.Round(pt.X, 2);
                            var y = Math.Round(pt.Y, 2);
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(x, y));
                        }
                    }
                    break;
                case Yw.Pump.eCurveType.QP:
                    {
                        _qp_pt_list = points;
                        foreach (Yw.Geometry.Point2d pt in _qp_pt_list)
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(pt.X, pt.Y));
                        {
                            var x = Math.Round(pt.X, 2);
                            var y = Math.Round(pt.Y, 2);
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(x, y));
                        }
                    }
                    break;
            }
@@ -216,19 +229,31 @@
                case Yw.Pump.eCurveType.QH:
                    {
                        foreach (Yw.Geometry.Point2d pt in _qh_pt_list)
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(pt.X, pt.Y));
                        {
                            var x = Math.Round(pt.X, 2);
                            var y = Math.Round(pt.Y, 2);
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(x, y));
                        }
                    }
                    break;
                case Yw.Pump.eCurveType.QE:
                    {
                        foreach (Yw.Geometry.Point2d pt in _qe_pt_list)
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(pt.X, pt.Y));
                        {
                            var x = Math.Round(pt.X, 2);
                            var y = Math.Round(pt.Y, 2);
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(x, y));
                        }
                    }
                    break;
                case Yw.Pump.eCurveType.QP:
                    {
                        foreach (Yw.Geometry.Point2d pt in _qp_pt_list)
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(pt.X, pt.Y));
                        {
                            var x = Math.Round(pt.X, 2);
                            var y = Math.Round(pt.Y, 2);
                            _fitCurvePoints.Add(new Yw.Geometry.Point2d(x, y));
                        }
                    }
                    break;
            }
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/02-chart-edit/PumpPerform2dEditDlg.cs
@@ -29,9 +29,9 @@
            Yw.Geometry.CubicSpline2d qh = null, qe = null, qp = null;
            qh = new Yw.Geometry.CubicSpline2d(curve_qh.FeatCurve.GetPointList());
            if (qe != null)
            if (curve_qe != null)
                qe = new Yw.Geometry.CubicSpline2d(curve_qe.FeatCurve.GetPointList());
            if (qp != null)
            if (curve_qp != null)
                qp = new Yw.Geometry.CubicSpline2d(curve_qp.FeatCurve.GetPointList());
            this.curveExpressEditCtrl1.SetBindingData(qh, qe, qp);
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/02-valve-chart/02-chart-edit/ValvePerform2dEditCtrl.cs
@@ -88,8 +88,11 @@
            _fitCurvePoints.Clear(); 
            _pt_ql_list = points;
            foreach (Yw.Geometry.Point2d pt in _pt_ql_list)
                _fitCurvePoints.Add(new Yw.Geometry.Point2d(pt.X, pt.Y));
            {
                var x = Math.Round(pt.X, 2);
                var y = Math.Round(pt.Y, 2);
                _fitCurvePoints.Add(new Yw.Geometry.Point2d(x,y));
            }
            this.bindingSource1.ResetBindings(false);
        }
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/02-valve-chart/02-chart-edit/ValvePerform2dEditDlg.cs
@@ -23,8 +23,7 @@
            {
                return;
            } 
            this.curveExpressEditCtrl1.SetBindingData(ql);
        }
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/99-models/01-coordinate/PumpCoordinate_Disp.cs
@@ -1,4 +1,8 @@
namespace Yw.WinFrmUI.Phart
using DevExpress.CodeParser;
using DevExpress.DataAccess.Native.Json;
using DevExpress.Diagram.Core.Shapes;
namespace Yw.WinFrmUI.Phart
{
    /// <summary>
    ///  
@@ -195,8 +199,8 @@
            var validGridNumH = 6;
            var coordinate_paras = new PumpCoordinate();
            coordinate_paras.GridNumberX = 10;
            coordinate_paras.GridNumberY = 18;
            coordinate_paras.GridNumberX = 10;//10
            coordinate_paras.GridNumberY = 18;//18
            CalcCoordinateQ(minQ, maxQ, ref coordinate_paras, coordinate_paras.GridNumberX);
            CalcCoordinateH(minH, maxH, validGridNumH, ref coordinate_paras, out double disMinH, out double disMaxH);
@@ -205,7 +209,7 @@
            if (maxE > minE + 0.01)
                CalcCoordinateE(minE, maxE, ref coordinate_paras);
            return coordinate_paras;
        }
@@ -352,7 +356,7 @@
        /// <param name="coordinate_paras">坐标Model</param>
        public static void CalcCoordinateP(double minP, double maxP, double disMaxH, int downGridNum, ref PumpCoordinate coordinate_paras)
        {
            int default_num = 5;
            int default_num = 7;
            int spaceNum = coordinate_paras.StartLineNoH - default_num - downGridNum;
            if (spaceNum < 3)
                spaceNum = 3;
@@ -370,6 +374,10 @@
                stratLineNoP--;
            }
            coordinate_paras.CoordSpaceP = coordSpaceP;
            coordinate_paras.EndLineNoP = endLineNoP;
            coordinate_paras.StartLineNoP = stratLineNoP;
@@ -378,13 +386,22 @@
            if (coordinate_paras.StartLineNoP < downGridNum)
            {
                int diff_num = downGridNum - coordinate_paras.StartLineNoP;
                coordinate_paras.EndLineNoP += diff_num;
                coordinate_paras.StartLineNoP += diff_num;
            }
            coordinate_paras.CoordMinH = GetByPlacesLength(disMaxH - (double)coordinate_paras.EndLineNoH * coordinate_paras.CoordSpaceH, 3);
            coordinate_paras.CoordMinH = GetByPlacesLength(disMaxH - (double)coordinate_paras.EndLineNoH * coordinate_paras.CoordSpaceH, 3);
            coordinate_paras.CoordMinP = GetByPlacesLength(disMaxP - (double)coordinate_paras.EndLineNoP * coordinate_paras.CoordSpaceP, 3);
            if (minP > 0 && minP < 10)
            {
                coordinate_paras.StartLineNoP = 0;
                coordinate_paras.EndLineNoP = endLineNoP;
                coordinate_paras.CoordSpaceP = coordSpaceP;
                coordinate_paras.CoordMinP = Math.Floor(minP);
            }
        }
        /// <summary>