using 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;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
using Yw.Model;
|
using Yw.Vmo;
|
|
namespace HStation.WinFrmUI
|
{
|
public partial class SimulationWorkingReportCtrl : DevExpress.XtraEditors.XtraUserControl
|
{
|
public SimulationWorkingReportCtrl()
|
{
|
InitializeComponent();
|
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<HydroMonitorVmo> allMonitorList,
|
HydroWorkingVmo working,
|
HydroCalcuResult calcuResult,
|
HydroVisualInfo visual
|
)
|
{
|
_project = project;
|
_hydroInfo = hydroInfo;
|
_allMonitorList = allMonitorList;
|
_working = working;
|
_calcuResult = calcuResult;
|
_visual = visual;
|
|
#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);
|
|
#endregion
|
|
#region 能耗分析
|
|
var energyGroup = this.layoutControl1.AddGroup();
|
energyGroup.Text = "能耗分析";
|
energyGroup.ExpandButtonVisible = true;
|
energyGroup.Expanded = true;
|
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);
|
|
#endregion
|
|
#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);
|
|
#endregion
|
|
#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);
|
|
#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<SimulationWorkingReportViewModel> GetViewModel()
|
{
|
var vm = new SimulationWorkingReportViewModel();
|
vm.ReportType = "模拟工况运行报告";
|
vm.Info = new SimulationReportInfoItemViewModel()
|
{
|
Name = _project.Name,
|
Description = _project.Description,
|
};
|
vm.Pumps = new List<SimulationReportPumpItemViewModel>();
|
var pumps = _hydroInfo.Pumps;
|
foreach (var pump in _hydroInfo.Pumps)
|
{
|
var pumpItem = new 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 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;
|
}
|
|
|
}
|
}
|