using DevExpress.XtraCharts;
|
using DevExpress.XtraEditors;
|
using NPOI.HSSF.UserModel;
|
using NPOI.SS.UserModel;
|
using System.IO;
|
using Yw;
|
using Yw.WinFrmUI;
|
|
namespace IBox.WinFrmUI
|
{
|
public partial class IBoxFormEnergyAnalysis : DocumentPage
|
{
|
private string startCode = "[&start&]";
|
private string endCode = "[&end&]";
|
private string paramCode = "[¶m&]";
|
private string getenergyanalyCode = "getenergyanaly";//获取能耗分析数据
|
private string analydayCode = "analyday";//校验能耗分析
|
|
public IBoxFormEnergyAnalysis()
|
{
|
this.PageTitle.Caption = "能耗分析";
|
InitializeComponent();
|
|
_series_ysl.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
|
_series_ydl.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
|
_series_qds.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
|
|
((SideBySideBarSeriesLabel)_series_ysl.Label).Position = BarSeriesLabelPosition.Top;
|
((SideBySideBarSeriesLabel)_series_ydl.Label).Position = BarSeriesLabelPosition.Top;
|
|
_series_ysl.CrosshairLabelPattern = "用水量:{V:N2} m³";
|
_series_ydl.CrosshairLabelPattern = "用电量:{V:N2} kW·h";
|
_series_qds.CrosshairLabelPattern = "千吨水能耗:{V:N2} kW·h/km³";
|
}
|
|
private void InitDate()
|
{
|
this.dateEditStartDate.Text = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
|
this.dateEditEndDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
|
}
|
|
List<PumpEnergyViewModel> _models;
|
public void BindData(List<PumpEnergyViewModel> models)
|
{
|
_models = models;
|
this.pumpEnergyViewModelBindingSource.DataSource = models;
|
this.gridView4.RefreshData();
|
SetChart(models);
|
}
|
|
// private XYDiagram _diagram_xy { get { return this.chartControl1.Diagram as XYDiagram; } }
|
private Series _series_ysl { get { return this.chartControl1.Series[1]; } }
|
private Series _series_ydl { get { return this.chartControl1.Series[0]; } }
|
private Series _series_qds { get { return this.chartControl1.Series[2]; } }
|
|
private void SetChart(List<PumpEnergyViewModel> models)
|
{
|
this.chartControl1.BeginInit();
|
|
_series_ysl.Points.Clear();
|
_series_ydl.Points.Clear();
|
_series_qds.Points.Clear();
|
foreach (var item in models)
|
{
|
_series_ysl.Points.Add(new SeriesPoint(item.Day, item.Supply));
|
_series_ydl.Points.Add(new SeriesPoint(item.Day, item.Electricity));
|
_series_qds.Points.Add(new SeriesPoint(item.Day, item.EnergyOfWater));
|
}
|
|
|
this.chartControl1.EndInit();
|
}
|
|
private void EboxFormEnergyAnalysis_Load(object sender, EventArgs e)
|
{
|
InitDate();
|
Search();
|
}
|
|
private void Search()
|
{
|
var m = new GetCalcValueModel()
|
{
|
StartDate = DateTime.Parse(this.dateEditStartDate.EditValue.ToString()),
|
EndDate = DateTime.Parse(this.dateEditEndDate.EditValue.ToString()),
|
};
|
|
SendText(startCode + getenergyanalyCode + paramCode + JsonHelper.Object2Json(m) + endCode);
|
}
|
|
public event EventHandler<string> SendData;
|
private void SendText(string content)
|
{
|
//BluetoothHelper.GetInstance().SendData(content);
|
SendData?.Invoke(null, content);
|
}
|
/// <summary>
|
/// 查询
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void simpleButton1_Click(object sender, EventArgs e)
|
{
|
Search();
|
}
|
|
/// <summary>
|
/// 导出
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void simpleButton2_Click(object sender, EventArgs e)
|
{
|
ExportXLS();
|
}
|
|
public void ExportXLS()
|
{
|
try
|
{
|
if (_models == null || _models.Count == 0)
|
{
|
XtraMessageBox.Show("没有可导出的数据!");
|
return;
|
}
|
|
var dlg = new SaveFileDialog();
|
dlg.Filter = "EXCEL 文件(*.xls)|*.xls";
|
if (dlg.ShowDialog() != DialogResult.OK)
|
return;
|
|
HSSFWorkbook theBook = new HSSFWorkbook();
|
var theSheet1 = theBook.CreateSheet("Sheet1");
|
|
IRow rowTile = theSheet1.CreateRow(0);
|
rowTile.CreateCell(0).SetCellValue("日期");
|
rowTile.CreateCell(1).SetCellValue("用水量(m³)");
|
rowTile.CreateCell(2).SetCellValue("用电量(kW·h)");
|
rowTile.CreateCell(3).SetCellValue("千吨水能耗(kW·h/km³)");
|
|
|
for (int rowIndex = 1; rowIndex <= _models.Count; rowIndex++)
|
{
|
int col = 0;
|
IRow row = theSheet1.CreateRow(rowIndex);
|
var celValue = _models[rowIndex - 1].Day;
|
var dt = DateTime.Parse(celValue);
|
row.CreateCell(col).SetCellValue(celValue + " " + dt.ToString("dddd"));
|
col++;
|
row.CreateCell(col).SetCellValue((double)_models[rowIndex - 1].Supply);
|
col++;
|
row.CreateCell(col).SetCellValue((double)_models[rowIndex - 1].Electricity);
|
col++;
|
row.CreateCell(col).SetCellValue((double)_models[rowIndex - 1].EnergyOfWater);
|
col++;
|
}
|
|
//强制Excel在打开时重新计算所有公式
|
theSheet1.ForceFormulaRecalculation = true;
|
using (FileStream fs = File.OpenWrite(dlg.FileName))
|
{
|
theBook.Write(fs);
|
}
|
XtraMessageBox.Show("导出成功");
|
|
}
|
catch (Exception ex)
|
{
|
XtraMessageBox.Show(ex.ToString());
|
}
|
}
|
|
/// <summary>
|
/// 前三个月
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void simpleButton3_Click(object sender, EventArgs e)
|
{
|
this.dateEditStartDate.Text = DateTime.Now.AddMonths(-3).ToString("yyyy-MM-dd");
|
this.dateEditEndDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
|
Search();
|
}
|
|
/// <summary>
|
/// 前一个月
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void simpleButton4_Click(object sender, EventArgs e)
|
{
|
this.dateEditStartDate.Text = DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd");
|
this.dateEditEndDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
|
Search();
|
}
|
|
/// <summary>
|
/// 前半个月
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void simpleButton6_Click(object sender, EventArgs e)
|
{
|
this.dateEditStartDate.Text = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
|
this.dateEditEndDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
|
Search();
|
}
|
|
private void simpleButton5_Click(object sender, EventArgs e)
|
{
|
var dlg = new AnalyDayForm();
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
var dt = dlg.CurrDateTime;
|
SendText(startCode + analydayCode + paramCode + dt + endCode);
|
MessageBoxHelper.ShowInfo("操作成功");
|
}
|
}
|
|
private void gridView4_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
|
{
|
if (e.Column.FieldName == "Day")
|
{
|
var celValue = e.Value.ToString();
|
var dt = DateTime.Parse(celValue);
|
e.DisplayText = celValue + " " + dt.ToString("dddd");
|
}
|
}
|
}
|
|
}
|