duheng
2024-12-23 3c918c55e51c67bbd48e1780967b547ee71845c1
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/02-pump/01-pumpsinglematching/SimulationPumpSingleMatchingDlg.cs
@@ -20,12 +20,14 @@
            public string OtherName { get; set; }
            public int Importance { get; set; }
            public int SortCode { get; set; }
            //    public PhartDiagramExGraphListVmo Diagram { get; set; }
            public long DiagramID { get; set; }
        }
        private HydroPumpMatchingViewModel _pump_matching_vm = null;
        private List<PumpSingleMatchingViewModel> _pump_mian_vm_list = null;
        private List<PhartViewModel> _phart_vm_list = null;
        private Vmo.AssetsPumpMainVmo _pumpVmo;
        private readonly Lazy<BLL.AssetsPumpMain> _pump_main_bll = new();
        private readonly Lazy<BLL.PhartDiagramRelation> _phart_ex_bll = new();
@@ -57,49 +59,34 @@
            }
            this.gridControlPumpMain.DataSource = _pump_mian_vm_list;
            this.gridControlPumpMain.RefreshDataSource();
            this.gridViewPumpMain.BestFitColumns();
            this.gridViewPumpMain.FocusedRowHandle = sel_index;
            // this.gridControlPumpMain.RefreshDataSource();
        }
        private void barBtnOK_ItemClick(object sender, ItemClickEventArgs e)
        {
            /*        var pump_mian = this.gridViewPumpMain.GetCurrentViewModel(_pump_mian_vm_list);
                    if (pump_mian == null)
                    {
                        TipFormHelper.ShowError("泵型号为空");
                        return;
                    }
                    var phart = this.gridViewCurve.GetCurrentViewModel(_phart_vm_list);
                    if (phart == null)
                    {
                        TipFormHelper.ShowError("泵型号曲线为空");
                        return;
                    }
            var pump_mian = this.gridViewPumpMain.GetCurrentViewModel(_pump_mian_vm_list);
            if (pump_mian == null)
            {
                TipFormHelper.ShowError("泵型号为空");
                return;
            }
            var phart = this.gridViewCurve.GetCurrentViewModel(_phart_vm_list);
            if (phart == null)
            {
                TipFormHelper.ShowError("泵型号曲线为空");
                return;
            }
                    var diagram = phart.Diagram;
                    if (!OutPtList
                        (diagram,
                        out List<Yw.Geometry.Point2d> qh_pt_list,
                        out List<Yw.Geometry.Point2d> qe_pt_list,
                        out List<Yw.Geometry.Point2d> qp_pt_list
                        ))
                    {
                        return;
                    }
                    _pump_matching_vm.MatchingDbId = pump_mian.ID.ToString();
                    _pump_matching_vm.MatchingModelType = pump_mian.Name.ToString();
                    _pump_matching_vm.MatchingRatedH = pump_mian.RatedHead;
                    _pump_matching_vm.MatchingRatedN = pump_mian.RatedSpeed;
                    _pump_matching_vm.MatchingRatedP = pump_mian.RatedPower;
                    _pump_matching_vm.MatchingRatedQ = pump_mian.RatedFlow;
            _pump_matching_vm.MatchingDbId = pump_mian.ID.ToString();
            _pump_matching_vm.MatchingModelType = pump_mian.Name.ToString();
            _pump_matching_vm.MatchingRatedH = pump_mian.RatedHead;
            _pump_matching_vm.MatchingRatedN = pump_mian.RatedSpeed;
            _pump_matching_vm.MatchingRatedP = pump_mian.RatedPower;
            _pump_matching_vm.MatchingRatedQ = pump_mian.RatedFlow;
                    _pump_matching_vm.MatchingCurveDbId = phart.ID.ToString();
                    _pump_matching_vm.MatchingCurveQH = qh_pt_list.Select(x => new HydroCurvePointViewModel(x.X, x.Y)).ToList();
                    _pump_matching_vm.MatchingCurveQE = qe_pt_list?.Select(x => new HydroCurvePointViewModel(x.X, x.Y)).ToList();
                    _pump_matching_vm.MatchingCurveQP = qp_pt_list?.Select(x => new HydroCurvePointViewModel(x.X, x.Y)).ToList();
                    this.ReloadDataEvent?.Invoke(_pump_matching_vm);*/
            this.ReloadDataEvent?.Invoke(_pump_matching_vm);
            this.Close();
        }
@@ -109,7 +96,9 @@
            var pump_main = this.gridViewPumpMain.GetCurrentViewModel(_pump_mian_vm_list);
            if (pump_main != null)
            {
                var phart_list = await _phart_ex_bll.Value.GetExByObjectTypeAndObjectID(HStation.Assets.DataType.PumpMain, pump_main.ID);
                var vmo = await new BLL.AssetsPumpMain().GetByID(pump_main.ID);
                _pumpVmo = vmo;
                var phart_list = await _phart_ex_bll.Value.GetByObjectTypeAndObjectID(HStation.Assets.DataType.PumpMain, pump_main.ID);
                if (phart_list != null && phart_list.Any())
                {
                    foreach (var item in phart_list)
@@ -120,77 +109,56 @@
                        vm.Importance = item.Importance;
                        vm.SortCode = item.SortCode;
                        //   vm.Diagram = item.Diagram;
                        vm.DiagramID = item.DiagramID;
                        _phart_vm_list.Add(vm);
                    }
                }
            }
            this.gridViewCurve.FocusInvalidRow();
            this.gridControlCurve.DataSource = _phart_vm_list;
            this.gridControlCurve.RefreshDataSource();
            this.phartViewModelBindingSource.DataSource = _phart_vm_list;
            //this.gridControlCurve.DataSource = _phart_vm_list;
            //this.gridViewCurve.RefreshData();
            this.phartViewModelBindingSource.ResetBindings(false);
            //this.gridViewCurve.FocusInvalidRow();
            gridViewCurve_FocusedRowChanged(null, null);
        }
        private void gridViewCurve_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        private async void gridViewCurve_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            var phart = this.gridViewCurve.GetCurrentViewModel(_phart_vm_list);
            if (phart == null)
            {
                this.xtrPerform2dChart1.Clear();
                //TipFormHelper.ShowWarn("无曲线");
                //this.pumpChartViewCtrl1.SetBindingData(null, 0);
                this.pumpChartViewCtrl1.ClearBindingData();
                return;
            }
            /*     var diagram = phart.Diagram;
                 if (!OutPtList
                     (diagram,
                     out List<Yw.Geometry.Point2d> qh_pt_list,
                     out List<Yw.Geometry.Point2d> qe_pt_list,
                     out List<Yw.Geometry.Point2d> qp_pt_list
                     ))
                 {
                     this.xtrPerform2dChart1.InitialChartData();
                     return;
                 }
                 var cubic_spline_qh = new Yw.Geometry.CubicSpline2d(qh_pt_list);
                 var cubic_spline_qe = new Yw.Geometry.CubicSpline2d(qe_pt_list);
                 var cubic_spline_qp = new Yw.Geometry.CubicSpline2d(qp_pt_list);
                 var disp_paras = diagram.DispParas;
                 var is_calc_disp_paras = string.IsNullOrWhiteSpace(disp_paras);
                 this.xtrPerform2dChart1.SetBindingData(cubic_spline_qh, cubic_spline_qe, cubic_spline_qp, disp_paras, is_calc_disp_paras);*/
        }
        /*        private bool OutPtList(
             //       PhartDiagramExGraphListVmo diagram,
                    out List<Yw.Geometry.Point2d> qh_pt_list,
                    out List<Yw.Geometry.Point2d> qe_pt_list,
                    out List<Yw.Geometry.Point2d> qp_pt_list
                    )
            var list = Task.Run(async () => await new BLL.PhartDiagramRelation().GetExByObjectTypeAndObjectID(HStation.Assets.DataType.PumpMain, _pumpVmo.ID)).Result;
            if (list != null && list.Count > 0)
            {
                var def = list.OrderByDescending(x => x.Importance).First();
                _pump_matching_vm.MatchingCurveDbId = def.ID.ToString();
                var diagram = def.Diagram.GetDefaultVmo();
                var qh = diagram.QH.GetFeatPointList();
                var qp = diagram.QP.GetFeatPointList();
                var qe = diagram.QE.GetFeatPointList();
                _pump_matching_vm.MatchingCurveQH = new List<HydroCurvePointViewModel>();
                _pump_matching_vm.MatchingCurveQP = new List<HydroCurvePointViewModel>();
                _pump_matching_vm.MatchingCurveQE = new List<HydroCurvePointViewModel>();
                foreach (var item in qh)
                {
                    qh_pt_list = null;
                    qe_pt_list = null;
                    qp_pt_list = null;
                    var graph_qh = diagram.GraphList.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.QH);
                    var graph_qe = diagram.GraphList.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.QE);
                    var graph_qp = diagram.GraphList.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.QP);
                    if (graph_qh == null)
                    {
                        this.xtrPerform2dChart1.InitialChartData();
                        return false;
                    }
                    qh_pt_list = PhartPerformCurveHelper.GetFeatPointList(graph_qh.GraphType, graph_qh.GeometryInfo, 100, null);
                    if (graph_qe != null)
                    {
                        qe_pt_list = PhartPerformCurveHelper.GetFeatPointList(graph_qe.GraphType, graph_qe.GeometryInfo, 100, null);
                    }
                    if (graph_qp != null)
                    {
                        qp_pt_list = PhartPerformCurveHelper.GetFeatPointList(graph_qp.GraphType, graph_qp.GeometryInfo, 100, null);
                    }
                    return true;
                    _pump_matching_vm.MatchingCurveQH.Add(new HydroCurvePointViewModel(item.X, item.Y));
                }
        */
                foreach (var item in qp)
                {
                    _pump_matching_vm.MatchingCurveQP.Add(new HydroCurvePointViewModel(item.X, item.Y));
                }
                foreach (var item in qe)
                {
                    _pump_matching_vm.MatchingCurveQE.Add(new HydroCurvePointViewModel(item.X, item.Y));
                }
            }
            var vmo = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.GetByID(phart.DiagramID);
            this.pumpChartViewCtrl1.SetBindingData(vmo, _pumpVmo.RatedSpeed);
        }
    }
}