lixiaojun
2024-11-28 e39e22e12380551c79f99a9c96bb77d5dc3839b1
工况分析优化
已删除1个文件
已修改18个文件
已添加1个文件
1250 ■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/02-visual/02-list/SimulationVisualListHelper.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.Designer.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.resx 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.Designer.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.resx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/pump_run_32.png 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Core/01-tip/TipForm.Designer.cs 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Core/01-tip/TipForm.resx 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-extensions/HydroModelInfoExtensions.cs 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResult.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResultHelper.cs 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorValueExtensions.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.Designer.cs 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueViewModel.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveDlg.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/03-statistics/HydroSingleWorkingLossStatisticsDlg.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/02-visual/02-list/SimulationVisualListHelper.cs
@@ -33,22 +33,14 @@
            {
                return;
            }
            _dict = new Dictionary<string, HydroVisualInfo>();
            var allVisualList = this.HydroInfo.GetAllVisuals();
            allVisualList?.ForEach(x => _dict.Add(x.Code, x));
            _dict = hydroInfo?.GetVisualDict();
        }
        /// <summary>
        /// èŽ·å–å¯è§å­—å…¸
        /// </summary>
        public Dictionary<string, HydroVisualInfo> GetVisualDict()
        {
            if (_hydroInfo == null)
            {
                return default;
            }
            return _dict;
        }
@@ -57,10 +49,6 @@
        /// </summary>
        public List<HydroVisualInfo> GetVisualList()
        {
            if (_hydroInfo == null)
            {
                return default;
            }
            return _dict?.Values.ToList();
        }
@@ -69,11 +57,7 @@
        /// </summary>
        public List<HydroNodeInfo> GetNodeList()
        {
            if (_hydroInfo == null)
            {
                return default;
            }
            var nodes = _hydroInfo.GetAllNodes();
            var nodes = _hydroInfo?.GetAllNodes();
            return nodes;
        }
@@ -82,11 +66,7 @@
        /// </summary>
        public List<HydroLinkInfo> GetLinkList()
        {
            if (_hydroInfo == null)
            {
                return default;
            }
            var links = _hydroInfo.GetAllLinks();
            var links = _hydroInfo?.GetAllLinks();
            return links;
        }
@@ -95,10 +75,6 @@
        /// </summary>
        public HydroVisualInfo GetVisual(string code)
        {
            if (_hydroInfo == null)
            {
                return default;
            }
            if (_dict == null || _dict.Count < 1)
            {
                return default;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.Designer.cs
@@ -37,20 +37,18 @@
            barBtnVisualList = new DevExpress.XtraBars.BarButtonItem();
            barBtnWorkingParallel = new DevExpress.XtraBars.BarButtonItem();
            barBtnSearch = new DevExpress.XtraBars.BarButtonItem();
            barBtnSetGradingList = new DevExpress.XtraBars.BarButtonItem();
            barBtnApplyGradingList = new DevExpress.XtraBars.BarButtonItem();
            barBtnSetMark = new DevExpress.XtraBars.BarButtonItem();
            barBtnSetMonitorValue = new DevExpress.XtraBars.BarButtonItem();
            barBtnShowMonitorValue = new DevExpress.XtraBars.BarButtonItem();
            barCkMonitor = new DevExpress.XtraBars.BarCheckItem();
            barCkMark = new DevExpress.XtraBars.BarCheckItem();
            barCkFlowEffect = new DevExpress.XtraBars.BarCheckItem();
            barCkGrading = new DevExpress.XtraBars.BarCheckItem();
            barCkCalcu = new DevExpress.XtraBars.BarCheckItem();
            barBtnWorkingLossCurve = new DevExpress.XtraBars.BarButtonItem();
            barBtnWorkingLossScale = new DevExpress.XtraBars.BarButtonItem();
            barBtnWorkingLossStatistics = new DevExpress.XtraBars.BarButtonItem();
            barBtnWorkingPower = new DevExpress.XtraBars.BarButtonItem();
            barBtnWorkingAnaly = new DevExpress.XtraBars.BarButtonItem();
            barBtnPumpParallel = new DevExpress.XtraBars.BarButtonItem();
            barBtnWorkingEvaluation = new DevExpress.XtraBars.BarButtonItem();
            barBtnSetVisualVisible = new DevExpress.XtraBars.BarButtonItem();
            barCkDecorator = new DevExpress.XtraBars.BarCheckItem();
@@ -59,8 +57,8 @@
            ribbonPageGroup6 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            ribbonPageGroup7 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            ribbonPageGroup5 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            ribbonPageGroup9 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            ribbonPageGroup2 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            ribbonPageGroup4 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            tabPane1 = new DevExpress.XtraBars.Navigation.TabPane();
            tabPageBimface = new DevExpress.XtraBars.Navigation.TabNavigationPage();
@@ -82,7 +80,7 @@
            // 
            ribbonControl1.ExpandCollapseItem.Id = 0;
            ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnExportInp, barBtnVisualList, barBtnWorkingParallel, barBtnSearch, barBtnSetGradingList, barBtnApplyGradingList, barBtnSetMark, barBtnSetMonitorValue, barCkMonitor, barCkMark, barCkFlowEffect, barCkGrading, barCkCalcu, barBtnWorkingLossCurve, barBtnWorkingLossScale, barBtnWorkingPower, barBtnWorkingAnaly, barBtnPumpParallel, barBtnWorkingEvaluation, barBtnSetVisualVisible, barCkDecorator });
            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnExportInp, barBtnVisualList, barBtnWorkingParallel, barBtnSearch, barBtnApplyGradingList, barBtnSetMark, barBtnShowMonitorValue, barCkMonitor, barCkMark, barCkFlowEffect, barCkGrading, barCkCalcu, barBtnWorkingLossCurve, barBtnWorkingLossStatistics, barBtnWorkingPower, barBtnWorkingAnaly, barBtnWorkingEvaluation, barBtnSetVisualVisible, barCkDecorator });
            ribbonControl1.Location = new Point(0, 0);
            ribbonControl1.MaxItemId = 80;
            ribbonControl1.Name = "ribbonControl1";
@@ -101,7 +99,6 @@
            barBtnExportInp.Id = 4;
            barBtnExportInp.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnExportInp.ImageOptions.SvgImage");
            barBtnExportInp.Name = "barBtnExportInp";
            barBtnExportInp.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnExportInp.ItemClick += barBtnExportInp_ItemClick;
            // 
            // barBtnVisualList
@@ -116,7 +113,8 @@
            // 
            barBtnWorkingParallel.Caption = "水泵分析";
            barBtnWorkingParallel.Id = 31;
            barBtnWorkingParallel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingParallel.ImageOptions.SvgImage");
            barBtnWorkingParallel.ImageOptions.Image = Xhs.Core.Properties.Resources.pump_run_32;
            barBtnWorkingParallel.ImageOptions.LargeImage = Xhs.Core.Properties.Resources.pump_run_32;
            barBtnWorkingParallel.Name = "barBtnWorkingParallel";
            barBtnWorkingParallel.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnWorkingParallel.ItemClick += barBtnAnaly_ItemClick;
@@ -129,14 +127,6 @@
            barBtnSearch.Name = "barBtnSearch";
            barBtnSearch.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnSearch.ItemClick += barBtnSearch_ItemClick;
            //
            // barBtnSetGradingList
            //
            barBtnSetGradingList.Caption = "配置";
            barBtnSetGradingList.Id = 34;
            barBtnSetGradingList.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSetGradingList.ImageOptions.SvgImage");
            barBtnSetGradingList.Name = "barBtnSetGradingList";
            barBtnSetGradingList.ItemClick += barBtnSetGradingList_ItemClick;
            // 
            // barBtnApplyGradingList
            // 
@@ -153,17 +143,16 @@
            barBtnSetMark.Id = 40;
            barBtnSetMark.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSetMark.ImageOptions.SvgImage");
            barBtnSetMark.Name = "barBtnSetMark";
            barBtnSetMark.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnSetMark.ItemClick += barBtnSetMark_ItemClick;
            // 
            // barBtnSetMonitorValue
            // barBtnShowMonitorValue
            // 
            barBtnSetMonitorValue.Caption = "监测值";
            barBtnSetMonitorValue.Id = 57;
            barBtnSetMonitorValue.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSetMonitorValue.ImageOptions.SvgImage");
            barBtnSetMonitorValue.Name = "barBtnSetMonitorValue";
            barBtnSetMonitorValue.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnSetMonitorValue.ItemClick += barBtnSetMonitorValue_ItemClick;
            barBtnShowMonitorValue.Caption = "监测值";
            barBtnShowMonitorValue.Id = 57;
            barBtnShowMonitorValue.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnShowMonitorValue.ImageOptions.SvgImage");
            barBtnShowMonitorValue.Name = "barBtnShowMonitorValue";
            barBtnShowMonitorValue.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnShowMonitorValue.ItemClick += barBtnShowMonitorValue_ItemClick;
            // 
            // barCkMonitor
            // 
@@ -214,14 +203,14 @@
            barBtnWorkingLossCurve.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnWorkingLossCurve.ItemClick += barBtnWorkingLossCurve_ItemClick;
            // 
            // barBtnWorkingLossScale
            // barBtnWorkingLossStatistics
            // 
            barBtnWorkingLossScale.Caption = "损失比例";
            barBtnWorkingLossScale.Id = 70;
            barBtnWorkingLossScale.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingLossScale.ImageOptions.SvgImage");
            barBtnWorkingLossScale.Name = "barBtnWorkingLossScale";
            barBtnWorkingLossScale.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnWorkingLossScale.ItemClick += barBtnWorkingLossScale_ItemClick;
            barBtnWorkingLossStatistics.Caption = "损失比例";
            barBtnWorkingLossStatistics.Id = 70;
            barBtnWorkingLossStatistics.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnWorkingLossScale.ImageOptions.SvgImage");
            barBtnWorkingLossStatistics.Name = "barBtnWorkingLossStatistics";
            barBtnWorkingLossStatistics.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnWorkingLossStatistics.ItemClick += barBtnWorkingLossStatistics_ItemClick;
            // 
            // barBtnWorkingPower
            // 
@@ -241,14 +230,6 @@
            barBtnWorkingAnaly.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.Large;
            barBtnWorkingAnaly.ItemClick += barBtnWorkingAnaly_ItemClick;
            // 
            // barBtnPumpParallel
            //
            barBtnPumpParallel.Caption = "并联模拟";
            barBtnPumpParallel.Id = 73;
            barBtnPumpParallel.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnParallel.ImageOptions.SvgImage");
            barBtnPumpParallel.Name = "barBtnPumpParallel";
            barBtnPumpParallel.ItemClick += barBtnParallel_ItemClick;
            //
            // barBtnWorkingEvaluation
            // 
            barBtnWorkingEvaluation.Caption = "精度评估";
@@ -264,7 +245,6 @@
            barBtnSetVisualVisible.Id = 77;
            barBtnSetVisualVisible.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnSetVisualVisible.ImageOptions.SvgImage");
            barBtnSetVisualVisible.Name = "barBtnSetVisualVisible";
            barBtnSetVisualVisible.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barBtnSetVisualVisible.ItemClick += barBtnSetVisualVisible_ItemClick;
            // 
            // barCkDecorator
@@ -275,12 +255,11 @@
            barCkDecorator.Id = 78;
            barCkDecorator.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barCkDecorator.ImageOptions.SvgImage");
            barCkDecorator.Name = "barCkDecorator";
            barCkDecorator.RibbonStyle = DevExpress.XtraBars.Ribbon.RibbonItemStyles.SmallWithText;
            barCkDecorator.CheckedChanged += barCkDecorator_CheckedChanged;
            // 
            // ribbonPage1
            // 
            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { pageGroupModel, ribbonPageGroup6, ribbonPageGroup1, ribbonPageGroup7, ribbonPageGroup5, ribbonPageGroup9 });
            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { pageGroupModel, ribbonPageGroup6, ribbonPageGroup1, ribbonPageGroup7, ribbonPageGroup9, ribbonPageGroup2 });
            ribbonPage1.Name = "ribbonPage1";
            ribbonPage1.Text = "ribbonPage1";
            // 
@@ -304,7 +283,6 @@
            // 
            // ribbonPageGroup1
            // 
            ribbonPageGroup1.ItemLinks.Add(barBtnSetGradingList);
            ribbonPageGroup1.ItemLinks.Add(barBtnApplyGradingList);
            ribbonPageGroup1.ItemLinks.Add(barCkGrading);
            ribbonPageGroup1.Name = "ribbonPageGroup1";
@@ -312,28 +290,27 @@
            // 
            // ribbonPageGroup7
            // 
            ribbonPageGroup7.ItemLinks.Add(barBtnSetMonitorValue);
            ribbonPageGroup7.ItemLinks.Add(barBtnShowMonitorValue);
            ribbonPageGroup7.ItemLinks.Add(barCkMonitor);
            ribbonPageGroup7.Name = "ribbonPageGroup7";
            ribbonPageGroup7.Text = "监测";
            // 
            // ribbonPageGroup5
            //
            ribbonPageGroup5.ItemLinks.Add(barBtnPumpParallel);
            ribbonPageGroup5.Name = "ribbonPageGroup5";
            ribbonPageGroup5.Text = "æ°´æ³µ";
            //
            // ribbonPageGroup9
            // 
            ribbonPageGroup9.ItemLinks.Add(barBtnExportInp);
            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingParallel);
            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingEvaluation);
            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingPower);
            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingLossCurve);
            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingLossScale);
            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingLossStatistics);
            ribbonPageGroup9.ItemLinks.Add(barBtnWorkingAnaly);
            ribbonPageGroup9.Name = "ribbonPageGroup9";
            ribbonPageGroup9.Text = "分析";
            //
            // ribbonPageGroup2
            //
            ribbonPageGroup2.ItemLinks.Add(barBtnExportInp);
            ribbonPageGroup2.Name = "ribbonPageGroup2";
            ribbonPageGroup2.Text = "更多";
            // 
            // ribbonPageGroup4
            // 
@@ -452,13 +429,12 @@
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup pageGroupModel;
        private DevExpress.XtraBars.Docking.DockPanel docPnlBottom;
        private DevExpress.XtraBars.Docking.ControlContainer controlContainerBottom;
        private DevExpress.XtraBars.BarButtonItem barBtnSetGradingList;
        private DevExpress.XtraBars.BarButtonItem barBtnApplyGradingList;
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup1;
        private DevExpress.XtraBars.BarButtonItem barBtnSetMark;
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup6;
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup7;
        private DevExpress.XtraBars.BarButtonItem barBtnSetMonitorValue;
        private DevExpress.XtraBars.BarButtonItem barBtnShowMonitorValue;
        private DevExpress.XtraBars.BarCheckItem barCkMonitor;
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup9;
        private DevExpress.XtraBars.BarCheckItem barCkMark;
@@ -466,13 +442,12 @@
        private DevExpress.XtraBars.BarCheckItem barCkGrading;
        private DevExpress.XtraBars.BarCheckItem barCkCalcu;
        private DevExpress.XtraBars.BarButtonItem barBtnWorkingLossCurve;
        private DevExpress.XtraBars.BarButtonItem barBtnWorkingLossScale;
        private DevExpress.XtraBars.BarButtonItem barBtnWorkingLossStatistics;
        private DevExpress.XtraBars.BarButtonItem barBtnWorkingPower;
        private DevExpress.XtraBars.BarButtonItem barBtnWorkingAnaly;
        private DevExpress.XtraBars.BarButtonItem barBtnPumpParallel;
        private DevExpress.XtraBars.BarButtonItem barBtnWorkingEvaluation;
        private DevExpress.XtraBars.BarButtonItem barBtnSetVisualVisible;
        private DevExpress.XtraBars.BarCheckItem barCkDecorator;
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup5;
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup2;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
@@ -94,17 +94,18 @@
                _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
                _bimfaceCtrl.Dock = DockStyle.Fill;
                await _bimfaceCtrl.InitialData(_project, _projectSite);
                _bimfaceCtrl.LoadCompletedEvent += () =>
                _bimfaceCtrl.LoadCompletedEvent += async () =>
                {//view加载完成事件
                    if (_hydroInfo == null)
                    {
                        return;
                    }
                    await InitialWorking();
                    this.barCkDecorator.Checked = false;
                    this.barCkMonitor.Checked = true;
                    this.barCkGrading.Checked = true;
                    this.barCkCalcu.Checked = true;
                    CalcuWorking();
                };
                _bimfaceCtrl.HydroMouseLeftClickEvent += (code) =>
                {//鼠标左键点击事件
@@ -776,36 +777,6 @@
            return _gradingHelper;
        }
        //设置颜色分级列表
        private async void SetGradingList()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            var gradingHelper = await GetGradingHelper();
            var allGradingList = await gradingHelper.GetGradingList();
            var dlg = new SetHydroGradingTreeDlg();
            dlg.SetBindingData(_hydroInfo, allGradingList);
            dlg.ReloadDataEvent += (list) =>
            {
                gradingHelper.SetGradingList(list);
                gradingHelper.Set();
            };
            dlg.ApplyDataEvent += (catalog, propName) =>
            {
                gradingHelper.UpdateApply(catalog, propName);
                gradingHelper.Set();
            };
            dlg.ShowDialog();
        }
        //配置颜色分级
        private void barBtnSetGradingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            SetGradingList();
        }
        //应用颜色分级列表
        private async void ApplyGradingList()
        {
@@ -930,42 +901,6 @@
            return _monitorHelper;
        }
        //设置监测点列表
        private async void SetMonitorList(HydroVisualInfo visual)
        {
            if (_hydroInfo == null)
            {
                return;
            }
            var monitorHelper = GetMonitorHelper();
            var allMonitorList = await monitorHelper.Get();
            var dlg = new SetHydroMonitorListDlg();
            dlg.SetBindingData(_hydroInfo, visual, allMonitorList);
            dlg.ReloadDataEvent += async (list) =>
            {
                var bol = await BLLFactory<Yw.BLL.HydroMonitor>.Instance.Save(_hydroInfo.ID, visual.Code, list);
                if (!bol)
                {
                    TipFormHelper.ShowError("设置失败!");
                    return;
                }
                TipFormHelper.ShowSucceed("设置成功!");
                var monitorList = await monitorHelper.Update(visual.Code);
                var monitorValueHelper = GetMonitorValueHelper();
                monitorValueHelper.Update(visual.Code, monitorList);
                var monitorMarkerHelper = await GetMonitorMarkerHelper();
                monitorMarkerHelper.Update(visual.Code, monitorList);
                monitorMarkerHelper.Set();
            };
            dlg.ShowDialog();
        }
        //设置监测点
        private void barBtnSetMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            SetMonitorList(_visual);
        }
        #endregion
        #region ç›‘测值
@@ -999,6 +934,7 @@
            {
                _monitorValueListCtrl = new HydroMonitorValueListCtrl();
                _monitorValueListCtrl.Dock = DockStyle.Fill;
                _monitorValueListCtrl.SetViewBoard();
                _monitorValueListCtrl.HydroViewEvent += (code) =>
                {
                    var visualListHelper = GetVisualListHelper();
@@ -1045,8 +981,8 @@
            monitorValueListCtrl.SetBindingData(allMonitorValueList);
        }
        //设置监测值
        private void barBtnSetMonitorValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //显示监测值
        private void barBtnShowMonitorValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ShowMonitorValueListCtrl();
        }
@@ -1340,59 +1276,6 @@
        #endregion
        #region å·¥å†µè®¡ç®—
        //计算工况
        private async void CalcuWorking()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            if (_working == null)
            {
                return;
            }
            _hydroInfo.UpdateWorkingInfo(_working.WorkingInfo);
            var workingHelper = GetWorkingHelper();
            //校验
            var checkResult = _hydroInfo.Check();
            if (!checkResult.Succeed)
            {
                workingHelper.InitialData(_hydroInfo, _working, checkResult, null);
                ShowCheckCtrl(checkResult);
                TipFormHelper.ShowError("校验失败,请检查后重试");
                return;
            }
            //计算
            var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            workingHelper.InitialData(_hydroInfo, _working, checkResult, calcuResult);
            if (calcuResult.Succeed)
            {
                if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0)
                {
                    ShowCalcuWarningCtrl(calcuResult);
                }
                TipFormHelper.ShowSucceed("计算成功!");
            }
            else
            {
                ShowCalcuFailedCtrl(calcuResult);
                TipFormHelper.ShowError("计算失败!");
            }
            #region è®¡ç®—标签
            var calcuResultLabelHelper = await GetCalcuResultLabelHelper();
            calcuResultLabelHelper.Set();
            #endregion
        }
        #endregion
        #region ç®¡ç½‘修复
        //修复管网
@@ -1598,6 +1481,50 @@
            return workingHelper.CalcuResult;
        }
        //初始化工况
        private async Task InitialWorking()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            if (_working == null)
            {
                return;
            }
            _hydroInfo.UpdateWorkingInfo(_working.WorkingInfo);
            var monitorValueHelper = GetMonitorValueHelper();
            var allMonitorValueList = await monitorValueHelper.Get();
            allMonitorValueList.UpdateMonitorValue(_working.MonitorInfo);
            var workingHelper = GetWorkingHelper();
            //校验
            var checkResult = _hydroInfo.Check();
            if (!checkResult.Succeed)
            {
                workingHelper.InitialData(_hydroInfo, _working, checkResult, null);
                ShowCheckCtrl(checkResult);
                TipFormHelper.ShowError("校验失败!");
                return;
            }
            //计算
            var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            workingHelper.InitialData(_hydroInfo, _working, checkResult, calcuResult);
            if (calcuResult.Succeed)
            {
                if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0)
                {
                    ShowCalcuWarningCtrl(calcuResult);
                }
            }
            else
            {
                ShowCalcuFailedCtrl(calcuResult);
                TipFormHelper.ShowError("计算失败!");
            }
        }
        #endregion
        #region å·¥å†µåˆ†æž
@@ -1709,59 +1636,60 @@
        #endregion
        #region å·¥å†µèƒ½æ•ˆ
        //能效分析
        private void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraMessageBox.Show("正在开发中,敬请期待!");
        }
        #endregion
        #region æŸå¤±æ›²çº¿
        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (_visual == null)
            {
                XtraMessageBox.Show("请选择节点后重试!");
                return;
            }
            if (!(_visual is Yw.Model.HydroNodeInfo))
            {
                XtraMessageBox.Show("请选择节点后重试!");
                return;
            }
            var network = _hydroInfo.ToNetwork();
            var calcuResult = network.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            var allNodeList = network.GetAllNodes();
            var node = allNodeList.Find(x => x.Id == _visual.Code);
            var allPathList = network.AnalyzeDownstreamPath(node, calcuResult);
            var allEpaLossList = network.GetChartNodeByPathLinks(allPathList, calcuResult);
            var allLossList = allEpaLossList?.Select(x => new HydroNodeLossViewModel(x)).ToList();
            var dlg = new HydroSingleLossCurveDlg();
            dlg.SetBindingData(allLossList);
            var workingHelper = GetWorkingHelper();
            var dlg = new SimulationSingleWorkingEnergyDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult);
            dlg.ShowDialog();
        }
        #endregion
        #region æŸå¤±æ¯”例
        private void barBtnWorkingLossScale_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //损失曲线
        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraMessageBox.Show("正在开发中,敬请期待!");
            var workingHelper = GetWorkingHelper();
            if (!workingHelper.Initialized)
            {
                TipFormHelper.ShowError("工况计算失败!");
                return;
            }
            if (_visual == null)
            {
                TipFormHelper.ShowWarn("请选择构件!");
                return;
            }
            HydroVisualInfo visual = _visual;
            if (_visual is HydroLinkInfo linkInfo)
            {
                var visualListHelper = GetVisualListHelper();
                visual = visualListHelper.GetVisual(linkInfo.StartCode);
            }
            var dlg = new HydroSingleLossCurveDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult, visual);
            dlg.ShowDialog();
        }
        #endregion
        //损失统计
        private void barBtnWorkingLossStatistics_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var workingHelper = GetWorkingHelper();
            if (!workingHelper.Initialized)
            {
                TipFormHelper.ShowError("工况计算失败!");
                return;
            }
            var dlg = new HydroSingleWorkingLossStatisticsDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult);
            dlg.ShowDialog();
        }
        #region ç»¼åˆåˆ†æž
        //综合分析
        private void barBtnWorkingAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraMessageBox.Show("正在开发中,敬请期待!");
        }
        #endregion
        #endregion
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.resx
@@ -168,25 +168,6 @@
        MjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="barBtnWorkingParallel.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMYCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iQ3JlYXRlX0Z1bGxfU3RhY2tlZF9MaW5lX0NoYXJ0X05vX01hcmtlcnMi
        IHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRl
        eHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuUmVk
        e2ZpbGw6I0QxMUMxQzt9Cjwvc3R5bGU+DQogIDxyZWN0IHg9IjIiIHk9IjQiIHdpZHRoPSIyNiIgaGVp
        Z2h0PSIyIiBjbGFzcz0iUmVkIiAvPg0KICA8cG9seWdvbiBwb2ludHM9IjEuNywxMy45IDEuNywxMy45
        IDIuMywxMiAxNCwxNS45IDI3LjcsMTIgMjguMywxMy45IDE0LDE4IDEuNywxMy45ICIgY2xhc3M9Illl
        bGxvdyIgLz4NCiAgPHBhdGggZD0iTTIuNCwyOS45TDIuNCwyOS45TDIuNCwyOS45TDIuNCwyOS45TDIu
        NCwyOS45eiBNMS42LDI4LjFMMTMuOSwyMmwxNC40LDQuMUwyNy43LDI4bC0xMy42LTMuOUwyLjQsMjku
        OSAgTDEuNiwyOC4xTDEuNiwyOC4xeiIgY2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L
</value>
  </data>
  <data name="barBtnSearch.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
@@ -211,35 +192,6 @@
        ICAgYzAuOS0zLDMuNy01LDctNXM2LjEsMiw3LDVDMjkuMSwyNiwyNi4zLDI4LDIzLDI4eiBNMjMsMjZj
        LTEuNywwLTMtMS4zLTMtM3MxLjMtMywzLTNzMywxLjMsMywzUzI0LjcsMjYsMjMsMjZ6IiBjbGFzcz0i
        QmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnSetGradingList.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAAsFAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRWRpdENvbG9ycyI+DQogICAgPHBhdGggZD0i
        TTI5LDBIMUMwLjUsMCwwLDAuNSwwLDF2MjhjMCwwLjUsMC41LDEsMSwxaDI4YzAuNSwwLDEtMC41LDEt
        MVYxQzMwLDAuNSwyOS41LDAsMjksMHogTTI4LDI4SDJWMmgyNlYyOHoiIGNsYXNzPSJCbGFjayIgLz4N
        CiAgICA8cGF0aCBkPSJNMTAsMTBINFY0aDZWMTB6IE0xOCw0aC02djZoNlY0eiBNMTAsMTJINHY2aDZW
        MTJ6IiBjbGFzcz0iWWVsbG93IiAvPg0KICAgIDxwYXRoIGQ9Ik0xMCwyNkg0di02aDZWMjZ6IE0xOCwx
        MmgtNnY2aDZWMTJ6IiBjbGFzcz0iR3JlZW4iIC8+DQogICAgPHBhdGggZD0iTTI2LDEwaC02VjRoNlYx
        MHogTTI2LDEyaC02djZoNlYxMnoiIGNsYXNzPSJSZWQiIC8+DQogICAgPHBhdGggZD0iTTI2LDI2aC02
        di02aDZWMjZ6IE0xOCwyMGgtNnY2aDZWMjB6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgICA8ZyBjbGFzcz0i
        c3QxIj4NCiAgICAgIDxyZWN0IHg9IjQiIHk9IjEyIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0i
        R3JlZW4iIC8+DQogICAgICA8cGF0aCBkPSJNMTgsMTBoLTZWNGg2VjEweiBNMjYsMjBoLTZ2Nmg2VjIw
        eiIgY2xhc3M9IlJlZCIgLz4NCiAgICAgIDxwYXRoIGQ9Ik0yNiwxOGgtNnYtNmg2VjE4eiBNMTgsMTJo
        LTZ2Nmg2VjEyeiIgY2xhc3M9IkJsdWUiIC8+DQogICAgPC9nPg0KICAgIDxnIGNsYXNzPSJzdDEiPg0K
        ICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiBjbGFzcz0iQmx1ZSIg
        Lz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnApplyGradingList.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -283,7 +235,7 @@
        LDE4eiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="barBtnSetMonitorValue.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
  <data name="barBtnShowMonitorValue.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -407,25 +359,6 @@
        eiBNMzAsMjZIMlY2aDI4VjI2eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwb2x5bGluZSBwb2ludHM9
        IjQsMjAgOCwxNiAxMCwxOCAxNiwxMiAxOCwxNCAyNCw4IDI4LDEyIDI4LDE1IDI0LDExIDE4LDE3IDE2
        LDE1IDEwLDIxIDgsMTkgNCwyMyA0LDIwICAiIGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="barBtnParallel.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMYCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iQ3JlYXRlX0Z1bGxfU3RhY2tlZF9MaW5lX0NoYXJ0X05vX01hcmtlcnMi
        IHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRl
        eHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuUmVk
        e2ZpbGw6I0QxMUMxQzt9Cjwvc3R5bGU+DQogIDxyZWN0IHg9IjIiIHk9IjQiIHdpZHRoPSIyNiIgaGVp
        Z2h0PSIyIiBjbGFzcz0iUmVkIiAvPg0KICA8cG9seWdvbiBwb2ludHM9IjEuNywxMy45IDEuNywxMy45
        IDIuMywxMiAxNCwxNS45IDI3LjcsMTIgMjguMywxMy45IDE0LDE4IDEuNywxMy45ICIgY2xhc3M9Illl
        bGxvdyIgLz4NCiAgPHBhdGggZD0iTTIuNCwyOS45TDIuNCwyOS45TDIuNCwyOS45TDIuNCwyOS45TDIu
        NCwyOS45eiBNMS42LDI4LjFMMTMuOSwyMmwxNC40LDQuMUwyNy43LDI4bC0xMy42LTMuOUwyLjQsMjku
        OSAgTDEuNiwyOC4xTDEuNiwyOC4xeiIgY2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L
</value>
  </data>
  <data name="barBtnWorkingEvaluation.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
@@ -102,6 +102,7 @@
    <Content Include="map\gaode\js\xhs_base64.js">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <None Include="Resources\pump_run_32.png" />
    <None Include="Resources\Cancel.svg" />
    <None Include="Resources\Close32.png" />
    <None Include="Resources\Folder.svg" />
WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.Designer.cs
@@ -111,6 +111,16 @@
        }
        
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap pump_run_32 {
            get {
                object obj = ResourceManager.GetObject("pump_run_32", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ DevExpress.Utils.Svg.SvgImage ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static DevExpress.Utils.Svg.SvgImage Remove {
WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.resx
@@ -145,4 +145,7 @@
  <data name="IncomingCall" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\IncomingCall.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
  </data>
  <data name="pump_run_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\pump_run_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
</root>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/pump_run_32.png
WinFrmUI/Yw.WinFrmUI.Core/01-tip/TipForm.Designer.cs
@@ -28,63 +28,62 @@
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TipForm));
            this.labText = new DevExpress.XtraEditors.LabelControl();
            this.img32 = new DevExpress.Utils.ImageCollection(this.components);
            this.timer1 = new System.Windows.Forms.Timer(this.components);
            ((System.ComponentModel.ISupportInitialize)(this.img32)).BeginInit();
            this.SuspendLayout();
            components = new Container();
            ComponentResourceManager resources = new ComponentResourceManager(typeof(TipForm));
            labText = new LabelControl();
            img32 = new ImageCollection(components);
            timer1 = new System.Windows.Forms.Timer(components);
            ((ISupportInitialize)img32).BeginInit();
            SuspendLayout();
            // 
            // labText
            // 
            this.labText.AllowHtmlString = true;
            this.labText.Appearance.BackColor = System.Drawing.Color.White;
            this.labText.Appearance.FontSizeDelta = 1;
            this.labText.Appearance.Options.UseBackColor = true;
            this.labText.Appearance.Options.UseFont = true;
            this.labText.Appearance.Options.UseTextOptions = true;
            this.labText.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            this.labText.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
            this.labText.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
            this.labText.Dock = System.Windows.Forms.DockStyle.Fill;
            this.labText.ImageAlignToText = DevExpress.XtraEditors.ImageAlignToText.LeftCenter;
            this.labText.ImageOptions.ImageIndex = 0;
            this.labText.ImageOptions.Images = this.img32;
            this.labText.ImageOptions.SvgImageSize = new System.Drawing.Size(24, 24);
            this.labText.Location = new System.Drawing.Point(1, 1);
            this.labText.Name = "labText";
            this.labText.Size = new System.Drawing.Size(298, 78);
            this.labText.TabIndex = 0;
            labText.AllowHtmlString = true;
            labText.Appearance.BackColor = Color.White;
            labText.Appearance.FontSizeDelta = 1;
            labText.Appearance.Options.UseBackColor = true;
            labText.Appearance.Options.UseFont = true;
            labText.Appearance.Options.UseTextOptions = true;
            labText.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
            labText.Appearance.TextOptions.VAlignment = VertAlignment.Center;
            labText.AutoSizeMode = LabelAutoSizeMode.None;
            labText.Dock = DockStyle.Fill;
            labText.ImageAlignToText = ImageAlignToText.LeftCenter;
            labText.ImageOptions.ImageIndex = 0;
            labText.ImageOptions.Images = img32;
            labText.ImageOptions.SvgImageSize = new Size(24, 24);
            labText.Location = new Point(1, 1);
            labText.Name = "labText";
            labText.Size = new Size(298, 78);
            labText.TabIndex = 0;
            // 
            // img32
            // 
            this.img32.ImageSize = new System.Drawing.Size(32, 32);
            this.img32.ImageStream = ((DevExpress.Utils.ImageCollectionStreamer)(resources.GetObject("img32.ImageStream")));
            this.img32.Images.SetKeyName(0, "info32.png");
            this.img32.Images.SetKeyName(1, "success32.png");
            this.img32.Images.SetKeyName(2, "error32.png");
            this.img32.Images.SetKeyName(3, "warning32.png");
            img32.ImageSize = new Size(32, 32);
            img32.ImageStream = (ImageCollectionStreamer)resources.GetObject("img32.ImageStream");
            img32.Images.SetKeyName(0, "info32.png");
            img32.Images.SetKeyName(1, "success32.png");
            img32.Images.SetKeyName(2, "warning32.png");
            img32.Images.SetKeyName(3, "error32.png");
            // 
            // timer1
            // 
            this.timer1.Interval = 2000;
            this.timer1.Tick += new System.EventHandler(this.timer_Tick);
            timer1.Interval = 2000;
            timer1.Tick += timer_Tick;
            // 
            // NormalTipFrm
            // TipForm
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(300, 80);
            this.Controls.Add(this.labText);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "NormalTipFrm";
            this.Padding = new System.Windows.Forms.Padding(1);
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.TopMost = true;
            ((System.ComponentModel.ISupportInitialize)(this.img32)).EndInit();
            this.ResumeLayout(false);
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(300, 80);
            Controls.Add(labText);
            FormBorderStyle = FormBorderStyle.None;
            Name = "TipForm";
            Padding = new Padding(1);
            StartPosition = FormStartPosition.CenterScreen;
            TopMost = true;
            ((ISupportInitialize)img32).EndInit();
            ResumeLayout(false);
        }
        #endregion
WinFrmUI/Yw.WinFrmUI.Core/01-tip/TipForm.resx
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
  <!--
    Microsoft ResX Schema 
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
@@ -120,11 +120,11 @@
  <metadata name="img32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>107, 17</value>
  </metadata>
  <assembly alias="DevExpress.Utils.v23.2" name="DevExpress.Utils.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <assembly alias="DevExpress.Utils.v23.2" name="DevExpress.Utils.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="img32.ImageStream" type="DevExpress.Utils.ImageCollectionStreamer, DevExpress.Utils.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYyMS4yLCBWZXJzaW9uPTIxLjIu
        Ni4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT
        AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYyMy4yLCBWZXJzaW9uPTIzLjIu
        NC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT
        eXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRv
        a2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAChEZXZFeHByZXNzLlV0aWxzLkltYWdlQ29sbGVjdGlvblN0
        cmVhbWVyAgAAAAlJbWFnZVNpemUERGF0YQQHE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAAgIAAAAF/P//
@@ -148,27 +148,27 @@
        gpzyhT+/5DhqbekkW8sCXmTrSZ52uGRgz7srZMNrG9wUVxcFepGtXxC0gsl1cDFywpng8mNwyC4suLNd
        TIFkzdRRUVqYIdt/GoFHwuXGgcc7suOVtY0xrhDZMD0ozny8CwuvJA5Ux9icJkR/+0Yppl5hijsGj3lk
        0Vxcg05IZF4XFD4KNmoDB8+Y1DK54tZEc4xxPGNSq/ZFuyNyizLM4vGOytNTdtLoy1r6JXpth/6awWce
        TzvskWtJrDKZv4YZy2sqVCbdAAAAAElFTkSuQmCCkQEAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgG
        AAAAc3p69AAAAARnQU1BAACxjwv8YQUAAAFISURBVFhH7VdLDoIwEOVWHoPWjQs9Axu9ipfCW3TtARSM
        2NdMLU5GLFCtMb7kBWQ+b+xnCsUfY3DRurwotW+0rlutj/bagXRfwwYfck+Hk1JbK2C8YAQNYih8Opqy
        XDRKHQSBOCLW5qB043BeLldi0glELkobh5TintFFuGEXEiRhzHTMmvNXtLlJRgatdjk4EQd3h3UY3Grt
        btc167Voc9xsuraqZFugIblHoIEIznciMXA1RhTBM9gAVyiz9yk2K+pwYoCj/edegBfRF8cVI/EQywgt
        kg2whpo7cnIh/JaeSbGMNckG9Hv7ELngBHF3dpBsgOT4jP0igDHiniQbIDk941sK+IYpyLsIs2/D7I0I
        sMZ8rRjIfhgBWY9jIPsLCZD1lcwjZRGjxT3cdMxZE4iNHfYh0O74/IcJBxoIdczPfpr9MIriBm/Nw5da
        jGVUAAAAAElFTkSuQmCCGQMAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAARnQU1B
        AACxjwv8YQUAAALQSURBVFhH5VY9aFNRFD4JjdhiIaAd7GKVSIxDxFZJVQRBFzcHQRRcXQo6OIiDk4s4
        VBBt8l5SIwUFLUqHuhi1lNa2NtqmsT8o0iZtiqVVcdBJ7PHcm/Nu8/pe08b8gPjBN+Sec77vuy/v3ffg
        nwVq4MIQ9BAfYw9U8XLlQMY3ici8wcuVAbZDfY55lvegjsvlBxlGpanumCbOcAiNy+UFGe1jQ8SBhteS
        xu828HJb+UBG3dIsUjWOS0dQst05xSEecVt5gDqcYCPEd7uHVIC4J67W26CZ20sPDMKgNIm63ipzg1FX
        gkM85/bSgoTPsgFicu+IJcCYL6nqOpzksdKBDp5xKd6xacBibrBjs/FXxHmsNCDzi2p3H/yTtuaCU/6P
        qk+DczxePEhwVoo+qO41GYadadSdM6a1hzVDHOITjxcHErrOgoipppQySh/IrglONw6q9VTTnFrXoIVl
        /g54B7aS0Hcp1ln7UpnkCyDYWWscTl/wFrhZrnCQwG1lMh/4ajIxBdhvDjAf+KZqQbjGcoWBLt8eEliW
        Il3umMlAMF8Awafufq7/xjDsZNmNg5LfVwaLh39ZDNYLsEQzRj0IrSy7MdBxelQNP9tm3b3gwiFxk4kr
        tIyfm60Hk2B3XZ/S0aCR5dcHDTzhoR+2wgbnDs5K2tUMhuAnh4iyfH7Q7k/xAOKL+le2ooUwtt24FwSP
        s83aoF3HZLMGC7aCuYz4R1H3r7wV16LmWOQAXWxjD3qJnOdGxP4G86m3mhMBxDO7skwGMrY9Bvt2rHy0
        hOA021lBxTeySXxq2Qmt5mXvGF7yWl/NdtQdaQ7Qy3Zm0CVv4QbEYY/NY1Ukhz3ZzQlqcIFts8C7sIUW
        J2Ux4pywFSgFw+rT7T351bC9vPRXuYCY8Nk/06VgwjeqfEJwhe1lgExOoVLMsL0MYLzDK8kRtqcArVBN
        5/WxijL3HviPAfAHJhOOZcGmCrUAAAAASUVORK5CYIIL
        TzvskWtJrDKZv4YZy2sqVCbdAAAAAElFTkSuQmCCGQMAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgG
        AAAAc3p69AAAAARnQU1BAACxjwv8YQUAAALQSURBVFhH5VY9aFNRFD4JjdhiIaAd7GKVSIxDxFZJVQRB
        FzcHQRRcXQo6OIiDk4s4VBBt8l5SIwUFLUqHuhi1lNa2NtqmsT8o0iZtiqVVcdBJ7PHcm/Nu8/pe08b8
        gPjBN+Sec77vuy/v3ffgnwVq4MIQ9BAfYw9U8XLlQMY3ici8wcuVAbZDfY55lvegjsvlBxlGpanumCbO
        cAiNy+UFGe1jQ8SBhteSxu828HJb+UBG3dIsUjWOS0dQst05xSEecVt5gDqcYCPEd7uHVIC4J67W26CZ
        20sPDMKgNIm63ipzg1FXgkM85/bSgoTPsgFicu+IJcCYL6nqOpzksdKBDp5xKd6xacBibrBjs/FXxHms
        NCDzi2p3H/yTtuaCU/6Pqk+DczxePEhwVoo+qO41GYadadSdM6a1hzVDHOITjxcHErrOgoipppQySh/I
        rglONw6q9VTTnFrXoIVl/g54B7aS0Hcp1ln7UpnkCyDYWWscTl/wFrhZrnCQwG1lMh/4ajIxBdhvDjAf
        +KZqQbjGcoWBLt8eEliWIl3umMlAMF8Awafufq7/xjDsZNmNg5LfVwaLh39ZDNYLsEQzRj0IrSy7MdBx
        elQNP9tm3b3gwiFxk4krtIyfm60Hk2B3XZ/S0aCR5dcHDTzhoR+2wgbnDs5K2tUMhuAnh4iyfH7Q7k/x
        AOKL+le2ooUwtt24FwSPs83aoF3HZLMGC7aCuYz4R1H3r7wV16LmWOQAXWxjD3qJnOdGxP4G86m3mhMB
        xDO7skwGMrY9Bvt2rHy0hOA021lBxTeySXxq2Qmt5mXvGF7yWl/NdtQdaQ7Qy3Zm0CVv4QbEYY/NY1Uk
        hz3ZzQlqcIFts8C7sIUWJ2Ux4pywFSgFw+rT7T351bC9vPRXuYCY8Nk/06VgwjeqfEJwhe1lgExOoVLM
        sL0MYLzDK8kRtqcArVBN5/WxijL3HviPAfAHJhOOZcGmCrUAAAAASUVORK5CYIKRAQAAiVBORw0KGgoA
        AAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAUhJREFUWEftV0sOgjAQ5VYe
        g9aNCz0DG72Kl8JbdO0BFIzY10wtTkYsUK0xvuQFZD5v7GcKxR9jcNG6vCi1b7SuW62P9tqBdF/DBh9y
        T4eTUlsrYLxgBA1iKHw6mrJcNEodBIE4ItbmoHTjcF4uV2LSCUQuShuHlOKe0UW4YRcSJGHMdMya81e0
        uUlGBq12OTgRB3eHdRjcau1u1zXrtWhz3Gy6tqpkW6AhuUeggQjOdyIxcDVGFMEz2ABXKLP3KTYr6nBi
        gKP9516AF9EXxxUj8RDLCC2SDbCGmjtyciH8lp5JsYw1yQb0e/sQueAEcXd2kGyA5PiM/SKAMeKeJBsg
        OT3jWwr4hinIuwizb8PsjQiwxnytGMh+GAFZj2Mg+wsJkPWVzCNlEaPFPdx0zFkTiI0d9iHQ7vj8hwkH
        Ggh1zM9+mv0wiuIGb83Dl1qMZVQAAAAASUVORK5CYIIL
</value>
  </data>
  <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
WinFrmUI/Yw.WinFrmUI.Hydro.Core/00-core/05-extensions/HydroModelInfoExtensions.cs
@@ -1,8 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yw.EPAnet;
using Yw.Hydro;
using Yw.Model;
namespace Yw.WinFrmUI
@@ -25,6 +22,195 @@
            return allVisualList?.ToDictionary(x => x.Code);
        }
        /// <summary>
        /// è®¡ç®—
        /// </summary>
        public static HydroCalcuResult Calcu(this Yw.Model.HydroModelInfo hydroInfo, string calcuMode = Yw.EPAnet.CalcuMode.Simple)
        {
            var network = hydroInfo.ToNetwork();
            if (network == null)
            {
                return default;
            }
            var calcuResult = network.Calcu(calcuMode);
            if (calcuResult == null)
            {
                return default;
            }
            return hydroInfo.GetCalcuResult(calcuResult);
        }
        /// <summary>
        /// èŽ·å–è®¡ç®—ç»“æžœ
        /// </summary>
        public static HydroCalcuResult GetCalcuResult(this Yw.Model.HydroModelInfo hydroInfo, Yw.EPAnet.CalcuResult calcuResult)
        {
            if (hydroInfo == null)
            {
                return default;
            }
            if (calcuResult == null)
            {
                return default;
            }
            var hydroCalcuResult = new HydroCalcuResult(calcuResult);
            //流量计
            var allFlowmeterList = hydroInfo.Flowmeters;
            if (allFlowmeterList != null && allFlowmeterList.Count > 0)
            {
                var allLinkList = hydroInfo.GetAllLinks();
                foreach (var flowmeter in allFlowmeterList)
                {
                    var calcuFlowmeterResult = hydroCalcuResult.NodeList?.Find(x => x.Code == flowmeter.Code);
                    if (calcuFlowmeterResult != null)
                    {
                        var calcuFlowmeterNewResult = new HydroCalcuFlowmeterResult(calcuFlowmeterResult);
                        var calcuFlowmeterLinkResultList = new List<HydroCalcuLinkResult>();
                        var flowmeterLinkList = allLinkList?.Where(x => x.StartCode == flowmeter.Code || x.EndCode == flowmeter.Code).ToList();
                        if (flowmeterLinkList != null && flowmeterLinkList.Count > 0)
                        {
                            foreach (var flowmeterLink in flowmeterLinkList)
                            {
                                var calcuFlowmeterLinkResult = hydroCalcuResult.LinkList?.Find(x => x.Code == flowmeterLink.Code);
                                if (calcuFlowmeterLinkResult != null)
                                {
                                    calcuFlowmeterLinkResultList.Add(calcuFlowmeterLinkResult);
                                }
                            }
                        }
                        if (calcuFlowmeterLinkResultList.Exists(x => x.CalcuFlow.HasValue))
                        {
                            calcuFlowmeterNewResult.CalcuQ = calcuFlowmeterLinkResultList.Where(x => x.CalcuFlow.HasValue).Average(x => x.CalcuFlow.Value);
                        }
                        hydroCalcuResult.NodeList.Remove(calcuFlowmeterResult);
                        hydroCalcuResult.NodeList.Add(calcuFlowmeterNewResult);
                    }
                }
            }
            //压力表
            var allPressmeterList = hydroInfo.Pressmeters;
            if (allPressmeterList != null && allPressmeterList.Count > 0)
            {
                foreach (var pressmeter in allPressmeterList)
                {
                    var calcuPressmeterResult = hydroCalcuResult.NodeList?.Find(x => x.Code == pressmeter.Code);
                    if (calcuPressmeterResult != null)
                    {
                        var calcuPressmeterNewResult = new HydroCalcuPressmeterResult(calcuPressmeterResult);
                        calcuPressmeterNewResult.CalcuPr = calcuPressmeterResult.CalcuPress;
                        hydroCalcuResult.NodeList.Remove(calcuPressmeterResult);
                        hydroCalcuResult.NodeList.Add(calcuPressmeterNewResult);
                    }
                }
            }
            //æ°´æ³µ
            var allPumpList = hydroInfo.Pumps;
            if (allPumpList != null && allPumpList.Count > 0)
            {
                foreach (var pump in allPumpList)
                {
                    var calcuPumpResult = hydroCalcuResult.LinkList.Find(x => x.Code == pump.Code);
                    if (calcuPumpResult != null)
                    {
                        var calcuPumpNewResult = new HydroCalcuPumpResult(calcuPumpResult);
                        calcuPumpNewResult.CalcuQ = calcuPumpResult.CalcuFlow;
                        if (calcuPumpNewResult.CalcuQ.HasValue)
                        {
                            var calcuNodeStartResult = hydroCalcuResult.NodeList?.Find(x => x.Code == pump.StartCode);
                            var calcuNodeEndResult = hydroCalcuResult.NodeList?.Find(x => x.Code == pump.EndCode);
                            if (calcuNodeStartResult != null && calcuNodeEndResult != null)
                            {
                                if (calcuNodeStartResult.CalcuPress.HasValue && calcuNodeEndResult.CalcuPress.HasValue)
                                {
                                    calcuPumpNewResult.CalcuH = Math.Abs(calcuNodeStartResult.CalcuPress.Value - calcuNodeEndResult.CalcuPress.Value);
                                }
                                if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open && pump.RatedN.HasValue)
                                {
                                    var curveqp = hydroInfo.Curves?.Find(x => x.Code == pump.CurveQP);
                                    if (curveqp != null)
                                    {
                                        if (curveqp.CurveData != null && curveqp.CurveData.Count > 3)
                                        {
                                            var point2dList = curveqp.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
                                            var point2dSimularList = point2dList.GetQPPointListByN(pump.RatedN.Value, pump.RatedN.Value * pump.SpeedRatio);
                                            var pumpCurveQp = new Yw.Pump.CurveQP(eFeatType.Cubic, point2dSimularList);
                                            calcuPumpNewResult.CalcuP = pumpCurveQp.FeatCurve.GetPointY(calcuPumpNewResult.CalcuQ.Value);
                                        }
                                    }
                                }
                                if (calcuPumpNewResult.CalcuH.HasValue && calcuPumpNewResult.CalcuP.HasValue)
                                {
                                    calcuPumpNewResult.CalcuE = Yw.Pump.CalculationHelper.CalcuE(calcuPumpNewResult.CalcuQ.Value, calcuPumpNewResult.CalcuH.Value, calcuPumpNewResult.CalcuP.Value);
                                }
                            }
                        }
                        hydroCalcuResult.LinkList.Remove(calcuPumpResult);
                        hydroCalcuResult.LinkList.Add(calcuPumpNewResult);
                        switch (pump.LinkStatus)
                        {
                            case Yw.Hydro.PumpStatus.Open:
                                {
                                    if (calcuPumpNewResult.CalcuFlow.HasValue)
                                    {
                                        if (calcuPumpNewResult.CalcuFlow.Value <= 0)
                                        {
                                            hydroCalcuResult.WainingList.Add(new HydroCalcuWarning()
                                            {
                                                Code = pump.Code,
                                                Message = $"[{pump.Name}]不满足当前工况 "
                                            });
                                        }
                                    }
                                    else
                                    {
                                        hydroCalcuResult.WainingList.Add(new HydroCalcuWarning()
                                        {
                                            Code = pump.Code,
                                            Message = $"[{pump.Name}]流量计算失败 "
                                        });
                                    }
                                }
                                break;
                            case Yw.Hydro.PumpStatus.Closed:
                                {
                                    if (calcuPumpNewResult.CalcuFlow.HasValue)
                                    {
                                        if (calcuPumpNewResult.CalcuFlow.Value > 0)
                                        {
                                            hydroCalcuResult.WainingList.Add(new HydroCalcuWarning()
                                            {
                                                Code = pump.Code,
                                                Message = $"[{pump.Name}]不满足当前工况 "
                                            });
                                        }
                                    }
                                    else
                                    {
                                        hydroCalcuResult.WainingList.Add(new HydroCalcuWarning()
                                        {
                                            Code = pump.Code,
                                            Message = $"[{pump.Name}]流量计算失败 "
                                        });
                                    }
                                }
                                break;
                            default: break;
                        }
                    }
                }
            }
            return hydroCalcuResult;
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResult.cs
@@ -18,6 +18,19 @@
        }
        /// <summary>
        ///
        /// </summary>
        public HydroCalcuResult(Yw.EPAnet.CalcuResult calcuResult)
        {
            this.Succeed = calcuResult.Succeed;
            this.FailedList = calcuResult.FailedList?.Select(x => new HydroCalcuFailed(x)).ToList();
            this.NodeList = calcuResult.NodeList?.Select(x => new HydroCalcuNodeResult(x)).ToList();
            this.LinkList = calcuResult.LinkList?.Select(x => new HydroCalcuLinkResult(x)).ToList();
            this.WainingList = new List<HydroCalcuWarning>();
            this.EPAnetCalcuResult = calcuResult;
        }
        /// <summary>
        /// æ˜¯å¦æˆåŠŸ
        /// </summary>
        public bool Succeed { get; set; }
@@ -43,6 +56,11 @@
        public List<HydroCalcuWarning> WainingList { get; set; }
        /// <summary>
        /// EPAnet è®¡ç®—结果
        /// </summary>
        public Yw.EPAnet.CalcuResult EPAnetCalcuResult { get; set; }
        /// <summary>
        /// èŽ·å–å¯è§åˆ—è¡¨
        /// </summary>
        public List<HydroCalcuVisualResult> GetVisualList()
WinFrmUI/Yw.WinFrmUI.Hydro.Core/03-calcu/01-result/HydroCalcuResultHelper.cs
ÎļþÒÑɾ³ý
WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/00-core/HydroMonitorValueExtensions.cs
@@ -1,12 +1,32 @@
using DevExpress.CodeParser;
namespace Yw.WinFrmUI
namespace Yw.WinFrmUI
{
    /// <summary>
    /// ç›‘测值拓展
    /// </summary>
    public static class HydroMonitorValueExtensions
    {
        /// <summary>
        /// æ›´æ–°ç›‘测值列表
        /// </summary>
        public static void UpdateMonitorValue(this List<HydroMonitorValueViewModel> allMonitorValueList, string monitorInfo)
        {
            if (allMonitorValueList == null || allMonitorValueList.Count < 1)
            {
                return;
            }
            if (string.IsNullOrEmpty(monitorInfo))
            {
                return;
            }
            var allWorkingMonitorList = JsonHelper.Json2Object<List<HydroWorkingMonitorViewModel>>(monitorInfo);
            if (allWorkingMonitorList == null || allWorkingMonitorList.Count < 1)
            {
                return;
            }
            allMonitorValueList.UpdateMonitorValue(allWorkingMonitorList);
        }
        /// <summary>
        /// æ›´æ–°ç›‘测值列表
        /// </summary>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.Designer.cs
@@ -31,16 +31,16 @@
            components = new Container();
            ComponentResourceManager resources = new ComponentResourceManager(typeof(HydroMonitorValueListCtrl));
            gridControl1 = new DevExpress.XtraGrid.GridControl();
            hydroMonitorValueViewModelBindingSource = new BindingSource(components);
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            colRelation = new DevExpress.XtraGrid.Columns.GridColumn();
            colPropName = new DevExpress.XtraGrid.Columns.GridColumn();
            colMonitorValue = new DevExpress.XtraGrid.Columns.GridColumn();
            colUnitName = new DevExpress.XtraGrid.Columns.GridColumn();
            colDescription = new DevExpress.XtraGrid.Columns.GridColumn();
            hydroMonitorValueViewModelBindingSource = new BindingSource(components);
            colVisualName = new DevExpress.XtraGrid.Columns.GridColumn();
            ((ISupportInitialize)gridControl1).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            ((ISupportInitialize)hydroMonitorValueViewModelBindingSource).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            SuspendLayout();
            // 
            // gridControl1
@@ -54,22 +54,16 @@
            gridControl1.TabIndex = 0;
            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
            // 
            // hydroMonitorValueViewModelBindingSource
            //
            hydroMonitorValueViewModelBindingSource.DataSource = typeof(HydroMonitorValueViewModel);
            //
            // gridView1
            // 
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colRelation, colPropName, colMonitorValue, colUnitName, colDescription });
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colVisualName, colPropName, colMonitorValue, colUnitName, colDescription });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.RowClick += gridView1_RowClick;
            //
            // colRelation
            //
            colRelation.FieldName = "Relation";
            colRelation.MaxWidth = 250;
            colRelation.MinWidth = 150;
            colRelation.Name = "colRelation";
            colRelation.Visible = true;
            colRelation.VisibleIndex = 0;
            colRelation.Width = 150;
            // 
            // colPropName
            // 
@@ -77,6 +71,7 @@
            colPropName.MaxWidth = 250;
            colPropName.MinWidth = 150;
            colPropName.Name = "colPropName";
            colPropName.OptionsColumn.AllowEdit = false;
            colPropName.Visible = true;
            colPropName.VisibleIndex = 1;
            colPropName.Width = 150;
@@ -99,6 +94,7 @@
            colUnitName.MaxWidth = 100;
            colUnitName.MinWidth = 100;
            colUnitName.Name = "colUnitName";
            colUnitName.OptionsColumn.AllowEdit = false;
            colUnitName.Visible = true;
            colUnitName.VisibleIndex = 3;
            colUnitName.Width = 100;
@@ -108,24 +104,32 @@
            colDescription.FieldName = "Description";
            colDescription.MinWidth = 100;
            colDescription.Name = "colDescription";
            colDescription.OptionsColumn.AllowEdit = false;
            colDescription.Visible = true;
            colDescription.VisibleIndex = 4;
            colDescription.Width = 100;
            // 
            // hydroMonitorValueViewModelBindingSource
            // colVisualName
            // 
            hydroMonitorValueViewModelBindingSource.DataSource = typeof(HydroMonitorValueViewModel);
            colVisualName.FieldName = "VisualName";
            colVisualName.MaxWidth = 250;
            colVisualName.MinWidth = 150;
            colVisualName.Name = "colVisualName";
            colVisualName.OptionsColumn.AllowEdit = false;
            colVisualName.Visible = true;
            colVisualName.VisibleIndex = 0;
            colVisualName.Width = 150;
            // 
            // HydroVisualMonitorValueListCtrl
            // HydroMonitorValueListCtrl
            // 
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(gridControl1);
            Name = "HydroVisualMonitorValueListCtrl";
            Name = "HydroMonitorValueListCtrl";
            Size = new Size(913, 394);
            ((ISupportInitialize)gridControl1).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ((ISupportInitialize)hydroMonitorValueViewModelBindingSource).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ResumeLayout(false);
        }
@@ -133,11 +137,11 @@
        private DevExpress.XtraGrid.GridControl gridControl1;
        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
        private DevExpress.XtraGrid.Columns.GridColumn colRelation;
        private DevExpress.XtraGrid.Columns.GridColumn colPropName;
        private DevExpress.XtraGrid.Columns.GridColumn colMonitorValue;
        private DevExpress.XtraGrid.Columns.GridColumn colDescription;
        private DevExpress.XtraGrid.Columns.GridColumn colUnitName;
        private BindingSource hydroMonitorValueViewModelBindingSource;
        private DevExpress.XtraGrid.Columns.GridColumn colVisualName;
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueListCtrl.cs
@@ -10,8 +10,9 @@
            InitializeComponent();
            this.gridView1.SetNormalEditView(30);
            this.gridView1.RegistCustomDrawRowIndicator(40);
            this.colRelation.OptionsColumn.AllowEdit = false;
            this.colVisualName.OptionsColumn.AllowEdit = false;
            this.colPropName.OptionsColumn.AllowEdit = false;
            this.colUnitName.OptionsColumn.AllowEdit = false;
            this.colDescription.OptionsColumn.AllowEdit = false;
        }
@@ -25,12 +26,21 @@
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(List<HydroMonitorValueViewModel> allValueList)
        public void SetBindingData(List<HydroMonitorValueViewModel> allMonitorValueList)
        {
            _allBindingList = new BindingList<HydroMonitorValueViewModel>();
            allValueList?.OrderBy(x => x.SortCode).ForEach(x => _allBindingList.Add(x));
            allMonitorValueList?.OrderBy(x => x.SortCode).ForEach(x => _allBindingList.Add(x));
            this.hydroMonitorValueViewModelBindingSource.DataSource = _allBindingList;
            this.hydroMonitorValueViewModelBindingSource.ResetBindings(false);
        }
        /// <summary>
        /// è®¾ç½®è§†å›¾é¢æ¿
        /// </summary>
        public void SetViewBoard()
        {
            this.colMonitorValue.OptionsColumn.AllowEdit = false;
            this.colMonitorValue.ImageOptions.SvgImage = null;
        }
        //行点击
@@ -43,5 +53,8 @@
            }
            this.HydroViewEvent?.Invoke(row.Vmo.Relation);
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/12-monitor/02-value/HydroMonitorValueViewModel.cs
@@ -15,7 +15,7 @@
        /// </summary>
        public HydroMonitorValueViewModel(Yw.Vmo.HydroMonitorVmo vmo, Yw.Model.HydroVisualInfo visual)
        {
            this.Relation = visual.Name;
            this.VisualName = visual.Name;
            this.PropName = HydroVisualCalcuPropHelper.GetName(vmo.PropName);
            this.MonitorValue = null;
            this.UnitName = HydroVisualCalcuPropHelper.GetUnit(vmo.PropName);
@@ -25,11 +25,12 @@
            this.Vmo = vmo;
        }
        /// <summary>
        /// æž„ä»¶
        /// </summary>
        [DisplayName("构件")]
        public string Relation { get; set; }
        public string VisualName { get; set; }
        /// <summary>
        /// å±žæ€§
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.cs
@@ -22,7 +22,7 @@
        }
        /// <summary>
        ///
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(List<HydroNodeLossViewModel> allNodeLossList)
        {
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveDlg.cs
@@ -1,4 +1,7 @@
namespace Yw.WinFrmUI
using Yw.Hydro;
using Yw.EPAnet;
namespace Yw.WinFrmUI
{
    public partial class HydroSingleLossCurveDlg : DevExpress.XtraBars.Ribbon.RibbonForm
    {
@@ -9,23 +12,35 @@
        }
        /// <summary>
        ///
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, HydroCalcuResult calcuResult, Yw.Model.HydroVisualInfo visual)
        {
            if (hydroInfo == null)
            {
                return;
            }
            var network = hydroInfo.ToNetwork();
            if (network == null)
            {
                return;
            }
            var node = network.GetAllNodes()?.Find(x => x.Id == visual.Code);
            if (node == null)
            {
                return;
            }
            var allPathList = network.AnalyzeDownstreamPath(node, calcuResult.EPAnetCalcuResult);
            var allEpaLossList = network.GetChartNodeByPathLinks(allPathList, calcuResult.EPAnetCalcuResult);
            var allNodeLossList = allEpaLossList?.Select(x => new HydroNodeLossViewModel(x)).ToList();
            SetBindingData(allNodeLossList);
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(List<HydroNodeLossViewModel> allNodeLossList)
        {
            //allNodeLossList = new List<HydroNodeLossViewModel>()
            //{
            //    new HydroNodeLossViewModel(){ Code="1",Elev=10,StartHead=666,EndHead=623,Distance=10},
            //    new HydroNodeLossViewModel(){ Code="2",Elev=20,StartHead=600,EndHead=567,Distance=30},
            //    new HydroNodeLossViewModel(){ Code="3",Elev=25,StartHead=544,EndHead=521,Distance=100},
            //    new HydroNodeLossViewModel(){ Code="4",Elev=19,StartHead=500,EndHead=789,Distance=110},
            //    new HydroNodeLossViewModel(){ Code="5",Elev=23,StartHead=700,EndHead=677,Distance=150},
            //    new HydroNodeLossViewModel(){ Code="6",Elev=22,StartHead=632,EndHead=600,Distance=200},
            //    new HydroNodeLossViewModel(){ Code="7",Elev=13,StartHead=550,EndHead=510,Distance=300},
            //    new HydroNodeLossViewModel(){ Code="8",Elev=13,StartHead=500,EndHead=345,Distance=500},
            //    new HydroNodeLossViewModel(){ Code="9",Elev=11,StartHead=300,EndHead=289,Distance=700},
            //    new HydroNodeLossViewModel(){ Code="10",Elev=10,StartHead=260,EndHead=150,Distance=820},
            //};
            this.hydroSingleLossCurveCtrl1.SetBindingData(allNodeLossList);
        }
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/03-statistics/HydroSingleWorkingLossStatisticsDlg.cs
@@ -16,17 +16,47 @@
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
        {
            var network = hydroInfo.ToNetwork();
            var calcuResult = network.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            var allEnergyPointList = network.AnalyzeEnergy(calcuResult);
            SetBindingData(hydroInfo, allEnergyPointList);
            if (hydroInfo == null)
            {
                return;
            }
            var calcuResult = hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            SetBindingData(hydroInfo, calcuResult);
        }
        /// <summary>
        ///
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, HydroCalcuResult calcuResult)
        {
            if (hydroInfo == null)
            {
                return;
            }
            List<Yw.EPAnet.EnergyPoint> allEnergyList = null;
            var network = hydroInfo.ToNetwork();
            if (network != null)
            {
                if (calcuResult != null)
                {
                    if (calcuResult.EPAnetCalcuResult != null)
                    {
                        allEnergyList = network.AnalyzeEnergy(calcuResult.EPAnetCalcuResult);
                    }
                }
            }
            SetBindingData(hydroInfo, allEnergyList);
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<Yw.EPAnet.EnergyPoint> allEnergyList)
        {
            if (hydroInfo == null)
            {
                return;
            }
            this.hydroSingleWorkingLossStatisticsCtrl1.SetBindingData(hydroInfo, allEnergyList);
        }