duheng
2024-11-06 f7c98e97bb52a5439470d37281a3da45e442d34f
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -28,9 +28,9 @@
        private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//项目站
        private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
        private Yw.Model.HydroParterInfo _parter = null;
        private Yw.WinFrmUI.HydroCheckResult _checkResult = null;
        private Yw.EPAnet.CalcuResult _calcuResult = null;
        private Yw.WinFrmUI.HydroCheckResult _checkResult = null;//检查结果
        private Yw.EPAnet.CalcuResult _calcuResult = null;//计算结果
        /// <summary>
        /// 绑定数据
@@ -78,6 +78,7 @@
        }
        #region Bimface
        //bimface控件
@@ -104,7 +105,7 @@
                    {
                        return;
                    }
                    _parter = obj;
                    _selectedParter = obj;
                    ShowProperty();
                };
            }
@@ -117,6 +118,11 @@
            var bimfaceCtrl = await GetBimfaceCtrl();
            this.tabPageBimface.Controls.Clear();
            this.tabPageBimface.Controls.Add(bimfaceCtrl);
        }
        private void SelectBimfaceParter()
        {
        }
        #endregion
@@ -141,7 +147,7 @@
                        return;
                    }
                    var allParterList = _hydroInfo.GetAllParters();
                    _parter = allParterList?.Find(x => x.Code == obj?.FirstOrDefault());
                    _selectedParter = allParterList?.Find(x => x.Code == obj?.FirstOrDefault());
                    ShowProperty();
                };
            }
@@ -219,6 +225,22 @@
                    await Task.Delay(5000);
                    await _bimfaceCtrl?.ClearBlinkComponents();
                };
                _propertyCtrl.PropertyValueChangedEvent += (parter) =>
                {
                    if (parter == null)
                    {
                        return;
                    }
                    UpdateParterListProperty(parter);
                };
                _propertyCtrl.ViewParterEvent += (parter) =>
                {
                    if (parter == null)
                    {
                        return;
                    }
                    _bimfaceCtrl?.ZoomToComponent(parter.Code);
                };
            }
            return _propertyCtrl;
        }
@@ -234,12 +256,6 @@
            this.docPnlRight.Width = 300;
        }
        //属性面板按钮
        private void barBtnProperty_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ShowPropertyCtrl();
        }
        //显示属性
        private void ShowProperty()
        {
@@ -251,22 +267,123 @@
            {
                ShowPropertyCtrl();
            }
            if (_parter == null)
            if (_selectedParter == null)
            {
                _propertyCtrl?.SelectParter(null);
                _propertyCtrl?.CancelSelectParter();
                return;
            }
            _propertyCtrl?.SelectParter(_parter.Code);
            _propertyCtrl?.SelectParter(_selectedParter.Code);
            var allCalcuResultList = GetCalcuResultList();
            if (allCalcuResultList != null && allCalcuResultList.Count > 0)
            {
                var calcuResult = allCalcuResultList.Find(x => x.Code == _parter.Code);
                var calcuResult = allCalcuResultList.Find(x => x.Code == _selectedParter.Code);
                if (calcuResult != null)
                {
                    _propertyCtrl?.UpdateCalcuProperty(calcuResult);
                }
            }
        }
        #endregion
        #region 选择构件
        //选择构件
        private Yw.Model.HydroParterInfo _selectedParter = null;
        //更新选择组件属性
        private void UpdateSelectedParterProperty()
        {
            if (_selectedParter == null)
            {
                return;
            }
            _propertyCtrl?.UpdateProperty();
        }
        //更新选择组件计算属性
        private void UpdateSelectedParterCalcuProperty()
        {
            if (_selectedParter == null)
            {
                return;
            }
            var allCalcuResultList = GetCalcuResultList();
            if (allCalcuResultList == null || allCalcuResultList.Count < 1)
            {
                return;
            }
            var calcuResult = allCalcuResultList.Find(x => x.Code == _selectedParter.Code);
            if (calcuResult == null)
            {
                return;
            }
            _propertyCtrl?.UpdateCalcuProperty(calcuResult);
        }
        //更新构件列表属性
        private void UpdateParterListProperty()
        {
            if (this.docPnlBottom.Visibility != DevExpress.XtraBars.Docking.DockVisibility.Visible)
            {
                return;
            }
            var parterListCtrl = this.controlContainerBottom.Controls[0] as Yw.WinFrmUI.HydroParterListCtrl;
            if (parterListCtrl == null)
            {
                return;
            }
            parterListCtrl.UpdateProperty();
        }
        //更新构件列表属性
        private void UpdateParterListProperty(Yw.Model.HydroParterInfo parter)
        {
            if (this.docPnlBottom.Visibility != DevExpress.XtraBars.Docking.DockVisibility.Visible)
            {
                return;
            }
            var parterListCtrl = this.controlContainerBottom.Controls[0] as Yw.WinFrmUI.HydroParterListCtrl;
            if (parterListCtrl == null)
            {
                return;
            }
            parterListCtrl.UpdateProperty(parter);
        }
        //更新构件列表属性
        private void UpdateParterListProperty(List<Yw.Model.HydroParterInfo> parterList)
        {
            if (this.docPnlBottom.Visibility != DevExpress.XtraBars.Docking.DockVisibility.Visible)
            {
                return;
            }
            var parterListCtrl = this.controlContainerBottom.Controls[0] as Yw.WinFrmUI.HydroParterListCtrl;
            if (parterListCtrl == null)
            {
                return;
            }
            parterListCtrl.UpdateProperty(parterList);
        }
        //更新构件列表计算属性
        private void UpdateParterListCalcuProperty()
        {
            if (this.docPnlBottom.Visibility != DevExpress.XtraBars.Docking.DockVisibility.Visible)
            {
                return;
            }
            var parterListCtrl = this.controlContainerBottom.Controls[0] as Yw.WinFrmUI.HydroParterListCtrl;
            if (parterListCtrl == null)
            {
                return;
            }
            var allCalcuResultList = GetCalcuResultList();
            parterListCtrl.UpdateCalcuProperty(allCalcuResultList);
        }
        #endregion
@@ -287,11 +404,11 @@
                        return;
                    }
                    var allParterList = _hydroInfo.GetAllParters();
                    _parter = allParterList?.Find(x => x.Code == code);
                    _selectedParter = allParterList?.Find(x => x.Code == code);
                    var elementIds = new List<string>();
                    if (_parter != null)
                    if (_selectedParter != null)
                    {
                        elementIds.Add(_parter.Code);
                        elementIds.Add(_selectedParter.Code);
                    }
                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                    ShowProperty();
@@ -350,7 +467,7 @@
                        return;
                    }
                    var allParterList = _hydroInfo.GetAllParters();
                    _parter = allParterList?.Find(x => x.Code == parter.Code);
                    _selectedParter = allParterList?.Find(x => x.Code == parter.Code);
                    var elementIds = new List<string>() { parter.Code };
                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                    ShowProperty();
@@ -359,7 +476,7 @@
                {
                    var codes = parters?.Select(x => x.Code).Distinct().ToList();
                    await _bimfaceCtrl?.ZoomAndSelectComponents(codes);
                    _parter = null;
                    _selectedParter = null;
                    ShowProperty();
                };
            }
@@ -443,15 +560,15 @@
                    var elementIds = new List<string>();
                    if (string.IsNullOrEmpty(code))
                    {
                        _parter = null;
                        _selectedParter = null;
                    }
                    else
                    {
                        var allParterList = _hydroInfo.GetAllParters();
                        _parter = allParterList?.Find(x => x.Code == code);
                        if (_parter != null)
                        _selectedParter = allParterList?.Find(x => x.Code == code);
                        if (_selectedParter != null)
                        {
                            elementIds.Add(_parter.Code);
                            elementIds.Add(_selectedParter.Code);
                        }
                    }
                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
@@ -536,14 +653,13 @@
                _parterListCtrl.Dock = DockStyle.Fill;
                _parterListCtrl.HydroClickEvent += async (parter) =>
                {
                    if (_hydroInfo == null)
                    {
                        return;
                    }
                    var allParterList = _hydroInfo.GetAllParters();
                    _parter = allParterList?.Find(x => x.Code == parter.Code);
                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _parter.Code });
                    _selectedParter = parter;
                    await _bimfaceCtrl?.ZoomAndSelectComponent(_selectedParter.Code);
                    ShowProperty();
                };
                _parterListCtrl.HydroChangedEvent += (parterList) =>
                {
                    UpdateSelectedParterProperty();
                };
            }
            return _parterListCtrl;
@@ -556,8 +672,17 @@
            {
                return;
            }
            var allCalcuResultList = GetCalcuResultList();
            var parterListCtrl = GetParterListCtrl();
            parterListCtrl.SetBindingData(_hydroInfo, GetCalcuResultList());
            parterListCtrl.SetBindingData(_hydroInfo, allCalcuResultList);
            if (allCalcuResultList == null || allCalcuResultList.Count < 1)
            {
                parterListCtrl.SetNormalView();
            }
            else
            {
                parterListCtrl.SetCalcuView();
            }
            this.controlContainerBottom.Controls.Clear();
            this.controlContainerBottom.Controls.Add(parterListCtrl);
            this.docPnlBottom.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
@@ -603,14 +728,14 @@
            //水库
            this.barBtnSetReservoirList.ItemClick += delegate
            {
                var dlg = new HydroReservoirBulkSetListDlg();
                dlg.ShowDialog();
                //var dlg = new HydroReservoirBulkSetListDlg();
                //dlg.ShowDialog();
            };
            //水池
            this.barBtnSetTankList.ItemClick += delegate
            {
                var dlg = new HydroTankBulkSetListDlg();
                dlg.ShowDialog();
                //var dlg = new HydroTankBulkSetListDlg();
                //dlg.ShowDialog();
            };
            //水箱
            this.barBtnSetWaterboxList.ItemClick += delegate
@@ -619,15 +744,29 @@
                {
                    return;
                }
                var dlg = new HydroWaterboxBulkSetListDlg();
                var dlg = new SetHydroWaterboxListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.HydroClickEvent += async (obj) =>
                {
                    if (obj == null)
                    {
                        return;
                    }
                    _selectedParter = obj;
                    await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code);
                    ShowProperty();
                };
                dlg.HydroChangedEvent += (obj) =>
                {
                };
                dlg.ShowDialog();
            };
            //连接节点
            this.barBtnSetJunctionList.ItemClick += delegate
            {
                var dlg = new HydroJunctionBulkSetListDlg();
                dlg.ShowDialog();
                //var dlg = new HydroJunctionBulkSetListDlg();
                //dlg.ShowDialog();
            };
            //闷头
            this.barBtnSetBluntheadList.ItemClick += delegate
@@ -636,7 +775,22 @@
                {
                    return;
                }
                var dlg = new HydroBluntheadBulkSetListDlg();
                var dlg = new SetHydroBluntheadListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.HydroClickEvent += async (obj) =>
                {
                    if (obj == null)
                    {
                        return;
                    }
                    _selectedParter = obj;
                    await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code);
                    ShowProperty();
                };
                dlg.HydroChangedEvent += (obj) =>
                {
                };
                dlg.ShowDialog();
            };
            //弯头
@@ -646,8 +800,22 @@
                {
                    return;
                }
                var dlg = new HydroElbowBulkSetListDlg();
                var dlg = new SetHydroElbowListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.HydroClickEvent += async (obj) =>
                {
                    if (obj == null)
                    {
                        return;
                    }
                    _selectedParter = obj;
                    await _bimfaceCtrl?.ZoomAndSelectComponent(obj.Code);
                    ShowProperty();
                };
                dlg.HydroChangedEvent += (obj) =>
                {
                };
                dlg.ShowDialog();
            };
            //三通
@@ -657,7 +825,7 @@
                {
                    return;
                }
                var dlg = new HydroThreelinkBulkSetListDlg();
                var dlg = new SetHydroThreelinkListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.ShowDialog();
            };
@@ -668,7 +836,7 @@
                {
                    return;
                }
                var dlg = new HydroFourlinkBulkSetListDlg();
                var dlg = new SetHydroFourlinkListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.ShowDialog();
            };
@@ -679,7 +847,7 @@
                {
                    return;
                }
                var dlg = new HydroMeterBulkSetListDlg();
                var dlg = new SetHydroMeterListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.ShowDialog();
            };
@@ -690,7 +858,7 @@
                {
                    return;
                }
                var dlg = new HydroFlowmeterBulkSetListDlg();
                var dlg = new SetHydroFlowmeterListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.ShowDialog();
            };
@@ -701,7 +869,7 @@
                {
                    return;
                }
                var dlg = new HydroPressmeterBulkSetListDlg();
                var dlg = new SetHydroPressmeterListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.ShowDialog();
            };
@@ -712,7 +880,7 @@
                {
                    return;
                }
                var dlg = new HydroPipeBulkSetListDlg();
                var dlg = new SetHydroPipeListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.ShowDialog();
            };
@@ -723,7 +891,7 @@
                {
                    return;
                }
                var dlg = new HydroPumpBulkSetListDlg();
                var dlg = new SetHydroPumpListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.ShowDialog();
            };
@@ -734,7 +902,7 @@
                {
                    return;
                }
                var dlg = new HydroValveBulkSetListDlg();
                var dlg = new SetHydroValveListDlg();
                dlg.SetBindingData(_hydroInfo);
                dlg.ShowDialog();
            };
@@ -1058,10 +1226,10 @@
            dlg.SetBindingData(_hydroInfo);
            dlg.HydroViewEvent += async (parter) =>
            {
                _parter = parter;
                if (_parter != null)
                _selectedParter = parter;
                if (_selectedParter != null)
                {
                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _parter.Code });
                    await _bimfaceCtrl?.ZoomAndSelectComponents(new List<string>() { _selectedParter.Code });
                }
                ShowProperty();
            };
@@ -1083,7 +1251,7 @@
                WaitFormHelper.ShowWaitForm(this, "正在计算分析中,请稍候...");
                await Task.Delay(5000);
                //await Task.Delay(5000);
                var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
                _calcuResult = netWork.Calcu();
@@ -1353,12 +1521,12 @@
                    {
                        var first = list.First();
                        var allParterList = _hydroInfo.GetAllParters();
                        _parter = allParterList?.Find(x => x.Code == first.Code);
                        _selectedParter = allParterList?.Find(x => x.Code == first.Code);
                        list.ForEach(x => elementIds.Add(x.Code));
                    }
                    else
                    {
                        _parter = null;
                        _selectedParter = null;
                    }
                    await _bimfaceCtrl?.ZoomAndSelectComponents(elementIds);
                    ShowProperty();
@@ -2457,7 +2625,7 @@
                sw.Stop();
                TimeSpan ts2 = sw.Elapsed;
                Console.WriteLine("Stopwatch总共花费{0}ms.", ts2.TotalMilliseconds);
                _parter = null;
                _selectedParter = null;
                await _bimfaceCtrl?.ZoomAndSelectComponents(null);
                ShowProperty();
                TipFormHelper.ShowSucceed("数据已刷新");