duheng
2025-02-19 ad8f813f5eddd66740b4e09801e4ea02ddf70a4a
继续优化报表
已修改2个文件
344 ■■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/99-test/XtraReport1.cs 197 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -20,20 +20,19 @@
            RegistBulkSetEvents();
        }
        #region 模型事件
        /// <summary>
        /// 获取模型事件
        /// </summary>
        public event Func<XhsSchemeVmo, Task<Yw.Model.HydroModelInfo>> GetModelEvent;
        /// <summary>
        /// 刷新模型事件
        /// </summary>
        public event Func<Task<Yw.Model.HydroModelInfo>> RefreshModelEvent;
        #endregion
        #endregion 模型事件
        #region 方案事件
@@ -41,12 +40,13 @@
        /// 更新方案事件
        /// </summary>
        public event Action<XhsSchemeVmo> UpdateSchemeEvent;
        /// <summary>
        /// 移除方案事件
        /// </summary>
        public event Action<XhsSchemeVmo> RemoveSchemeEvent;
        #endregion
        #endregion 方案事件
        #region 工况事件
@@ -54,20 +54,23 @@
        /// 新增工况事件
        /// </summary>
        public event Action<HydroWorkingVmo> AppendWorkingEvent;
        /// <summary>
        /// 更新工况事件
        /// </summary>
        public event Action<HydroWorkingVmo> UpdateWorkingEvent;
        /// <summary>
        /// 移除工况事件
        /// </summary>
        public event Action<HydroWorkingVmo> RemoveWorkingEvent;
        /// <summary>
        /// 重载工况事件
        /// </summary>
        public event Action<Dictionary<HydroWorkingVmo, bool>> ReloadWorkingEvent;
        #endregion
        #endregion 工况事件
        private HStation.Vmo.XhsProjectVmo _project = null;//项目
        private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//项目站
@@ -262,7 +265,7 @@
            return helper.GetPropStatusDbList();
        }
        #endregion
        #endregion 属性状态
        #region 更改状态
@@ -311,7 +314,7 @@
            return helper.GetRemoveParters();
        }
        #endregion
        #endregion 更改状态
        #region BIM控件
@@ -355,7 +358,7 @@
            this.tabPageBimface.Controls.Add(bimfaceCtrl);
        }
        #endregion
        #endregion BIM控件
        #region Q3d控件
@@ -392,7 +395,7 @@
            this.tabPageQ3d.Controls.Add(q3dCtrl);
        }
        #endregion
        #endregion Q3d控件
        #region 属性控件
@@ -534,7 +537,7 @@
            _propertyCtrl?.UpdateRows();
        }
        #endregion
        #endregion 属性控件
        #region 选择构件
@@ -704,7 +707,7 @@
            return helper.GetSourceList();
        }
        #endregion
        #endregion 可见列表
        #region 视图列表
@@ -741,7 +744,7 @@
            return helper.GetVisual(code);
        }
        #endregion
        #endregion 视图列表
        #region 明细控件
@@ -843,7 +846,7 @@
            ShowVisualListCtrl();
        }
        #endregion
        #endregion 明细控件
        #region 构件显示
@@ -894,7 +897,7 @@
        #endregion 构件显示
        #endregion
        #endregion 构件明细
        #region 一键显隐
@@ -944,6 +947,7 @@
        //保存锁定对象
        private object _locker_save = new();
        private bool _isSaving = false;//正在保存
        //保存
@@ -986,10 +990,8 @@
            WaitFormHelper.ShowWaitForm("正在保存,请稍后...");
            var bol = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance
                .Update(_hydroInfo, addParterList, updateParterList, removeParters);
            if (!bol)
            {
@@ -1612,7 +1614,7 @@
            }
        }
        #endregion
        #endregion 批量配置
        #region 构件查询
@@ -1755,7 +1757,7 @@
            markHelper.Set();
        }
        #endregion
        #endregion 模型标注
        #region 颜色分级
@@ -1837,7 +1839,7 @@
            gradingHelper.Set();
        }
        #endregion
        #endregion 颜色分级
        #region 人工刷新
@@ -1864,7 +1866,7 @@
            }
        }
        #endregion
        #endregion 人工刷新
        #region 监测点
@@ -1903,7 +1905,7 @@
            return await helper.GetAnalyseList();
        }
        #endregion
        #endregion 监测点
        #region 监测值
@@ -2517,8 +2519,7 @@
            UpdatePropertyCtrl();
        }
        #endregion
        #endregion 压力切换
        #region 评价规则
@@ -2571,7 +2572,7 @@
            ShowEvaluationDlg();
        }
        #endregion
        #endregion 评价规则
        #region 水力计算
@@ -2685,7 +2686,7 @@
            Calcu();
        }
        #endregion
        #endregion 水力计算
        #region 导出报告
@@ -2715,7 +2716,7 @@
                allWorkingList = new List<HydroWorkingVmo>() { working };
            }
            #endregion
            #endregion 工况列表
            #region 选择节点
@@ -2725,7 +2726,7 @@
                return default;
            }
            #endregion
            #endregion 选择节点
            var vm = new SimulationPrintViewModel();
@@ -2737,7 +2738,7 @@
                return vm;
            }
            #endregion
            #endregion 项目
            #region 水泵列表
@@ -2747,14 +2748,14 @@
                    return pump;
                }).ToList();
            #endregion
            #endregion 水泵列表
            #region 附加信息
            var allMonitorList = await GetMonitorList();
            var allEvaluationList = await GetEvaluationList();
            #endregion
            #endregion 附加信息
            #region 基础模型
@@ -2765,7 +2766,7 @@
            }
            var baseHydroInfoRhs = baseHydroInfo.Adapt<Yw.Model.HydroModelInfo>();
            #endregion
            #endregion 基础模型
            #region 遍历工况
@@ -2792,7 +2793,7 @@
                printWorking.LossCurve = HydroLossCurveHelper.Create(baseHydroInfoRhs, working, selectedNode, calcuResult, _calcuPressModeIsHead, allEvaluationList);
            }
            #endregion
            #endregion 遍历工况
            #region 方案处理
@@ -2824,8 +2825,7 @@
                }
            }
            #endregion
            #endregion 方案处理
            return vm;
        }
@@ -2834,46 +2834,46 @@
        private async void barBtnExportWord_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var printInfo = await CreatePrintInfo();
            var printDlg = new SimulationCommonReportDlg();
            var printDlg = new HStation.WinFrmUI.XtraForm1();
            printDlg.SetBindingData(printInfo);
            printDlg.ShowDialog();
            if (_visual == null)
            {
                SelectInputSource();
                if (_visual == null)
            /*    if (_visual == null)
                {
                    TipFormHelper.ShowWarn("请选择构件后重试!");
                    return;
                    SelectInputSource();
                    if (_visual == null)
                    {
                        TipFormHelper.ShowWarn("请选择构件后重试!");
                        return;
                    }
                }
            }
            HydroVisualInfo visual = _visual;
            if (_visual is HydroLinkInfo linkInfo)
            {
                var visualListHelper = GetVisualListHelper();
                visual = visualListHelper.GetVisual(linkInfo.StartCode);
            }
            var allMonitorList = await GetMonitorList();
            var working = GetWorking();
            var calcuResult = GetCalcuResult();
            var dlg = new SimulationWorkingReportDlg();
            dlg.ReloadDataEvent += (vm) =>
            {
                var fileName = FileDialogHelper.SaveWordDoc("导出Word报告");
                if (string.IsNullOrEmpty(fileName))
                HydroVisualInfo visual = _visual;
                if (_visual is HydroLinkInfo linkInfo)
                {
                    return;
                    var visualListHelper = GetVisualListHelper();
                    visual = visualListHelper.GetVisual(linkInfo.StartCode);
                }
                var reportHelper = new HStation.ReportFile.SimulationWorkingReportHelper();
                reportHelper.Create(fileName, vm);
                TipFormHelper.ShowInfo("导出成功!");
            };
            dlg.SetBindingData(_project, _hydroInfo, allMonitorList, working, calcuResult, visual);
            dlg.ShowDialog();
                var allMonitorList = await GetMonitorList();
                var working = GetWorking();
                var calcuResult = GetCalcuResult();
                var dlg = new SimulationWorkingReportDlg();
                dlg.ReloadDataEvent += (vm) =>
                {
                    var fileName = FileDialogHelper.SaveWordDoc("导出Word报告");
                    if (string.IsNullOrEmpty(fileName))
                    {
                        return;
                    }
                    var reportHelper = new HStation.ReportFile.SimulationWorkingReportHelper();
                    reportHelper.Create(fileName, vm);
                    TipFormHelper.ShowInfo("导出成功!");
                };
                dlg.SetBindingData(_project, _hydroInfo, allMonitorList, working, calcuResult, visual);
                dlg.ShowDialog();*/
        }
        #endregion
        #endregion 导出报告
        #region 当前工况
@@ -2938,7 +2938,7 @@
            AddWorking();
        }
        #endregion
        #endregion 当前工况
        #region 选择工况
@@ -3035,7 +3035,7 @@
            dlg.ShowDialog();
        }
        #endregion
        #endregion 选择工况
        #region 监测分析
@@ -3120,7 +3120,7 @@
            ShowMonitorAnalyListCtrl();
        }
        #endregion
        #endregion 监测分析
        #region 工况分析
@@ -3326,7 +3326,7 @@
            }
        }
        #endregion
        #endregion 工况分析
        #region 损失曲线
@@ -3429,7 +3429,7 @@
            dlg.ShowDialog();
        }
        #endregion
        #endregion 损失曲线
        #region 方案管理
@@ -3505,10 +3505,5 @@
        }
        #endregion 方案管理
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/99-test/XtraReport1.cs
@@ -134,7 +134,7 @@
                headerRowPumpList.Cells.Add(CreateTableCell("编码", 100));
                headerRowPumpList.Cells.Add(CreateTableCell("额定流量", 100));
                headerRowPumpList.Cells.Add(CreateTableCell("额定扬程", 100));
                headerRowPumpList.Cells.Add(CreateTableCell("额定功率", 100));
                headerRowPumpList.Cells.Add(CreateTableCell("额定功率(KW)", 100));
                headerRowPumpList.Cells.Add(CreateTableCell("额定转速", 100));
                // 将表头行添加到表格
@@ -369,12 +369,19 @@
                            // 创建 XY 图表
                            XYDiagram xyDiagram = new XYDiagram();
                            ((System.ComponentModel.ISupportInitialize)(xyDiagram)).BeginInit();
                            // 设置 X 轴主要网格线可见
                            xyDiagram.AxisX.GridLines.Visible = true;
                            // 设置 X 轴主要刻度间隔,可根据需求调整该值,值越小网格越密
                            xyDiagram.AxisX.Tickmarks.Thickness = 1;
                            // 设置 Y 轴主要网格线可见
                            xyDiagram.AxisY.GridLines.Visible = true;
                            // 设置 Y 轴主要刻度间隔,可根据需求调整该值,值越小网格越密
                            xyDiagram.AxisX.Tickmarks.Thickness = 1;
                            // 配置主 X 轴
                            xyDiagram.AxisX.Title.Text = "流量(m³/h)";
                            xyDiagram.AxisX.Title.Visibility = DefaultBoolean.True;
                            xyDiagram.AxisX.Visibility = DefaultBoolean.True;
                            xyDiagram.AxisX.Alignment = AxisAlignment.Far; // 将 X 轴设置在图表底部
                            // 配置主 Y 轴
                            xyDiagram.AxisY.Title.Text = "扬程/m";
@@ -392,15 +399,23 @@
                            // 创建次要 Y 轴
                            SecondaryAxisY secondaryAxisY1 = new SecondaryAxisY("Secondary Y-Axis 1");
                            secondaryAxisY1.Title.Text = "功率";
                            secondaryAxisY1.Title.Text = "功率(KW)";
                            secondaryAxisY1.Title.Visibility = DefaultBoolean.True;
                            secondaryAxisY1.Visibility = DefaultBoolean.True;
                            secondaryAxisY1.GridLines.Visible = true;
                            secondaryAxisY1.Tickmarks.Thickness = 1;
                            secondaryAxisY1.GridLines.Color = Color.LightGray;
                            xyDiagram.SecondaryAxesY.Add(secondaryAxisY1);
                            SecondaryAxisY secondaryAxisY2 = new SecondaryAxisY("Secondary Y-Axis 2");
                            secondaryAxisY2.Title.Text = "效率";
                            secondaryAxisY2.Title.Text = "效率(%)";
                            secondaryAxisY2.Title.Visibility = DefaultBoolean.True;
                            secondaryAxisY2.Visibility = DefaultBoolean.True;
                            secondaryAxisY2.GridLines.Visible = true;
                            secondaryAxisY2.Tickmarks.Thickness = 1;
                            secondaryAxisY2.GridLines.Color = Color.LightGray;
                            xyDiagram.SecondaryAxesY.Add(secondaryAxisY2);
                            chart.Diagram = xyDiagram;
@@ -538,54 +553,112 @@
                                this.Detail.Controls.Add(label);
                                currentY += 20F;
                                XRChart chartQh = new XRChart();
                                chartQh.LocationF = new DevExpress.Utils.PointFloat(0F, currentY);
                                chartQh.WidthF = contentWidth;
                                chartQh.HeightF = 300F;
                                XRChart chart = new XRChart();
                                ((System.ComponentModel.ISupportInitialize)(chart)).BeginInit();
                                chart.LocationF = new DevExpress.Utils.PointFloat(0F, currentY);
                                chart.WidthF = contentWidth;
                                chart.HeightF = 600F;
                                chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
                                XRChart chartQE = new XRChart();
                                chartQE.LocationF = new DevExpress.Utils.PointFloat(0F, currentY + chartQh.HeightF);
                                chartQE.WidthF = contentWidth;
                                chartQE.HeightF = 300F;
                                // 创建 XY 图表
                                XYDiagram xyDiagram = new XYDiagram();
                                ((System.ComponentModel.ISupportInitialize)(xyDiagram)).BeginInit();
                                XRChart chartQP = new XRChart();
                                chartQP.LocationF = new DevExpress.Utils.PointFloat(0F, currentY + chartQh.HeightF + chartQE.HeightF);
                                chartQP.WidthF = contentWidth;
                                chartQP.HeightF = 300F;
                                // 设置 X 轴主要网格线可见
                                xyDiagram.AxisX.GridLines.Visible = true;
                                // 设置 X 轴主要刻度间隔,可根据需求调整该值,值越小网格越密
                                xyDiagram.AxisX.Tickmarks.Thickness = 1;
                                // 设置 Y 轴主要网格线可见
                                xyDiagram.AxisY.GridLines.Visible = true;
                                // 设置 Y 轴主要刻度间隔,可根据需求调整该值,值越小网格越密
                                xyDiagram.AxisX.Tickmarks.Thickness = 1;
                                // 配置主 X 轴
                                xyDiagram.AxisX.Title.Text = "流量(m³/h)";
                                xyDiagram.AxisX.Title.Visibility = DefaultBoolean.True;
                                xyDiagram.AxisX.Visibility = DefaultBoolean.True;
                                // 配置主 Y 轴
                                xyDiagram.AxisY.Title.Text = "扬程/m";
                                xyDiagram.AxisY.Title.Visibility = DefaultBoolean.True;
                                xyDiagram.AxisY.Visibility = DefaultBoolean.True;
                                //xyDiagram.AxisY.Alignment = AxisAlignment.Zero; // 设置 Y 轴与 X 轴共用零点
                                // 创建两个面板
                                XYDiagramPane pane1 = new XYDiagramPane();
                                pane1.Name = "Pane 1";
                                xyDiagram.Panes.Add(pane1);
                                XYDiagramPane pane2 = new XYDiagramPane();
                                pane2.Name = "Pane 2";
                                xyDiagram.Panes.Add(pane2);
                                // 创建次要 Y 轴
                                SecondaryAxisY secondaryAxisY1 = new SecondaryAxisY("Secondary Y-Axis 1");
                                secondaryAxisY1.Title.Text = "功率(KW)";
                                secondaryAxisY1.Title.Visibility = DefaultBoolean.True;
                                secondaryAxisY1.Visibility = DefaultBoolean.True;
                                secondaryAxisY1.GridLines.Visible = true;
                                secondaryAxisY1.Tickmarks.Thickness = 1;
                                secondaryAxisY1.GridLines.Color = Color.LightGray;
                                xyDiagram.SecondaryAxesY.Add(secondaryAxisY1);
                                SecondaryAxisY secondaryAxisY2 = new SecondaryAxisY("Secondary Y-Axis 2");
                                secondaryAxisY2.Title.Text = "效率(%)";
                                secondaryAxisY2.Title.Visibility = DefaultBoolean.True;
                                secondaryAxisY2.Visibility = DefaultBoolean.True;
                                secondaryAxisY2.GridLines.Visible = true;
                                secondaryAxisY2.Tickmarks.Thickness = 1;
                                secondaryAxisY2.GridLines.Color = Color.LightGray;
                                xyDiagram.SecondaryAxesY.Add(secondaryAxisY2);
                                chart.Diagram = xyDiagram;
                                ((System.ComponentModel.ISupportInitialize)(xyDiagram)).EndInit();
                                ((System.ComponentModel.ISupportInitialize)(chart)).EndInit();
                                foreach (var valve in item)
                                {
                                    // 创建一个线系列
                                    Series series = new Series(valve.Code, ViewType.Spline);
                                    // 添加数据点
                                    foreach (var qh in valve.CurrentCurveQH)
                                    // 创建第一个系列
                                    Series series1 = new Series("Series 1", ViewType.Spline);
                                    if (valve.CurrentCurveQH != null)
                                    {
                                        series.Points.Add(new SeriesPoint(qh.X.ToString(), qh.Y.ToString()));
                                        foreach (var qh in valve.CurrentCurveQH)
                                        {
                                            series1.Points.Add(new SeriesPoint(qh.X, qh.Y));
                                        }
                                        series1.LabelsVisibility = DefaultBoolean.False;
                                        chart.Series.Add(series1);
                                    }
                                    chartQh.Series.Add(series);
                                    Series series2 = new Series("Series2", ViewType.Spline);
                                    // 添加数据点
                                    foreach (var qe in valve.CurrentCurveQE)
                                    // 创建第二个系列
                                    Series series2 = new Series("Series 2", ViewType.Spline);
                                    if (valve.CurrentCurveQE != null)
                                    {
                                        series2.Points.Add(new SeriesPoint(qe.X.ToString(), qe.Y.ToString()));
                                        foreach (var qe in valve.CurrentCurveQE)
                                        {
                                            series2.Points.Add(new SeriesPoint(qe.X, qe.Y));
                                        }
                                    ((XYDiagramSeriesViewBase)series2.View).Pane = pane2;
                                        ((XYDiagramSeriesViewBase)series2.View).AxisY = secondaryAxisY2;
                                        series2.LabelsVisibility = DefaultBoolean.False;
                                        chart.Series.Add(series2);
                                    }
                                    chartQE.Series.Add(series2);
                                    Series series3 = new Series("Series3", ViewType.Spline);
                                    // 添加数据点
                                    foreach (var qp in valve.CurrentCurveQP)
                                    // 创建第三个系列
                                    Series series3 = new Series("Series 3", ViewType.Spline);
                                    if (valve.RatedCurveQP != null)
                                    {
                                        series3.Points.Add(new SeriesPoint(qp.X.ToString(), qp.Y.ToString()));
                                        foreach (var qp in valve.RatedCurveQP)
                                        {
                                            series3.Points.Add(new SeriesPoint(qp.X, qp.Y));
                                        }
                                    ((XYDiagramSeriesViewBase)series3.View).Pane = pane1;
                                        ((XYDiagramSeriesViewBase)series3.View).AxisY = secondaryAxisY1;
                                        series3.LabelsVisibility = DefaultBoolean.False;
                                        chart.Series.Add(series3);
                                    }
                                    chartQP.Series.Add(series3);
                                }
                                this.Detail.Controls.Add(chartQh);
                                this.Detail.Controls.Add(chartQE);
                                this.Detail.Controls.Add(chartQP);
                                currentY += chartQh.HeightF + chartQE.HeightF + chartQP.HeightF;
                                Detail.Controls.Add(chart);
                                currentY += chart.HeightF;
                            }
                        }
                    }
@@ -661,12 +734,46 @@
                            });
                            dataRow.Cells.Add(new XRTableCell()
                            {
                                Text = item.CurrentQ?.ToString(),
                                Text = item.CurrentQ?.ToString("F2"),
                                WidthF = 100F,
                                TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter,
                                Borders = DevExpress.XtraPrinting.BorderSide.All
                            });
                            dataRow.Cells.Add(new XRTableCell()
                            {
                                Text = item.CurrentPr1?.ToString("F2"),
                                WidthF = 100F,
                                TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter,
                                Borders = DevExpress.XtraPrinting.BorderSide.All
                            });
                            dataRow.Cells.Add(new XRTableCell()
                            {
                                Text = item.CurrentPr2?.ToString("F2"),
                                WidthF = 100F,
                                TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter,
                                Borders = DevExpress.XtraPrinting.BorderSide.All
                            });
                            dataRow.Cells.Add(new XRTableCell()
                            {
                                Text = item.CurrentH?.ToString("F2"),
                                WidthF = 100F,
                                TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter,
                                Borders = DevExpress.XtraPrinting.BorderSide.All
                            });
                            dataRow.Cells.Add(new XRTableCell()
                            {
                                Text = item.CurrentP?.ToString("F2"),
                                WidthF = 100F,
                                TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter,
                                Borders = DevExpress.XtraPrinting.BorderSide.All
                            });
                            dataRow.Cells.Add(new XRTableCell()
                            {
                                Text = item.CurrentE?.ToString("F2"),
                                WidthF = 100F,
                                TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleCenter,
                                Borders = DevExpress.XtraPrinting.BorderSide.All
                            });
                            tableForEnergyDetails.Rows.Add(dataRow);
                        }
                        // 将表格添加到Detail
@@ -692,11 +799,14 @@
                        chart.LocationF = new DevExpress.Utils.PointFloat(0F, currentY);
                        chart.WidthF = contentWidth;
                        chart.HeightF = 300F;
                        chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
                        // 创建一个线系列
                        Series series = new Series("Series1", ViewType.Area);
                        Series series2 = new Series("Series2", ViewType.Area);
                        Series series3 = new Series("Series3", ViewType.Area);
                        series.LabelsVisibility = DefaultBoolean.False;
                        series2.LabelsVisibility = DefaultBoolean.False;
                        series3.LabelsVisibility = DefaultBoolean.False;
                        // 添加数据点
                        foreach (var item in working.LossCurve.End.Items)
                        {
@@ -739,6 +849,7 @@
                    currentY += accuracyScaleChart.HeightF;
                    var CategoryChart = CreateCategory(working.LossStatistics, 727F, 230F, 0F, currentY);
                    Detail.Controls.Add(CategoryChart);
                    currentY += CategoryChart.HeightF;
                }
            }