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 _models; public void BindData(List 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 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 SendData; private void SendText(string content) { //BluetoothHelper.GetInstance().SendData(content); SendData?.Invoke(null, content); } /// /// 查询 /// /// /// private void simpleButton1_Click(object sender, EventArgs e) { Search(); } /// /// 导出 /// /// /// 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()); } } /// /// 前三个月 /// /// /// private void simpleButton3_Click(object sender, EventArgs e) { this.dateEditStartDate.Text = DateTime.Now.AddMonths(-30).ToString("yyyy-MM-dd"); this.dateEditEndDate.Text = DateTime.Now.ToString("yyyy-MM-dd"); Search(); } /// /// 前一个月 /// /// /// 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(); } /// /// 前半个月 /// /// /// 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"); } } } }