From 058adb7d84fa39cf4fc5ff1ab6ea337db6c21423 Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期二, 24 十二月 2024 09:42:57 +0800
Subject: [PATCH] 增加报告泵曲线信息字段

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/12-report/02-helper/SimulationWorkingReportCtrl.cs |  291 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 169 insertions(+), 122 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/12-report/02-helper/SimulationWorkingReportCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/12-report/02-helper/SimulationWorkingReportCtrl.cs
index 0e02685..0282f6e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/12-report/02-helper/SimulationWorkingReportCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/12-report/02-helper/SimulationWorkingReportCtrl.cs
@@ -1,5 +1,8 @@
 锘縰sing DevExpress.XtraEditors;
 using DevExpress.XtraLayout;
+using DevExpress.XtraLayout.Utils;
+using DevExpress.XtraRichEdit.Model;
+using NPOI.HPSF;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -9,6 +12,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using Yw.Model;
 using Yw.Vmo;
 
 namespace HStation.WinFrmUI
@@ -21,50 +25,59 @@
             this.layoutControl1.SetupLayoutControl();
         }
 
+        private SimulationProjectTitleCtrl _titleCtrl = null;
         private SimulationPumpSingleWorkingChartCtrl _workingChart = null;
         private HydroSingleWorkingLossCurveCtrl _lossCurve = null;
         private HydroSingleWorkingLossStatisticsCtrl _lossStatistics = null;
 
+        private XhsProjectVmo _project = null;
+        private Yw.Model.HydroModelInfo _hydroInfo = null;
+        private List<HydroMonitorVmo> _allMonitorList = null;
+        private HydroWorkingVmo _working = null;
+        private HydroCalcuResult _calcuResult = null;
+        private HydroVisualInfo _visual;
 
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
         public void SetBindingData
             (
+                XhsProjectVmo project,
                 Yw.Model.HydroModelInfo hydroInfo,
-                List<HydroWorkingVmo> allWorkingList,
-                List<HydroMonitorValueViewModel> allMonitorValueList
+                List<HydroMonitorVmo> allMonitorList,
+                HydroWorkingVmo working,
+                HydroCalcuResult calcuResult,
+                HydroVisualInfo visual
             )
         {
-            if (hydroInfo == null)
-            {
-                return;
-            }
+            _project = project;
+            _hydroInfo = hydroInfo;
+            _allMonitorList = allMonitorList;
+            _working = working;
+            _calcuResult = calcuResult;
+            _visual = visual;
 
+            #region 椤圭洰淇℃伅
 
-            #region 淇℃伅
+            var projectGroup = this.layoutControl1.AddGroup();
+            projectGroup.Text = "椤圭洰淇℃伅";
+            projectGroup.ExpandButtonVisible = true;
+            projectGroup.Expanded = false;
+            projectGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
+            projectGroup.ExpandOnDoubleClick = true;
+            _titleCtrl = new SimulationProjectTitleCtrl();
+            _titleCtrl.SetBindingData(project);
+            var basicItem = projectGroup.AddItem("椤圭洰淇℃伅", _titleCtrl);
+            basicItem.TextVisible = false;
+            basicItem.Height = 120;
+            projectGroup.BestFit();
+            projectGroup.LayoutMode = LayoutMode.Regular;
+            projectGroup.AllowBorderColorBlending = true;
+            projectGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
 
-            //var basicGroup = this.layoutControl1.AddGroup();
-            //basicGroup.Text = "宸ュ喌淇℃伅";
-            //basicGroup.ExpandButtonVisible = true;
-            //basicGroup.Expanded = false;
-            //basicGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
-            //basicGroup.ExpandOnDoubleClick = true;
-            //var basicCtrl = new SetHydroWorkingBasicCtrl();
-            //basicCtrl.SetBindingData(_hydroWorking);
-            //var basicItem = basicGroup.AddItem("宸ュ喌淇℃伅", basicCtrl);
-            //basicItem.TextVisible = false;
-            //basicItem.Height = 120;
-            //basicGroup.BestFit();
-            //basicGroup.LayoutMode = LayoutMode.Regular;
-            //basicGroup.AllowBorderColorBlending = true;
-            //basicGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
-            //_basicCtrl = basicCtrl;
-
-            #endregion
+            #endregion 椤圭洰淇℃伅
 
             #region 鑳借�楀垎鏋�
-
 
             var energyGroup = this.layoutControl1.AddGroup();
             energyGroup.Text = "鑳借�楀垎鏋�";
@@ -73,111 +86,145 @@
             energyGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
             energyGroup.ExpandOnDoubleClick = true;
             _workingChart = new SimulationPumpSingleWorkingChartCtrl();
+            _workingChart.SetBindingData(working, hydroInfo, allMonitorList, calcuResult);
             var energyItem = energyGroup.AddItem("鑳借�楀垎鏋�", _workingChart);
             energyItem.TextVisible = false;
+            energyItem.Height = 250;
+            energyGroup.BestFit();
+            energyGroup.LayoutMode = LayoutMode.Regular;
+            energyGroup.AllowBorderColorBlending = true;
+            energyGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
 
-            //if (hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0)
-            //{
-            //    var group = this.layoutControl1.AddGroup();
-            //    group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Reservoir);
-            //    group.ExpandButtonVisible = true;
-            //    group.Expanded = true;
-            //    group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
-            //    group.ExpandOnDoubleClick = true;
-            //    foreach (var visual in hydroInfo.Reservoirs)
-            //    {
-            //        var visualCtrl = new SetHydroWorkingReservoirCtrl();
-            //        visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
-            //        var workingInfo = new HydroWorkingReservoirViewModel(visual);
-            //        _working.WorkingInfo.AppendWorking(workingInfo);
-            //        visualCtrl.SetBindingData(visual, workingInfo);
-            //        var item = group.AddItem(visual.Name, visualCtrl);
-            //        item.TextVisible = false;
-            //        _visualCtrlList.Add(visualCtrl);
-            //    }
-            //    group.BestFit();
-            //    group.LayoutMode = LayoutMode.Flow;
-            //    group.AllowBorderColorBlending = true;
-            //    group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
-            //    foreach (LayoutControlItem item in group.Items)
-            //    {
-            //        item.Size = new Size(200, 80);
-            //    }
-            //}
+            #endregion 鑳借�楀垎鏋�
 
-            #endregion
+            #region 鎹熷け鏇茬嚎
 
-            //#region 姘存睜
+            var lossCurveGroup = this.layoutControl1.AddGroup();
+            lossCurveGroup.Text = "鎹熷け鏇茬嚎";
+            lossCurveGroup.ExpandButtonVisible = true;
+            lossCurveGroup.Expanded = false;
+            lossCurveGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
+            lossCurveGroup.ExpandOnDoubleClick = true;
+            _lossCurve = new HydroSingleWorkingLossCurveCtrl();
+            _lossCurve.SetBindingData(hydroInfo, calcuResult, visual);
+            var lossCurveItem = lossCurveGroup.AddItem("鎹熷け鏇茬嚎", _lossCurve);
+            lossCurveItem.TextVisible = false;
+            lossCurveItem.Height = 250;
+            lossCurveGroup.BestFit();
+            lossCurveGroup.LayoutMode = LayoutMode.Regular;
+            lossCurveGroup.AllowBorderColorBlending = true;
+            lossCurveGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
 
-            //var tanks = hydroInfo.GetAllTanks();
-            //if (tanks != null && tanks.Count > 0)
-            //{
-            //    var group = this.layoutControl1.AddGroup();
-            //    group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Tank);
-            //    group.ExpandButtonVisible = true;
-            //    group.Expanded = true;
-            //    group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
-            //    group.ExpandOnDoubleClick = true;
-            //    foreach (var visual in tanks)
-            //    {
-            //        var visualCtrl = new SetHydroWorkingTankCtrl();
-            //        visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
-            //        var workingInfo = new HydroWorkingTankViewModel(visual);
-            //        _working.WorkingInfo.AppendWorking(workingInfo);
-            //        visualCtrl.SetBindingData(visual, workingInfo);
-            //        var item = group.AddItem(visual.Name, visualCtrl);
-            //        item.TextVisible = false;
-            //        _visualCtrlList.Add(visualCtrl);
-            //    }
-            //    group.BestFit();
-            //    group.LayoutMode = LayoutMode.Flow;
-            //    group.AllowBorderColorBlending = true;
-            //    group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
-            //    foreach (LayoutControlItem item in group.Items)
-            //    {
-            //        item.Size = new Size(200, 80);
-            //    }
-            //}
+            #endregion 鎹熷け鏇茬嚎
 
-            //#endregion
+            #region 鎹熷け缁熻
 
-            //#region 姘存车
+            var lossStatisticsGroup = this.layoutControl1.AddGroup();
+            lossStatisticsGroup.Text = "鎹熷け缁熻";
+            lossStatisticsGroup.ExpandButtonVisible = true;
+            lossStatisticsGroup.Expanded = false;
+            lossStatisticsGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
+            lossStatisticsGroup.ExpandOnDoubleClick = true;
+            _lossStatistics = new HydroSingleWorkingLossStatisticsCtrl();
+            _lossStatistics.SetBindingData(hydroInfo, calcuResult);
+            var lossStatisticsItem = lossStatisticsGroup.AddItem("鎹熷け缁熻", _lossStatistics);
+            lossStatisticsItem.TextVisible = false;
+            lossStatisticsItem.Height = 250;
+            lossStatisticsGroup.BestFit();
+            lossStatisticsGroup.LayoutMode = LayoutMode.Regular;
+            lossStatisticsGroup.AllowBorderColorBlending = true;
+            lossStatisticsGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
 
-            //if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
-            //{
-            //    var group = this.layoutControl1.AddGroup();
-            //    group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump);
-            //    group.ExpandButtonVisible = true;
-            //    group.Expanded = true;
-            //    group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
-            //    group.ExpandOnDoubleClick = true;
-            //    foreach (var visual in hydroInfo.Pumps)
-            //    {
-            //        var visualCtrl = new SetHydroWorkingPumpCtrl();
-            //        visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
-            //        var workingInfo = new HydroWorkingPumpViewModel(visual);
-            //        _working.WorkingInfo.AppendWorking(workingInfo);
-            //        visualCtrl.SetBindingData(visual, workingInfo);
-            //        var item = group.AddItem(visual.Name, visualCtrl);
-            //        item.TextVisible = false;
-            //        _visualCtrlList.Add(visualCtrl);
-            //    }
-            //    group.BestFit();
-            //    group.LayoutMode = LayoutMode.Flow;
-            //    group.AllowBorderColorBlending = true;
-            //    group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
-            //    foreach (LayoutControlItem item in group.Items)
-            //    {
-            //        item.Size = new Size(200, 100);
-            //    }
-            //}
-
-            //#endregion
-
-
-
-
+            #endregion 鎹熷け缁熻
         }
 
+        private const string _tempFoler = "workingImageTemp";
+        private const string _energyAnalyImageFileName = "energy_analy.png";
+        private const string _lossCurveImageFileName = "loss_curve.png";
+        private const string _energyInputImageFileName = "energy_input.png";
+        private const string _energyLossImageFileName = "energy_loss.png";
+        private const string _energyStatisticsImageFileName = "energy_statistics.png";
+
+        //鑾峰彇鍥剧墖璺緞
+        private string GetImageFilePath(string fileName)
+        {
+            var tempFolder = Path.Combine(Yw.Service.ConfigHelper.DataPath, HStation.Settings.XhsParasHelper.Xhs.DataFolder, _tempFoler);
+            //濡傛灉瀛樺湪涓存椂鏂囦欢澶癸紝鍒欏垹闄や复鏃舵枃浠跺す鍙婂瓙鐩綍涓庢枃浠�
+            if (!Directory.Exists(tempFolder))
+            {
+                Directory.CreateDirectory(tempFolder);
+            }
+            //鍒涘缓涓存椂鏂囦欢澶�
+
+            return Path.Combine(tempFolder, fileName);
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙嗗浘
+        /// </summary>
+        public async Task<HStation.ReportFile.SimulationWorkingReportViewModel> GetViewModel()
+        {
+            var vm = new HStation.ReportFile.SimulationWorkingReportViewModel();
+            vm.ReportType = "妯℃嫙宸ュ喌杩愯鎶ュ憡";
+            vm.Info = new HStation.ReportFile.SimulationReportInfoItemViewModel()
+            {
+                Name = _project.Name,
+                Description = _project.Description,
+            };
+            vm.Pumps = new List<HStation.ReportFile.SimulationReportPumpItemViewModel>();
+            var pumps = _hydroInfo.Pumps;
+            foreach (var pump in _hydroInfo.Pumps)
+            {
+                var pumpItem = new HStation.ReportFile.SimulationReportPumpItemViewModel();
+                pumpItem.Name = pump.Name;
+                pumpItem.ModelType = pumpItem.ModelType;
+                pumpItem.SerialNO = (_hydroInfo.Pumps.IndexOf(pump) + 1).ToString();
+                pumpItem.RatedQ = $"{pump.RatedQ ?? 0}m鲁/h";
+                pumpItem.RatedH = $"{pump.RatedH ?? 0}m";
+                pumpItem.RatedP = $"{pump.RatedP}kW";
+                pumpItem.RatedN = $"{pump.RatedN ?? 0}r/min";
+                vm.Pumps.Add(pumpItem);
+                var pumpDb = await BLLFactory<HStation.BLL.AssetsPumpMain>.Instance.GetByIDEx(long.Parse(pump.DbId));
+                if (pumpDb != null)
+                {
+                    if (pumpDb.PropContent != null && pumpDb.PropContent.Count > 0)
+                    {
+                        var ratedUProp = pumpDb.PropContent.Find(x => x.TagName == HStation.Assets.PumpDataType.RatedVoltage);
+                        if (ratedUProp != null)
+                        {
+                            pumpItem.RatedU = ratedUProp.PropValue;
+                        }
+                        var ratedIProp = pumpDb.PropContent.Find(x => x.TagName == HStation.Assets.PumpDataType.RatedCurrent);
+                        if (ratedIProp != null)
+                        {
+                            pumpItem.RatedI = ratedIProp.PropValue;
+                        }
+                        var ratedFProp = pumpDb.PropContent.Find(x => x.TagName == HStation.Assets.PumpDataType.RatedFactor);
+                        if (ratedFProp != null)
+                        {
+                            pumpItem.RatedF = ratedFProp.PropValue;
+                        }
+                    }
+                }
+            }
+            vm.Working = new HStation.ReportFile.SimulationReportWorkingItemViewModel();
+            vm.Working.Name = _working.Name;
+            if (string.IsNullOrEmpty(vm.Working.Name))
+            {
+                vm.Working.Name = "褰撳墠璁$畻宸ュ喌";
+            }
+            vm.Working.EnergyAnalyImagePath = GetImageFilePath(_energyAnalyImageFileName);
+            _workingChart.ExportToImage(vm.Working.EnergyAnalyImagePath);
+            vm.Working.LossCurveImagePath = GetImageFilePath(_lossCurveImageFileName);
+            _lossCurve.ExportToImage(vm.Working.LossCurveImagePath);
+            vm.Working.EnergyInputImagePath = GetImageFilePath(_energyInputImageFileName);
+            _lossStatistics.ExportInputToImage(vm.Working.EnergyInputImagePath);
+            vm.Working.EnergyLossImagePath = GetImageFilePath(_energyLossImageFileName);
+            _lossStatistics.ExportLossToImage(vm.Working.EnergyLossImagePath);
+            vm.Working.EnergyStatisticsImagePath = GetImageFilePath(_energyStatisticsImageFileName);
+            _lossStatistics.ExportStatisticsToImage(vm.Working.EnergyStatisticsImagePath);
+
+            return vm;
+        }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3