lixiaojun
2024-12-10 513c72dd3c97787b0845bcc8526e004da9e50e64
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -32,6 +32,7 @@
        private HStation.Vmo.XhsProjectVmo _project = null;//项目
        private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//项目站
        private HStation.Vmo.XhsSchemeVmo _scheme = null;//方案
        private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
        private Dictionary<HydroWorkingVmo, bool> _allWorkingCheckedListDict = null;//所有工况选择列表字典
@@ -42,14 +43,17 @@
            (
                XhsProjectVmo project,
                XhsProjectSiteVmo projectSite,
                XhsSchemeVmo scheme,
                Yw.Model.HydroModelInfo hydroInfo,
                Dictionary<HydroWorkingVmo, bool> allWorkingCheckedListDict
            )
        {
            _project = project;
            _projectSite = projectSite;
            _scheme = scheme;
            _hydroInfo = hydroInfo;
            _allWorkingCheckedListDict = allWorkingCheckedListDict;
            ResetMonitorValue();
        }
        /// <summary>
@@ -66,10 +70,10 @@
        #region BIM控件
        //bimface控件
        private XhsProjectSimulationBimfaceCtrl _bimfaceCtrl = null;
        private SimulationBimfaceCtrl _bimfaceCtrl = null;
        //获取 bimface 控件
        private async Task<XhsProjectSimulationBimfaceCtrl> GetBimfaceCtrl()
        private async Task<SimulationBimfaceCtrl> GetBimfaceCtrl()
        {
            if (_hydroInfo == null)
            {
@@ -78,7 +82,7 @@
            if (_bimfaceCtrl == null)
            {
                var overlay = this.ShowOverlay();
                _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
                _bimfaceCtrl = new SimulationBimfaceCtrl();
                _bimfaceCtrl.Dock = DockStyle.Fill;
                await _bimfaceCtrl.InitialData(_project, _projectSite);
                _bimfaceCtrl.LoadCompletedEvent += () =>
@@ -160,6 +164,7 @@
            {
                _propertyCtrl = new SimulationPropertyCtrl();
                _propertyCtrl.Dock = DockStyle.Fill;
                _propertyCtrl.AllowEdit = true;
                _propertyCtrl.HydroViewEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Property);
@@ -278,21 +283,13 @@
            var visualVmListHelper = GetVisualVmListHelper();
            var vm = visualVmListHelper.GetVisual(visual);
            _propertyCtrl.SelectedObject = vm;
            _propertyCtrl.UpdateRows();
        }
        //更新属性控件
        private void UpdatePropertyCtrl()
        {
            _propertyCtrl?.UpdateRows();
        }
        //清理属性控件
        private void ClearPropertyCtrl()
        {
            if (_propertyCtrl != null)
            {
                _propertyCtrl.SelectedObject = null;
            }
        }
        #endregion
@@ -403,6 +400,13 @@
            }
        }
        //选择构件
        private void SelectVisual(string code, eVisualSource source)
        {
            var visual = GetVisual(code);
            SelectVisual(visual, source);
        }
        #endregion
        #region 构件明细
@@ -421,6 +425,28 @@
                _visualListHelper.InitialData(_hydroInfo);
            }
            return _visualListHelper;
        }
        //获取可见构件
        private Yw.Model.HydroVisualInfo GetVisual(string code)
        {
            var helper = GetVisualListHelper();
            var visual = helper.GetVisual(code);
            return visual;
        }
        //获取可见列表
        private List<Yw.Model.HydroVisualInfo> GetVisualList()
        {
            var helper = GetVisualListHelper();
            return helper.GetVisualList();
        }
        //获取水源列表
        private List<Yw.Model.HydroSourceInfo> GetSourceList()
        {
            var helper = GetVisualListHelper();
            return helper.GetSourceList();
        }
        #endregion
@@ -444,6 +470,13 @@
                _visualVmListHelper = new SimulationVisualVmListHelper(visualListHelper, calcuResultHelper);
            }
            return _visualVmListHelper;
        }
        //获取可见视图列表
        private List<HydroVisualViewModel> GetVisualViewModelList()
        {
            var helper = GetVisualVmListHelper();
            return helper.GetVisualList();
        }
        #endregion
@@ -662,12 +695,9 @@
            //水库
            this.barBtnSetReservoirList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroReservoirListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -675,18 +705,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //水池
            this.barBtnSetTankList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroTankListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -694,18 +722,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //水箱
            this.barBtnSetWaterboxList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroWaterboxListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -713,18 +739,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //连接节点
            this.barBtnSetJunctionList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroJunctionListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -732,18 +756,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //闷头
            this.barBtnSetBluntheadList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroBluntheadListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -751,18 +773,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //弯头
            this.barBtnSetElbowsList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualVmList = GetVisualViewModelList();
                var dlg = new SetHydroElbowListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualVmList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -770,18 +790,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //三通
            this.barBtnSetThreelinkList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroThreelinkListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -789,18 +807,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //四通
            this.barBtnSetFourlinkList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroFourlinkListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -808,18 +824,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //水表
            this.barBtnSetMeterList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroMeterListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -827,18 +841,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //流量计
            this.barBtnSetFlowmeterList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroFlowmeterListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -846,18 +858,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //压力表
            this.barBtnSetPressmeterList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroPressmeterListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -865,18 +875,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //管道
            this.barBtnSetPipeList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroPipeListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -884,18 +892,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //过渡件
            this.barBtnSetTranslationList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroTranslationListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -903,18 +909,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //水泵
            this.barBtnSetPumpList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroPumpListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -922,18 +926,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //阀门
            this.barBtnSetValveList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroValveListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -941,18 +943,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //换热器
            this.barBtnSetExchangerList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroExchangerListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -960,18 +960,16 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
            //换热器
            this.barBtnSetCompressorList.ItemClick += delegate
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                var allVisualViewModelList = GetVisualViewModelList();
                var dlg = new SetHydroCompressorListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.SetBindingData(allVisualViewModelList);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eVisualSource.Set);
@@ -979,6 +977,7 @@
                dlg.HydroChangedInfoEvent += visuals =>
                {
                    SelectVisual(visuals?.FirstOrDefault(), eVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ShowDialog();
            };
@@ -1564,6 +1563,19 @@
            return _monitorValueHelper;
        }
        //重置
        private void ResetMonitorValue()
        {
            var allWorkingList = GetWorkingList();
            var working = allWorkingList?.Last(x => !string.IsNullOrEmpty(x.MonitorInfo));
            if (working != null)
            {
                var helper = GetMonitorValueHelper();
                helper.Reset(working.MonitorInfo);
            }
        }
        #endregion
        #region 监测值控件
@@ -2142,7 +2154,7 @@
                }
                WaitFormHelper.ShowWaitForm(this, "正在计算分析中,请稍候...");
                //await Task.Delay(3000);
                await Task.Delay(3000);
                var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
                WaitFormHelper.HideWaitForm();
                workingHelper.InitialData(hydroInfo, working, checkResult, calcuResult);
@@ -2177,6 +2189,13 @@
                #region 构件明细
                UpdateVisualListCtrl();
                #endregion
                #region 颜色分级
                var gradingHelper = await GetGradingHelper();
                gradingHelper.Set();
                #endregion
@@ -2283,11 +2302,32 @@
            return _workingCheckedListHelper;
        }
        //获取工况列表
        private List<HydroWorkingVmo> GetWorkingList()
        {
            var helper = GetWorkingCheckedListHelper();
            return helper.GetWorkingList();
        }
        //更新工况选择列表
        public void UpdateWorkingCheckedList(HydroWorkingVmo working)
        {
            var helper = GetWorkingCheckedListHelper();
            helper.Update(working);
        }
        //更新工况选择列表
        public void UpdateWorkingCheckedList(HydroWorkingVmo working, bool hasChecked)
        {
            var helper = GetWorkingCheckedListHelper();
            helper.Update(working, hasChecked);
        }
        //移除工况选择列表
        public void RemoveWorkingCheckedList(HydroWorkingVmo working)
        {
            var helper = GetWorkingCheckedListHelper();
            helper.Remove(working);
        }
@@ -2362,11 +2402,12 @@
                    return;
                }
                var dlg = new SimulationSingleWorkingEnergyDlg();
                dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult);
                dlg.SetBindingData(workingHelper.Working, workingHelper.HydroInfo, workingHelper.CalcuResult);
                dlg.ShowDialog();
            }
            else
            {
                var dlg = new SimulationMultiWorkingEnergyDlg();
                dlg.SetBindingData(_hydroInfo, allCheckedWorkingList);
                dlg.ShowDialog();
@@ -2378,8 +2419,27 @@
        {
            if (_visual == null)
            {
                TipFormHelper.ShowWarn("请选择构件后重试!");
                return;
                var sources = GetSourceList();
                if (sources != null)
                {
                    if (sources.Count == 1)
                    {
                        SelectVisual(sources[0], eVisualSource.None);
                    }
                    else
                    {
                        var source = sources.FirstOrDefault(x => x.Flags.Contains(HStation.Xhs.Flags.进口));
                        if (source != null)
                        {
                            SelectVisual(source, eVisualSource.None);
                        }
                    }
                }
                if (_visual == null)
                {
                    TipFormHelper.ShowWarn("请选择构件后重试!");
                    return;
                }
            }
            HydroVisualInfo visual = _visual;
            if (_visual is HydroLinkInfo linkInfo)
@@ -2399,12 +2459,20 @@
                    return;
                }
                var dlg = new HydroSingleWorkingLossCurveDlg();
                dlg.HydroClickEvent += (code) =>
                {
                    SelectVisual(code, eVisualSource.None);
                };
                dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult, visual);
                dlg.ShowDialog();
            }
            else
            {
                var dlg = new HydroMultiWorkingLossCurveDlg();
                dlg.HydroClickEvent += (code) =>
                {
                    SelectVisual(code, eVisualSource.None);
                };
                dlg.SetBindingData(_hydroInfo, allCheckedWorkingList, visual);
                dlg.ShowDialog();
            }
@@ -2440,8 +2508,27 @@
        {
            if (_visual == null)
            {
                TipFormHelper.ShowWarn("请选择构件后重试!");
                return;
                var sources = GetSourceList();
                if (sources != null)
                {
                    if (sources.Count == 1)
                    {
                        SelectVisual(sources[0], eVisualSource.None);
                    }
                    else
                    {
                        var source = sources.FirstOrDefault(x => x.Flags.Contains(HStation.Xhs.Flags.进口));
                        if (source != null)
                        {
                            SelectVisual(source, eVisualSource.None);
                        }
                    }
                }
                if (_visual == null)
                {
                    TipFormHelper.ShowWarn("请选择构件后重试!");
                    return;
                }
            }
            HydroVisualInfo visual = _visual;
            if (_visual is HydroLinkInfo linkInfo)