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 _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]; } } public 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(); } 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 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>(result); BindData(model); } break; } default: IBoxHelper.HttpGet(content); break; } } else { MessageBoxHelper.ShowWarning("网络连接失败,请检查网络"); } } } /// /// 查询 /// /// /// 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(-3).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) { Check(); } /// /// 校验 /// 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"); } } } }