lixiaojun
2024-10-12 a92e5aca2f662baed4481870d921def68b63b914
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -15,19 +15,27 @@
            InitializeComponent();
            this.PageTitle.Caption = "水力模拟";
            this.PageTitle.HeaderSvgImage = this.svgImg32[0];
            this.xhsProjectSimulationSearchCtrl1.ApplySearchEvent += XhsProjectSimulationSearchCtrl1_ApplySearchEvent;
            this.xhsProjectSimulationCalcuCtrl1.CancelEvent += XhsProjectSimulationCalcuCtrl1_CancelEvent;
            this.xhsProjectSimulationCalcuCtrl1.OkEvent += XhsProjectSimulationCalcuCtrl1_OkEvent;
            this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlSearch.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
        }
        private HStation.Vmo.XhsProjectVmo _project = null;//项目
        private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//项目站
        private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
        private Yw.Model.HydroParterInfo _parter = null;
        private Yw.EPAnet.CheckResult _checkResult = null;
        private Yw.WinFrmUI.HydroCheckResult _checkResult = null;
        private Yw.EPAnet.CalcuResult _calcuResult = null;
        /// <summary>
@@ -72,8 +80,8 @@
            this.PageTitle.Caption = $"{_project.Name}\r\n水力模拟";
            await this.xhsProjectSimulationBimfaceCtrl1.SetBindingData(_project, _projectSite, () => _hydroInfo);
            this.xhsProjectSimulationQ3dCtrl1.SetBindingData(_hydroInfo);
            this.xhsProjectSimulationL3dCtrl1.SetBindingData(_hydroInfo);
            this.xhsProjectSimulationPropertyCtrl1.SetBindingData(() => _hydroInfo);
            this.xhsProjectSimulationPropertyCtrl1.InitialData(() => _hydroInfo);
            this.xhsProjectSimulationSearchCtrl1.InitialData(() => _hydroInfo);
        }
        #region INP导出
@@ -200,6 +208,7 @@
            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlSearch.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            var input = AssetsMatchingParasHelper.Create(_hydroInfo);
            this.xhsProjectSimulationMatchingListCtrl1.SetBindingData(input);
@@ -244,6 +253,7 @@
            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlSearch.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.xhsProjectSimulationUnMatchingListCtrl1.SetBindingData(_hydroInfo);
            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
@@ -316,29 +326,35 @@
            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlSearch.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
            _checkResult = netWork.Check();
            if (_checkResult.Succeed)
            {
                TipFormHelper.ShowSucceed("校验通过!");
                return;
            }
            this.xhsProjectSimulationHydroCheckFailedCtrl1.SetBindingData(_checkResult.FailedList);
            _checkResult = _hydroInfo.Check();
            this.xhsProjectSimulationHydroCheckResultCtrl1.SetBindingData(_checkResult);
            this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
            this.docPnlHydroCheck.Height = 350;
        }
        //水力校验点击
        private async void xhsProjectSimulationHydroCheckFailedCtrl1_HydroClickEvent(string code)
        private async void xhsProjectSimulationHydroCheckResultCtrl1_HydroClickEvent(string code)
        {
            if (_hydroInfo == null)
            {
                return;
            }
            var allParterList = _hydroInfo.GetAllParters();
            _parter = allParterList.Find(x => x.Code == code);
            var elementIds = new List<string>() { _parter.Code };
            var elementIds = new List<string>();
            if (string.IsNullOrEmpty(code))
            {
                _parter = null;
            }
            else
            {
                var allParterList = _hydroInfo.GetAllParters();
                _parter = allParterList.Find(x => x.Code == code);
                if (_parter != null)
                {
                    elementIds.Add(_parter.Code);
                }
            }
            await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds);
            ShowProperty();
            SetBimfaceLinkColor();
@@ -381,6 +397,7 @@
            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlSearch.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.hydroParterListCtrl1.SetBindingData(_hydroInfo);
            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
@@ -481,17 +498,27 @@
                return;
            }
            var pumps = _hydroInfo.Pumps;
            var vmList = pumps.Select(x => new HStation.WinFrmUI.PhartRelation.Perform2dMultiViewModel()
            var vmList = new List<Yw.WinFrmUI.Phart.PumpSerialParallelViewModel>();
            foreach (var x in pumps)
            {
                Id = x.Code,
                Name = x.Code,
                SpeedRatio = x.SpeedRatio ?? 1,
                PointsQH = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQH)?.CurveData?.Select(z => new PhartRelation.PerformPoint2dViewModel() { X = z.X, Y = z.Y }).ToList(),
                PointsQP = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQP)?.CurveData?.Select(z => new PhartRelation.PerformPoint2dViewModel() { X = z.X, Y = z.Y }).ToList(),
                PointsQE = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQE)?.CurveData?.Select(z => new PhartRelation.PerformPoint2dViewModel() { X = z.X, Y = z.Y }).ToList(),
            }).ToList();
            var dlg = new HStation.WinFrmUI.PhartRelation.PumpPerform2dMultiViewDlg();
            dlg.SetBindingData(vmList, false, true);
                var vm = new Yw.WinFrmUI.Phart.PumpSerialParallelViewModel();
                vm.Id = x.Code;
                vm.Name = x.Code;
                //vm.IsBp = ;
                vm.RatedSpeed = 590;
                vm.CurrentSpeed = 590;
                vm.CurrentHz = 50;
                var PointsQH = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQH)?.CurveData?.Select(z => new Yw.Geometry.Point2d() { X = z.X, Y = z.Y }).ToList();
                var PointsQP = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQP)?.CurveData?.Select(z => new Yw.Geometry.Point2d { X = z.X, Y = z.Y }).ToList();
                var PointsQE = _hydroInfo.Curves?.Find(t => t.Code == x.CurveQE)?.CurveData?.Select(z => new Yw.Geometry.Point2d { X = z.X, Y = z.Y }).ToList();
                vm.Qh = new Yw.Geometry.CubicSpline2d(PointsQH);
                vm.Qe = new Yw.Geometry.CubicSpline2d(PointsQE);
                vm.Qp = new Yw.Geometry.CubicSpline2d(PointsQP);
                vmList.Add(vm);
            }
            var dlg = new HStation.WinFrmUI.PhartRelation.PumpSerialParallelChartDlg();
            dlg.SetBindingData(vmList, null, true);
            dlg.ShowDialog();
        }
@@ -506,26 +533,107 @@
            {
                return;
            }
            this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlSearch.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.xhsProjectSimulationCalcuCtrl1.SetBindingData(_hydroInfo);
            this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
            this.docPnlHydroCalcu.Height = 350;
            //var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
            //_calcuResult = netWork.Calcu();
            //if (_calcuResult.Succeed)
            //{
            //    ShowProperty();
            //    TipFormHelper.ShowSucceed("计算成功!");
            //}
            //else
            //{
            //    this.xhsProjectSimulationHydroCalcuFailedCtrl1.SetBindingData(_calcuResult.FailedList);
            //    this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
            //    this.docPnlHydroCalcu.Height = 350;
            //}
            //await this.xhsProjectSimulationBimfaceCtrl1.ShowCalcuCustomLabels(_calcuResult);
        }
        //取消
        private void XhsProjectSimulationCalcuCtrl1_CancelEvent()
        {
            this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
        }
        //确认
        private async void XhsProjectSimulationCalcuCtrl1_OkEvent()
        {
            var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
            _calcuResult = netWork.Calcu();
            if (_calcuResult.Succeed)
            {
                this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
                ShowProperty();
                TipFormHelper.ShowSucceed("计算成功!");
                await this.xhsProjectSimulationBimfaceCtrl1.ShowCalcuCustomLabels(_calcuResult);
            }
            else
            {
                this.xhsProjectSimulationCalcuCtrl1.SetBindingData(_calcuResult.FailedList);
                this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
                this.docPnlHydroCalcu.Height = 350;
            }
        }
        #endregion
        #region 查询
        //查询
        private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (_hydroInfo == null)
            {
                return;
            }
            this.docPnlHydroCheck.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlHydroParterList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlUnMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlMatchingList.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            this.docPnlSearch.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Hidden;
            var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
            _calcuResult = netWork.Calcu();
            if (_calcuResult.Succeed)
            this.docPnlSearch.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
            this.docPnlSearch.Height = 350;
        }
        //应用查询
        private async void XhsProjectSimulationSearchCtrl1_ApplySearchEvent(List<Yw.Model.HydroParterInfo> obj)
        {
            if (_hydroInfo == null)
            {
                ShowProperty();
                TipFormHelper.ShowSucceed("计算成功!");
                return;
            }
            var elementIds = new List<string>();
            if (obj != null && obj.Count > 0)
            {
                var first = obj.First();
                var allParterList = _hydroInfo.GetAllParters();
                _parter = allParterList.Find(x => x.Code == first.Code);
                obj.ForEach(x => elementIds.Add(x.Code));
            }
            else
            {
                this.xhsProjectSimulationHydroCalcuFailedCtrl1.SetBindingData(_calcuResult.FailedList);
                this.docPnlHydroCalcu.Visibility = DevExpress.XtraBars.Docking.DockVisibility.Visible;
                this.docPnlHydroCalcu.Height = 350;
                _parter = null;
            }
            await this.xhsProjectSimulationBimfaceCtrl1.ShowCalcuCustomLabels(_calcuResult);
            await this.xhsProjectSimulationBimfaceCtrl1.ZoomAndSelectComponents(elementIds);
            ShowProperty();
            SetBimfaceLinkColor();
        }
        #endregion