lixiaojun
2024-12-20 4a27caa5a0d8f4eef667cc9ed0d1c01ea7329298
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -220,7 +220,7 @@
                        {
                            return;
                        }
                        var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != linkNodeCode).ToList();
                        var linkList = allLinkList.Where(x => (x.StartCode == linkNodeCode || x.EndCode == linkNodeCode) && x.Code != link.Code).ToList();
                        if (linkList == null || linkList.Count < 1)
                        {
                            return;
@@ -695,8 +695,6 @@
        #endregion 一键显隐
        #region 保存信息
        //保存
@@ -922,6 +920,40 @@
                };
                dlg.ShowDialog();
            };
            //喷嘴
            this.barBtnSetNozzleList.ItemClick += delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroNozzleListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
                };
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //喷嘴
            this.barBtnSetCoolingList.ItemClick += delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroCoolingListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
                };
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //管道
            this.barBtnSetPipeList.ItemClick += delegate
            {
@@ -1007,7 +1039,7 @@
                };
                dlg.ShowDialog();
            };
            //换热器
            //压缩机
            this.barBtnSetCompressorList.ItemClick += delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
@@ -1098,6 +1130,16 @@
            else
            {
                this.barBtnSetHydrantList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
            }
            //冷却塔
            if (_hydroInfo.Coolings == null || _hydroInfo.Coolings.Count < 1)
            {
                this.barBtnSetCoolingList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
            }
            else
            {
                this.barBtnSetCoolingList.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
            }
            //闷头
@@ -1602,6 +1644,13 @@
            return _monitorValueHelper;
        }
        //获取监测值列表
        private async Task<List<HydroMonitorValueViewModel>> GetMonitorValueList()
        {
            var helper = GetMonitorValueHelper();
            return await helper.Get();
        }
        //重置
        private void ResetMonitorValue()
        {
@@ -1614,7 +1663,7 @@
            }
        }
        #endregion 监测值
        #endregion
        #region 监测值控件
@@ -1630,8 +1679,7 @@
                _monitorValueListCtrl.Dock = DockStyle.Fill;
                _monitorValueListCtrl.HydroViewEvent += (code) =>
                {
                    var visualListHelper = GetVisualListHelper();
                    var visual = visualListHelper.GetVisual(code);
                    var visual = GetVisual(code);
                    SelectVisual(visual, eSimulationVisualSource.Monitor);
                };
            }
@@ -1669,9 +1717,8 @@
                this.docPnlBottom.Text = "监测值";
                this.docPnlBottom.Height = 350;
            }
            var monitorValueHelper = GetMonitorValueHelper();
            var allMonitorValueList = await monitorValueHelper.Get();
            monitorValueListCtrl.SetBindingData(allMonitorValueList);
            var allMonitorValueList = await GetMonitorValueList();
            monitorValueListCtrl.SetBindingData(allMonitorValueList, _visual);
        }
        //设置监测值
@@ -1680,7 +1727,7 @@
            ShowMonitorValueListCtrl();
        }
        #endregion 监测值控件
        #endregion
        #region 监测点标记
@@ -1707,7 +1754,7 @@
            monitorMarkerHelper.Set();
        }
        #endregion 监测点标记
        #endregion
        #endregion 监测列表
@@ -1978,72 +2025,7 @@
        #endregion 计算标签
        #endregion 模型计算
        #region 管网修复
        //修复管网
        private void Repair()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            var checkResult = _hydroInfo.Check();
            if (!checkResult.Succeed)
            {
                ShowCheckCtrl(checkResult);
                TipFormHelper.ShowWarn("检查失败导致无法进行试算,停止管网修复!");
                return;
            }
            var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.Simple);
            if (!calcuResult.Succeed)
            {
                ShowCalcuFailedCtrl(calcuResult);
                TipFormHelper.ShowWarn("试算失败,停止管网修复!");
                return;
            }
            var visualListHelper = GetVisualListHelper();
            var allLinkList = visualListHelper.GetLinkList();
            if (allLinkList != null && allLinkList.Count < 1)
            {
                TipFormHelper.ShowError("模型中未包含管段信息,停止管网修复!");
                return;
            }
            int count = 0;
            foreach (var link in allLinkList)
            {
                var calcuLink = calcuResult.LinkList?.Find(x => x.Code == link.Code);
                if (calcuLink == null)
                {
                    continue;
                }
                if (!calcuLink.CalcuFlow.HasValue)
                {
                    continue;
                }
                if (calcuLink.CalcuFlow.Value < 0)
                {
                    var tempCode = link.StartCode;
                    link.StartCode = link.EndCode;
                    link.EndCode = tempCode;
                    count++;
                }
            }
            var visualVmListHelper = GetVisualVmListHelper();
            visualVmListHelper.UpdateProperty();
            UpdateVisualListCtrl();
            UpdatePropertyCtrl();
            TipFormHelper.ShowSucceed($"修复完成,共修复管段({count})个!");
        }
        //管网修复
        private void barBtnRepair_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Repair();
        }
        #endregion 管网修复
        #endregion
        #region 导出INP
@@ -2390,6 +2372,13 @@
            return helper.GetWorkingList();
        }
        //获取选择工况列表
        private List<HydroWorkingVmo> GetCheckedWorkingList()
        {
            var helper = GetWorkingCheckedListHelper();
            return helper.GetCheckedWorkingList();
        }
        //更新工况选择列表
        public void UpdateWorkingCheckedList(HydroWorkingVmo working)
        {
@@ -2412,6 +2401,93 @@
        }
        #endregion 选择工况
        #region 监测分析
        //监测分析列表控件
        private HydroWorkingMonitorAnalyListCtrl _monitorAnalyListCtrl = null;
        //获取监测分析列表控件
        private HydroWorkingMonitorAnalyListCtrl GetMonitorAnalyListCtrl()
        {
            if (_monitorAnalyListCtrl == null)
            {
                _monitorAnalyListCtrl = new HydroWorkingMonitorAnalyListCtrl();
                _monitorAnalyListCtrl.Dock = DockStyle.Fill;
                _monitorAnalyListCtrl.HydroViewEvent += (code) =>
                {
                    var visual = GetVisual(code);
                    SelectVisual(visual, eSimulationVisualSource.Monitor);
                };
            }
            return _monitorAnalyListCtrl;
        }
        //监测分析列表控件是否可见
        private bool IsMonitorAnalyListCtrlVisible
        {
            get
            {
                if (this.docPnlBottom.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Visible)
                {
                    if (this.controlContainerBottom.Controls.Count > 0)
                    {
                        if (this.controlContainerBottom.Controls[0] is HydroWorkingMonitorAnalyListCtrl)
                        {
                            return true;
                        }
                    }
                }
                return false;
            }
        }
        //显示监测值列表控件
        private async void ShowMonitorAnalyListCtrl()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            var allWorkingList = GetCheckedWorkingList();
            if (allWorkingList == null || allWorkingList.Count < 1)
            {
                var workingHelper = GetWorkingHelper();
                if (!workingHelper.Initialized)
                {
                    TipFormHelper.ShowWarn("请计算后重试!");
                    return;
                }
            }
            var monitorAnalyListCtrl = GetMonitorAnalyListCtrl();
            if (!IsMonitorAnalyListCtrlVisible)
            {
                this.controlContainerBottom.Controls.Clear();
                this.controlContainerBottom.Controls.Add(monitorAnalyListCtrl);
                this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
                this.docPnlBottom.Text = "监测分析";
                this.docPnlBottom.Height = 350;
            }
            var allMontorList = await GetMonitorList();
            var allMonitorValueList = await GetMonitorValueList();
            if (allWorkingList == null || allWorkingList.Count < 1)
            {
                monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMontorList, allMonitorValueList, GetWorking(), GetCalcuResult(), _visual);
            }
            else
            {
                monitorAnalyListCtrl.SetBindingData(_hydroInfo, allMontorList, allMonitorValueList, allWorkingList, _visual);
            }
        }
        //监测分析
        private void barBtnWorkingMonitorAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ShowMonitorAnalyListCtrl();
        }
        #endregion
        #region 工况分析
@@ -2636,7 +2712,7 @@
            }
        }
        #endregion 工况分析
        #endregion
        #region 方案管理
@@ -2712,5 +2788,7 @@
        }
        #endregion 方案管理
    }
}