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
|
{
|
|
|
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³";
|
}
|
|
public void InitDate()
|
{
|
this.dateEditStartDate.Text = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
|
this.dateEditEndDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
|
}
|
|
public void HideButton()
|
{
|
//simpleButton1.Visible = simpleButton2.Visible = simpleButton5.Visible = false;
|
layoutControlItem3.Visibility = layoutControlItem4.Visibility = layoutControlItem10.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
|
}
|
|
List<PumpEnergyViewModel> _models;
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
/// <param name="models"></param>
|
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]; } }
|
|
public 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();
|
}
|
|
public void Search()
|
{
|
var m = new GetCalcValueModel()
|
{
|
StartDate = DateTime.Parse(this.dateEditStartDate.EditValue.ToString()),
|
EndDate = DateTime.Parse(this.dateEditEndDate.EditValue.ToString()),
|
};
|
|
SendText(IBoxHelper.startCode + IBoxHelper.getenergyanalyCode + IBoxHelper.paramCode + JsonHelper.Object2Json(m) + IBoxHelper.endCode);
|
}
|
|
public event EventHandler<string> SendData;
|
private void SendText(string content)
|
{
|
if (SendData != null)
|
{
|
SendData?.Invoke(null, content);
|
|
}
|
else
|
{
|
if (IBoxHelper.Ping())
|
{
|
var smsg = content.Split(new string[] { IBoxHelper.paramCode,IBoxHelper.startCode }, StringSplitOptions.RemoveEmptyEntries);
|
if (smsg.Length < 2)
|
{
|
return;
|
}
|
switch (smsg[0].Trim())
|
{
|
case IBoxHelper.getenergyanalyCode:
|
{
|
var order = IBoxHelper.HttpGet(content);
|
var result = IBoxHelper.GetContent(order);
|
if (!string.IsNullOrEmpty(result))
|
{
|
var model = JsonHelper.Json2Object<List<PumpEnergyViewModel>>(result);
|
BindData(model);
|
}
|
break;
|
}
|
default:
|
IBoxHelper.HttpGet(content);
|
break;
|
}
|
}
|
else
|
{
|
MessageBoxHelper.ShowWarning("网络连接失败,请检查网络");
|
}
|
}
|
}
|
/// <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)
|
{
|
Check();
|
}
|
|
/// <summary>
|
/// 校验
|
/// </summary>
|
public void Check()
|
{
|
var dlg = new AnalyDayForm();
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
var dt = dlg.CurrDateTime;
|
SendText(IBoxHelper.startCode + IBoxHelper.analydayCode + IBoxHelper.paramCode + dt + IBoxHelper.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");
|
}
|
}
|
}
|
|
}
|