Shuxia Ning
2024-12-02 0fd4a678c2218c42d383e964a6b4aca975aa7b7a
WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump-main/XhsPumpMainPhartPanel.cs
@@ -1,8 +1,4 @@
using DevExpress.CodeParser;
using Org.BouncyCastle.Asn1.X509;
using Yw.Pump;
namespace HStation.WinFrmUI.PhartRelation
namespace HStation.WinFrmUI.PhartRelation
{
    public partial class XhsPumpMainPhartPanel : DocumentPage
    {
@@ -12,19 +8,70 @@
            this.PageTitle.Caption = "泵型号曲线";
            this.xhsPumpMainPhartListCtrl1.FocusedChangedEvent += XhsPumpMainPhartListCtrl1_FocusedChangedEvent;
            this.pumpPerformInfoCtrl1.SetDesignPointEvent += (q, h) =>
            {
                _design_pt = new Yw.Geometry.Point2d(q, h);
                this.xtrPerform2dChart1.SetEquipPt(_design_pt);
            };
            this.xtrPerform2dChart1.OnCalcQueryPoint += (gropu_pt) =>
            {
                var vm_list = new List<Yw.WinFrmUI.Phart.PumpPointItmeViewModel>();
                vm_list.Add(new Yw.WinFrmUI.Phart.PumpPointItmeViewModel()
                {
                    Group = "查询点",
                    Name = "流量",
                    Value = $"{gropu_pt.Q:N1}",
                    Unit = "m³/h"
                });
                vm_list.Add(new Yw.WinFrmUI.Phart.PumpPointItmeViewModel()
                {
                    Group = "查询点",
                    Name = "扬程",
                    Value = $"{gropu_pt.H:N1}",
                    Unit = "m"
                });
                vm_list.Add(new Yw.WinFrmUI.Phart.PumpPointItmeViewModel()
                {
                    Group = "查询点",
                    Name = "效率",
                    Value = $"{gropu_pt.E:N1}",
                    Unit = "%"
                });
                vm_list.Add(new Yw.WinFrmUI.Phart.PumpPointItmeViewModel()
                {
                    Group = "查询点",
                    Name = "功率",
                    Value = $"{gropu_pt.P:N1}",
                    Unit = "kW"
                });
                this.pumpPerformInfoCtrl1.SetBindingData(vm_list);
            };
        }
        private long _pump_main_id;
        private Vmo.AssetsPumpMainVmo _pump_main;
        private Vmo.XhsPumpMainPhartMappingExtensions _xhs_phart_diagram_ex_std_dto = null;
        private readonly BLL.XhsPumpMainPhartMappingExtensions _bll_ex = new();
        private Yw.Geometry.Point2d _design_pt;
        /// <summary>
        /// 初始化数据
        /// </summary>
        public void InitialDataSource(long pump_main_id)
        public async void InitialDataSource(long pump_main_id)
        {
            _pump_main_id = pump_main_id;
            if (_pump_main_id < 1)
            {
                this.xhsPumpMainPhartListCtrl1.Clear();
                return;
            }
            _pump_main = await new BLL.AssetsPumpMain().GetByID(_pump_main_id);
            if (_pump_main == null)
            {
                this.xhsPumpMainPhartListCtrl1.Clear();
                return;
@@ -35,28 +82,26 @@
        //选择曲线变换事件
        private void XhsPumpMainPhartListCtrl1_FocusedChangedEvent(Vmo.XhsPumpMainPhartMappingExtensions obj)
        {
            _design_pt = null;
            _xhs_phart_diagram_ex_std_dto = obj;
            InitChart(_xhs_phart_diagram_ex_std_dto);
            InitChart(_pump_main, _xhs_phart_diagram_ex_std_dto);
        }
        #region 图表
        //初始化图表数据
        private void InitChart(Vmo.XhsPumpMainPhartMappingExtensions dto)
        private Tuple<Yw.Geometry.CubicSpline2d, Yw.Geometry.CubicSpline2d, Yw.Geometry.CubicSpline2d> Get(Vmo.XhsPumpMainPhartMappingExtensions dto)
        {
            if (dto == null)
            {
                return;
                return default;
            }
            var diagram = dto.Diagram;
            if (diagram == null)
            {
                return;
                return default;
            }
            var graph_list = diagram.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
                return;
                return default;
            }
            var graph_qh = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQH);
@@ -65,9 +110,8 @@
            if (graph_qh == null)
            {
                return;
                return default;
            }
            List<Yw.Geometry.Point2d> points_qh = null, points_qe = null, points_qp = null;
            points_qh = PhartPerformCurveHelper.GetFeatPointList(graph_qh.GraphType, graph_qh.GeometryInfo, 12, null);
@@ -80,9 +124,46 @@
            var cubic_spline_qe = new Yw.Geometry.CubicSpline2d(points_qe);
            var cubic_spline_qp = new Yw.Geometry.CubicSpline2d(points_qp);
            return new Tuple<Yw.Geometry.CubicSpline2d, Yw.Geometry.CubicSpline2d, Yw.Geometry.CubicSpline2d>(cubic_spline_qh, cubic_spline_qe, cubic_spline_qp);
        }
        #region 图表
        //初始化图表数据
        private void InitChart(Vmo.AssetsPumpMainVmo pump_main, Vmo.XhsPumpMainPhartMappingExtensions dto)
        {
            if (pump_main == null)
            {
                return;
            }
            if (dto == null)
            {
                return;
            }
            var diagram = dto.Diagram;
            if (diagram == null)
            {
                return;
            }
            var tuple = Get(dto);
            if (tuple == null)
            {
                return;
            }
            var cubic_spline_qh = tuple.Item1;
            var cubic_spline_qe = tuple.Item2;
            var cubic_spline_qp = tuple.Item3;
            if (_design_pt == null)
            {
                _design_pt = new Yw.Geometry.Point2d();
                _design_pt.X = Math.Round(cubic_spline_qh.MaxX / 2);
                _design_pt.Y = Math.Round(cubic_spline_qh.GetPointY(_design_pt.X), 1);
            }
            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);
            this.pumpPerformInfoCtrl1.SetDesignPoint(_design_pt);
        }
        //清空图表数据
@@ -98,7 +179,7 @@
        //Excel 导入
        private void barBtnImportByExcel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var dlg = new Yw.WinFrmUI.Phart.ImportCurveByExcelDlg();
            var dlg = new Yw.WinFrmUI.Phart.PumpImportByExcelDlg();
            dlg.ReloadDataEvent += async (other_name, qh, qe, qp) =>
            {
                var bol = await Import(other_name, qh, qe, qp);
@@ -110,13 +191,24 @@
        //图片 导入
        private void barBtnImportByPicture_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraMessageBox.Show("待补充!");
            var dlg = new Yw.WinFrmUI.Phart.ImportPumpPerform2dByPictureDlg();
            dlg.ReloadDataEvent += async (other_name, qh, qe, qp) =>
            {
                var bol = await Import(other_name, qh, qe, qp);
                return bol;
            };
            dlg.ShowDialog();
        }
        //单点 导入
        private void barBtnImportByOnePoint_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var dlg = new Yw.WinFrmUI.Phart.ImportCurveByOnePointDlg();
            var dlg = new Yw.WinFrmUI.Phart.PumpImportByOnePointDlg();
            if (_pump_main != null)
            {
                dlg.Set(_pump_main.RatedFlow, _pump_main.RatedHead, _pump_main.RatedSpeed, _pump_main.RatedEfficiency);
            }
            dlg.ReloadDataEvent += async (other_name, qh, qe, qp) =>
            {
                var bol = await Import(other_name, qh, qe, qp);
@@ -178,7 +270,7 @@
            return true;
        }
        #endregion
        #endregion 导入
        #region 操作
@@ -225,12 +317,10 @@
                qp = new Yw.Pump.CurveQP(Yw.Pump.eFeatType.Cubic, points_qp);
            }
            var dlg = new Yw.WinFrmUI.Phart.XtrPerform2dEditDlg();
            var dlg = new Yw.WinFrmUI.Phart.PumpEditChartDlg();
            dlg.SetBindingData(qh, qe, qp);
            dlg.ReloadDataEvent += async (new_qh, new_qe, new_qp) =>
            {
                var new_points_qh = new_qh.GetPointList();
                var new_points_qe = new_qe.GetPointList();
                var new_points_qp = new_qp.GetPointList();
@@ -245,10 +335,10 @@
                    graph_qe,
                    graph_qp,
                };
                var bol =  await _bll_ex.Update(_xhs_phart_diagram_ex_std_dto);
                var bol = await _bll_ex.Update(_xhs_phart_diagram_ex_std_dto);
                if (bol)
                {
                    InitChart(_xhs_phart_diagram_ex_std_dto);
                    InitChart(_pump_main, _xhs_phart_diagram_ex_std_dto);
                }
                return bol;
            };
@@ -303,6 +393,141 @@
            dlg.ShowDialog();
        }
        //变速
        private void barBtnVariableSpeed_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (_xhs_phart_diagram_ex_std_dto == null)
            {
                return;
            }
            if (_pump_main == null)
            {
                return;
            }
            var tuple = Get(_xhs_phart_diagram_ex_std_dto);
            if (tuple == null)
            {
                return;
            }
            //var vm = new Yw.WinFrmUI.Phart.PumpVariableSpeedViewModel();
            //vm.Id = _xhs_phart_diagram_ex_std_dto.ID.ToString();
            //vm.Name = $"{_pump_main.RatedSpeed}";
            //vm.RatedSpeed = _pump_main.RatedSpeed;
            //vm.CurrentSpeed = _pump_main.RatedSpeed;
            //vm.CurrentHz = 50;
            //vm.Qh = tuple.Item1;
            //vm.Qe = tuple.Item2;
            //vm.Qp = tuple.Item3;
            //var dlg = new PumpVariableSpeedChartDlg();
            //dlg.SetBindingData(vm, null);
            //dlg.ShowDialog();
            //var vm = new Yw.WinFrmUI.Phart.PumpWorkViewModel();
            //vm.Id = _xhs_phart_diagram_ex_std_dto.ID.ToString();
            //vm.Name = $"{_pump_main.RatedSpeed}";
            //vm.RatedSpeed = _pump_main.RatedSpeed;
            //vm.CurrentSpeed = _pump_main.RatedSpeed/2;
            //vm.CurrentHz = 50/2;
            //vm.Qh = tuple.Item1;
            //vm.Qe = tuple.Item2;
            //vm.Qp = tuple.Item3;
            //vm.WorkPoint = new Yw.Geometry.Point2d(15,16);
            //var vm1 = new Yw.WinFrmUI.Phart.PumpWorkViewModel();
            //vm1.Id = _xhs_phart_diagram_ex_std_dto.ID.ToString()+"1";
            //vm1.Name = $"{_pump_main.RatedSpeed}";
            //vm1.RatedSpeed = _pump_main.RatedSpeed;
            //vm1.CurrentSpeed = _pump_main.RatedSpeed / 1.6;
            //vm1.CurrentHz = 50 /1.6;
            //vm1.Qh = tuple.Item1;
            //vm1.Qe = tuple.Item2;
            //vm1.Qp = tuple.Item3;
            //vm1.WorkPoint = new Yw.Geometry.Point2d(12, 19);
            //var dlg = new PumpWorkComparisonChartDlg();
            //dlg.SetBindingData(new List<Yw.WinFrmUI.Phart.PumpWorkViewModel>() { vm,vm1});
            //dlg.ShowDialog();
            var vm = new Yw.WinFrmUI.Phart.PumpWorkViewModel();
            vm.Id = _xhs_phart_diagram_ex_std_dto.ID.ToString();
            vm.Name = $"{_pump_main.RatedSpeed}";
            vm.RatedSpeed = _pump_main.RatedSpeed;
            vm.CurrentSpeed = _pump_main.RatedSpeed / 2;
            vm.CurrentHz = 50 / 2;
            vm.Qh = tuple.Item1;
            vm.Qe = tuple.Item2;
            vm.Qp = tuple.Item3;
            vm.RunStatus = true;
            vm.WorkPoint = new Yw.Geometry.Point2d(15, 16);
            var dlg = new PumpWorkChartDlg();
            dlg.SetBindingData(vm);
            dlg.ShowDialog();
        }
        //复制并延长
        private void barBtnCopyAndExpand_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (_xhs_phart_diagram_ex_std_dto == null)
            {
                return;
            }
            var diagram = _xhs_phart_diagram_ex_std_dto.Diagram;
            if (diagram == null)
            {
                return;
            }
            var graph_list = diagram.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
                return;
            }
            var graph_qh = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQH);
            var graph_qe = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQE);
            var graph_qp = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQP);
            if (graph_qh == null)
            {
                return;
            }
            Yw.Pump.CurveQH qh = null;
            Yw.Pump.CurveQE qe = null;
            Yw.Pump.CurveQP qp = null;
            List<Yw.Geometry.Point2d> points_qh = null, points_qe = null, points_qp = null;
            points_qh = PhartPerformCurveHelper.GetFeatPointList(graph_qh.GraphType, graph_qh.GeometryInfo, 12, null);
            qh = new Yw.Pump.CurveQH(Yw.Pump.eFeatType.Cubic, points_qh);
            if (graph_qe != null)
            {
                points_qe = PhartPerformCurveHelper.GetFeatPointList(graph_qe.GraphType, graph_qe.GeometryInfo, 12, null);
                qe = new Yw.Pump.CurveQE(Yw.Pump.eFeatType.Cubic, points_qe);
            }
            if (graph_qp != null)
            {
                points_qp = PhartPerformCurveHelper.GetFeatPointList(graph_qp.GraphType, graph_qp.GeometryInfo, 12, null);
                qp = new Yw.Pump.CurveQP(Yw.Pump.eFeatType.Cubic, points_qp);
            }
            var dlg = new PumpCurveExpandDlg();
            dlg.SetBindingData(qh, qe, qp);
            dlg.ReloadDataEvent += async (new_qh, new_qe, new_qp) =>
            {
                var other_name = $"{_xhs_phart_diagram_ex_std_dto.OtherName}-复制延长";
                var bol = await Import(other_name, new_qh, new_qe, new_qp);
                return bol;
            };
            dlg.ShowDialog();
        }
        #region 删除
        //删除
@@ -337,6 +562,5 @@
        #endregion 操作
    }
}