lixiaojun
2024-12-02 54b0925cde5f2246ad59529f82a74753139eb104
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -2020,12 +2020,37 @@
        #region 水泵列表
        //性能曲线
        private void barBtnPumpCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private void PumpFeat()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            var pumps = _hydroInfo.Pumps;
            if (pumps == null || pumps.Count < 1)
            {
                XtraMessageBox.Show("无水泵信息");
                return;
            }
            var dlg = new SimulationPumpFeatDlg();
            dlg.SaveEvent += async (list) =>
            {
                pumps.ForEach(x => x.UpdateWorkingInfo(list));
                var visualVmListHelper = GetVisualVmListHelper();
                visualVmListHelper.UpdateProperty(pumps.Select(x => x as Yw.Model.HydroVisualInfo).ToList());
                SelectVisual(_visual, eVisualSource.None);
                var gradingHelper = await GetGradingHelper();
                gradingHelper.Set();
            };
            dlg.SetBindingData(_hydroInfo);
            dlg.ShowDialog();
        }
        #region 并联模拟
        //性能曲线
        private void barBtnPumpCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            PumpFeat();
        }
        //并联模拟
        private void PumpParallel()
@@ -2040,71 +2065,34 @@
                XtraMessageBox.Show("无水泵信息");
                return;
            }
            var vmList = new List<XhsSinglePumpViewModel>();
            foreach (var pump in pumps)
            {
                if (!pump.RatedN.HasValue)
                {
                    continue;
                }
                var qh = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQH)?.CurveData;
                var qe = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQE)?.CurveData;
                var qp = _hydroInfo.Curves?.Find(t => t.Code == pump.CurveQP)?.CurveData;
                if (qh == null)
                {
                    continue;
                }
                var qhPtList = qh.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
                var qePtList = qe?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
                var qpPtList = qp?.Select(x => new XhsSplinePointViewModel(x.X, x.Y)).ToList();
                var vm = new XhsSinglePumpViewModel();
                vmList.Add(vm);
                vm.ID = pump.ID;
                vm.Name = pump.Name;
                vm.Code = pump.Code;
                vm.IsBp = true;
                vm.RunStatus = pump.LinkStatus == Yw.Hydro.LinkStatus.Open;
                vm.RatedHz = pump.RatedHz;
                vm.CurrentHz = Math.Round(pump.RatedHz * pump.SpeedRatio, 1);
                vm.RatedSpeed = pump.RatedN.Value;
                vm.CurrentSpeed = Math.Round(pump.RatedN.Value * pump.SpeedRatio, 1);
                vm.CurveQH = qhPtList;
                vm.CurveQE = qePtList;
                vm.CurveQP = qpPtList;
            }
            var dlg = new PumpParallelAnalyDlg();
            dlg.SetBindingData(vmList);
            dlg.ReloadDataEvent += (list) =>
            var dlg = new SimulationPumpParallelDlg();
            dlg.SaveEvent += async (list) =>
            {
                list?.ForEach(x =>
                {
                    var pump = pumps.Find(t => t.Code == x.Code);
                    if (pump != null)
                    {
                        pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed;
                        pump.SpeedRatio = x.CurrentHz / pump.RatedHz;
                        pump.LinkStatus = x.LinkStatus;
                        pump.SpeedRatio = x.SpeedRatio;
                    }
                });
                var codes = list?.Select(x => x.Code).ToList();
                //UpdateVisualViewModelProperty(codes);
                //ShowSelectedProperty();
                UpdateVisualListCtrl();
                return true;
                var visualVmListHelper = GetVisualVmListHelper();
                visualVmListHelper.UpdateProperty(pumps.Select(x => x as Yw.Model.HydroVisualInfo).ToList());
                SelectVisual(_visual, eVisualSource.None);
                var gradingHelper = await GetGradingHelper();
                gradingHelper.Set();
            };
            dlg.SetBindingData(_hydroInfo);
            dlg.ShowDialog();
        }
        //并联模拟
        private void barBtnPumpParallel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            PumpParallel();
        }
        #endregion
        #endregion
@@ -2177,6 +2165,12 @@
                var visualVmListHelper = GetVisualVmListHelper();
                visualVmListHelper.UpdateCalcuProperty(calcuResult);
                #endregion
                #region 当前构件
                SelectVisual(_visual, eVisualSource.Calcu);
                #endregion
@@ -2400,23 +2394,23 @@
            }
            var dlg = new PumpParallelAnalyDlg();
            dlg.SetBindingData(vmList);
            dlg.ReloadDataEvent += (list) =>
            {
                list?.ForEach(x =>
                {
                    var pump = _hydroInfo.Pumps?.Find(t => t.Code == x.Code);
                    if (pump != null)
                    {
                        pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed;
                        pump.SpeedRatio = Math.Round(x.CurrentHz / pump.RatedHz, 1);
                    }
                });
                //ShowSelectedProperty();
                return true;
            };
            dlg.ShowDialog();
            //var dlg = new PumpParallelAnalyDlg();
            //dlg.SetBindingData(vmList);
            //dlg.ReloadDataEvent += (list) =>
            //{
            //    list?.ForEach(x =>
            //    {
            //        var pump = _hydroInfo.Pumps?.Find(t => t.Code == x.Code);
            //        if (pump != null)
            //        {
            //            pump.LinkStatus = x.RunStatus ? Yw.Hydro.PumpStatus.Open : Yw.Hydro.PumpStatus.Closed;
            //            pump.SpeedRatio = Math.Round(x.CurrentHz / pump.RatedHz, 1);
            //        }
            //    });
            //    //ShowSelectedProperty();
            //    return true;
            //};
            //dlg.ShowDialog();
        }
        //能效分析