using DevExpress.XtraEditors;
|
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
|
using MathNet.Numerics;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel.DataAnnotations;
|
using System.Linq;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
|
namespace IStation.WinFrmUI.Monitor
|
{
|
public partial class DataIntegrationPage : DocumentPage
|
{
|
public DataIntegrationPage()
|
{
|
InitializeComponent();
|
this.PageTitle.Caption = "数据整合";
|
this.stationListCtrl1.FocusedChangedEvent += StationListCtrl1_FocusedChangedEvent;
|
this.monitorDataSourcesTreeList1.FocusedChangedEvent += MonitorDataSourcesListCtrl1_FocusedChangedEvent;
|
this.gridView1.SetNormalView();
|
this.colTime.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
|
this.colTime.DisplayFormat.FormatString = "G";
|
}
|
|
public class CurrentViewModel
|
{
|
[Display(Name = "年月")]
|
public string YearMonth { get; set; }
|
|
[Display(Name = "时间")]
|
public DateTime Time { get; set; }
|
|
[Display(Name = "运行工况")]
|
public string RunFlags { get; set; }
|
|
[Display(Name = "转速列表")]
|
public string RpmList { get; set; }
|
|
[Display(Name = "扬程列表")]
|
public string HeadList { get; set; }
|
|
[Display(Name = "总流量")]
|
public double TotalFlow { get; set; }
|
|
[Display(Name = "总功率")]
|
public double TotalPower { get; set; }
|
}
|
|
private BLL.StationSignalRecordPacket _bll = new BLL.StationSignalRecordPacket();
|
private Model.Station _station = null;
|
private Model.MonitorDataSources _monitorDataSources = null;
|
private List<CurrentViewModel> _allBindingList = null;
|
|
/// <summary>
|
/// 清空数据
|
/// </summary>
|
public void Clear()
|
{
|
_allBindingList = new List<CurrentViewModel>();
|
this.currentViewModelBindingSource.DataSource = _allBindingList;
|
}
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public override void InitialDataSource()
|
{
|
this.stationListCtrl1.SetBindingData();
|
this.monitorDataSourcesTreeList1.SetBindingData();
|
}
|
|
//泵站变换
|
private void StationListCtrl1_FocusedChangedEvent(Model.Station obj)
|
{
|
_station = obj;
|
SetBindingData(_monitorDataSources, _station);
|
}
|
|
//来源变换
|
private void MonitorDataSourcesListCtrl1_FocusedChangedEvent(Model.MonitorDataSources obj)
|
{
|
_monitorDataSources = obj;
|
SetBindingData(_monitorDataSources, _station);
|
}
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData(Model.MonitorDataSources monitorDataSources, Model.Station station)
|
{
|
_allBindingList = new List<CurrentViewModel>();
|
this.currentViewModelBindingSource.DataSource = _allBindingList;
|
if (monitorDataSources == null || station == null)
|
{
|
return;
|
}
|
if (this.barCekLoad.Checked)
|
{
|
return;
|
}
|
var packets = _bll.Get(_monitorDataSources.ID, _station.ID);
|
SetBindingData(packets);
|
}
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData(List<Model.StationSignalRecordPacket> packets)
|
{
|
WaitFrmHelper.ShowWaitForm();
|
_allBindingList = new List<CurrentViewModel>();
|
if (packets != null && packets.Any())
|
{
|
foreach (var packet in packets)
|
{
|
var station_signal_records = packet.StationSignalRecords;
|
if (station_signal_records == null || !station_signal_records.Any())
|
continue;
|
var year_month = $"{packet.Year}-{packet.Month}";
|
foreach (var record in station_signal_records)
|
{
|
var pump_signal_records = record.PumpSignalRecords;
|
if (pump_signal_records == null || !pump_signal_records.Any())
|
continue;
|
pump_signal_records = pump_signal_records.OrderBy(x => x.Flag).ToList();
|
|
var total_power = pump_signal_records.Sum(x => x.InstantaneousPower);
|
var run_flags = pump_signal_records.Select(x => x.Flag).ToList();
|
var rpm_list = pump_signal_records.Select(x =>
|
{
|
if (x.Rpm == 0 && (x.Flag == 15 || x.Flag == 16))
|
{
|
return 590;
|
}
|
return x.Rpm;
|
}).ToList();
|
var head_list = pump_signal_records.Select(x =>
|
{
|
return Math.Round(x.Head, 2);
|
}).ToList();
|
|
|
var vm = new CurrentViewModel();
|
vm.YearMonth = year_month;
|
vm.Time = record.Time;
|
vm.RunFlags = IStation.Untity.IntListHelper.ToString(run_flags);
|
vm.RpmList = IStation.Untity.DoubleListHelper.ToString(rpm_list);
|
vm.HeadList = IStation.Untity.DoubleListHelper.ToString(head_list);
|
vm.TotalPower = Math.Round(total_power, 1);
|
_allBindingList.Add(vm);
|
}
|
}
|
}
|
|
|
this.currentViewModelBindingSource.DataSource = _allBindingList;
|
WaitFrmHelper.HideWaitForm();
|
}
|
|
//整合
|
private void barBtnIntegration_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_monitorDataSources == null || _station == null)
|
return;
|
var dlg = new SetTimeStepDlg();
|
dlg.ReloadDataEvent += (timeStep) =>
|
{
|
Task.Run(() =>
|
{
|
this.Invoke(new Action(() =>
|
{
|
AlertTool.ShowInfo(Application.OpenForms[0], "提示", "开始整合!");
|
}));
|
var packets = _bll.AnalysisAndSave(_monitorDataSources.ID, _station.ID, timeStep);
|
this.Invoke(new Action(() =>
|
{
|
SetBindingData(packets);
|
AlertTool.ShowInfo(Application.OpenForms[0], "提示", "整合完成!");
|
}));
|
|
});
|
|
};
|
dlg.ShowDialog();
|
}
|
|
//
|
private void barCekLoad_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
SetBindingData(_monitorDataSources, _station);
|
}
|
|
//自定义组名
|
private void gridView1_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
|
{
|
var vm = this.gridView1.GetRow(e.RowHandle) as CurrentViewModel;
|
var grid = e.Info as GridGroupRowInfo;
|
if (grid.Level == 0)
|
{ grid.GroupText = vm.YearMonth;
|
}
|
else if (grid.Level == 1)
|
{
|
grid.GroupText = vm.RunFlags;
|
}
|
}
|
|
#region 菜单
|
|
//全部展开
|
private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.gridView1.ExpandAllGroups();
|
}
|
|
//全部折叠
|
private void barBtnCollapseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.gridView1.CollapseAllGroups();
|
}
|
|
//检索
|
private void barCekSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (this.barCekSearch.Checked)
|
this.gridView1.ShowFindPanel();
|
else
|
this.gridView1.HideFindPanel();
|
}
|
|
// 刷新数据
|
private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
InitialDataSource();
|
}
|
|
|
|
|
#endregion
|
|
#region 导出
|
|
private void barBtnExportEpanet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_monitorDataSources == null || _station == null)
|
{
|
XtraMessageBox.Show("无数据!");
|
return;
|
}
|
var dlg = new SetTimeStepDlg();
|
dlg.SetBindingData(300);
|
dlg.ReloadDataEvent += (timeStep) =>
|
{
|
WaitFrmHelper.ShowWaitForm("正在导出");
|
ExportEpanetHelper.Export(_monitorDataSources.ID, _station.ID, timeStep);
|
WaitFrmHelper.HideWaitForm();
|
|
AlertTool.ShowInfo(System.Windows.Forms.Application.OpenForms[0], "提示", "导出完成!");
|
};
|
dlg.ShowDialog();
|
}
|
|
|
private void barBtnExportWaterDesk_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_monitorDataSources == null || _station == null)
|
{
|
XtraMessageBox.Show("无数据!");
|
return;
|
}
|
var dlg = new SetTimeStepDlg();
|
dlg.SetBindingData(300);
|
dlg.ReloadDataEvent += (timeStep) =>
|
{
|
WaitFrmHelper.ShowWaitForm("正在导出");
|
ExportWaterDeskHelper.Export(_monitorDataSources.ID, _station.ID, timeStep);
|
WaitFrmHelper.HideWaitForm();
|
AlertTool.ShowInfo(System.Windows.Forms.Application.OpenForms[0], "提示", "导出完成!");
|
};
|
dlg.ShowDialog();
|
}
|
|
#endregion
|
|
|
}
|
}
|