using System.Collections.Generic; using System; using System.Drawing.Drawing2D; using System.IO; using System.Text; using System.Linq; using System.Runtime.InteropServices.ComTypes; using DevExpress.XtraCharts.Native; using DevExpress.Utils.MVVM; namespace IStation.WinFrmUI.Monitor { public partial class HistoryDataDlg : DocumentPage { public HistoryDataDlg() { InitializeComponent(); this.PageTitle.Caption = "历史数据"; this.SurfaceGuid = new SurfaceGuid() { Modular = eModular.Basic, Function = this.PageTitle.Caption }; this.gridView1.SetNormalView(); this.gridView1.OptionsView.ShowDetailButtons = true; this.gridView1.OptionsDetail.ShowDetailTabs = false; } private List _historyDatas =new List(); string connect1; string connect2; string connect3; string connect4; string connect5; List filteredList = new List(); //过滤选择后绑定的list //初始化 private void HistoryDataDlg_Load(object sender, System.EventArgs e) { WaitFrmHelper.ShowWaitForm(); HistoryDataHelper historyDataHelper = new HistoryDataHelper(); filteredList = historyDataHelper.GetHistoryData(); foreach (var item in filteredList) { string[] arr1 = item.pump1.Split(new char[] { ';' }); if (arr1.Length > 1) connect1 = arr1[0] + Environment.NewLine + arr1[1]; else connect1 = arr1[0]; string[] arr2 = item.pump2.Split(new char[] { ';' }); if (arr2.Length > 1) connect2 = arr2[0]+ Environment.NewLine + arr2[1]; else connect2 = arr2[0]; string[] arr3 = item.pump3.Split(new char[] { ';' }); if (arr3.Length > 1) connect3 = arr3[0] + Environment.NewLine + arr3[1]; else connect3 = arr3[0]; string[] arr4 = item.pump4.Split(new char[] { ';' }); if (arr4.Length > 1) connect4 = arr4[0] + Environment.NewLine + arr4[1]; else connect4 = arr4[0]; string[] arr5 = item.pump5.Split(new char[] { ';' }); if (arr5.Length > 1) connect5 = arr5[0] + Environment.NewLine + arr5[1]; else connect5 = arr5[0]; var a = new HistoryDataHelper { DateTime = item.DateTime, electricity = item.electricity, water = item.water, pump1 = connect1, pump2 = connect2, pump3 = connect3, pump4 = connect4, pump5 = connect5, }; _historyDatas.Add(a); connect1 = null; connect2=null; connect3=null; connect4=null; connect5= null; } RefreshByDay(); WaitFrmHelper.HideWaitForm(); } //刷新时间 private void BtnRefresh_Click(object sender, EventArgs e) { RefreshByDay(); } private void RefreshByDay() { HistoryDataHelper historyDataHelper = new HistoryDataHelper(); string Starttime=this.BtnStartYear.EditValue + "/"+this.BtnStartMonth.EditValue; int daysInMonth = DateTime.DaysInMonth(Convert.ToInt32( BtnEndYear.EditValue), Convert.ToInt32( BtnEndMonth.EditValue)); // 构建新的日期对象,将日期设置为该月的最后一天 DateTime EndTimeLastDay = new DateTime(Convert.ToInt32(BtnEndYear.EditValue), Convert.ToInt32(BtnEndMonth.EditValue), daysInMonth); filteredList = _historyDatas .Where(item => item.DateTime >= Convert.ToDateTime( Starttime) && item.DateTime <=Convert.ToDateTime(EndTimeLastDay)) .ToList(); this.HistorybindingSource.DataSource = filteredList; this.HistorybindingSource.ResetBindings(true); TimeSpan timeSpan1=TimeSpan.FromHours(0); TimeSpan timeSpan2 = TimeSpan.FromHours(0); TimeSpan timeSpan3 = TimeSpan.FromHours(0); ; TimeSpan timeSpan4 = TimeSpan.FromHours(0); ; TimeSpan timeSpan5 = TimeSpan.FromHours(0); double arevageElectricity=0; //平均用电量 double waterElectricity = 0; //平均取水量 foreach (var item in filteredList) { arevageElectricity += item.electricity; } foreach (var item in filteredList) { waterElectricity += item.water; } var timeList=historyDataHelper.GetDataModel(filteredList); foreach (var item in timeList) { foreach (var time in item.timespan1) { timeSpan1+= Convert.ToDateTime( time.EndTime) -Convert.ToDateTime( time.StartTime); } foreach (var time in item.timespan2) { timeSpan2 += Convert.ToDateTime(time.EndTime) - Convert.ToDateTime(time.StartTime); } foreach (var time in item.timespan3) { timeSpan3 += Convert.ToDateTime(time.EndTime) - Convert.ToDateTime(time.StartTime); } foreach (var time in item.timespan4) { timeSpan4 += Convert.ToDateTime(time.EndTime) - Convert.ToDateTime(time.StartTime); } foreach (var time in item.timespan5) { timeSpan5 += Convert.ToDateTime(time.EndTime) - Convert.ToDateTime(time.StartTime); } } this.TimeSpan1.Text = Math.Round(timeSpan1.TotalHours/timeList.Count,0).ToString(); this.TimeSpan2.Text = Math.Round(timeSpan2.TotalHours / timeList.Count, 0).ToString(); this.TimeSpan3.Text = Math.Round(timeSpan3.TotalHours / timeList.Count, 0).ToString(); this.TimeSpan4.Text = Math.Round(timeSpan4.TotalHours / timeList.Count, 0).ToString(); this.TimeSpan5.Text = Math.Round(timeSpan5.TotalHours / timeList.Count, 0).ToString(); this.arevageWater.Text= Math.Round( waterElectricity/ filteredList.Count,2).ToString(); this.arevageElectricity.Text = Math.Round(arevageElectricity/filteredList.Count, 2).ToString(); } } }