using Microsoft.Win32;
using NEIntelligentControl2.Models.Alarm;
using NEIntelligentControl2.Models.Messages;
using NEIntelligentControl2.Models.Windturbine;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace NEIntelligentControl2.Views.Alarm
{
///
/// 风机历史报警
///
public partial class WindturbineHistoryAlarm : UserControl
{
private string _Url;
private WEBHelper _WEBHelper;
private List _CurrentAlarmInfos;
public WindturbineInfo WindturbineInfo { get; set; }
///
/// 是否是预警
///
public bool IsCustom { get; set; }
public WindturbineHistoryAlarm()
{
InitializeComponent();
_WEBHelper = App.ServiceProvider.GetService(typeof(WEBHelper)) as WEBHelper;
_TBStartTime.Text = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd HH:mm:ss");
_TBEndTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
try
{
#if (DEBUG)
_Url = ConfigurationManager.AppSettings["AlarmPathDebug"];
#else
_Url = ConfigurationManager.AppSettings["AlarmPath"];
#endif
}
catch (Exception ex)
{
Console.WriteLine("读取配置文件[ServicePath]出错!", ex);
}
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Search();
}
private void Search()
{
DateTime.TryParse(_TBStartTime.Text, out DateTime ds);
DateTime.TryParse(_TBEndTime.Text, out DateTime de);
string start = ds.ToString("yyyy-MM-dd HH:mm:ss");
string end = de.ToString("yyyy-MM-dd HH:mm:ss");
Task.Run(() =>
{
_IBMain.Inof("查询数据...");
var c1 = IsCustom ? "custom" : "windturbine";
var ur = $"{_Url}/alarm/history/page?pagenum=1&windturbineid={WindturbineInfo.WindturbineId}&category1={c1}&pagesize=7000&stationid={WindturbineInfo.StationId}&starttime={start}&endtime={end}";
try
{
var vs = _WEBHelper.HttpGetJSON(ur);
if (vs == null || vs.Records == null)
{
vs.Records = new List();
}
Dispatcher.Invoke(() =>
{
_DGMain.ItemsSource = vs.Records;
});
_CurrentAlarmInfos = vs.Records;
_IBMain.Success();
}
catch (Exception e)
{
_IBMain.Warning($"查询数据出现错误:{e.Message}");
}
});
}
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key != Key.Enter) return;
Search();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
switch (((Control)sender).Tag)
{
case "output":
Output();
break;
case "ok":
Search();
break;
default:return;
}
}
private void Output()
{
SaveFileDialog dialog = new SaveFileDialog
{
Title = "保存csv文件",
Filter = "csv文件(*.csv) |*.csv |所有文件(*.*) |*.*",
FilterIndex = 1
};
var v = dialog.ShowDialog();
if (v != true) return;
var path = dialog.FileName;
OutputToFile(path);
}
private void OutputToFile(string path)
{
Task.Run(() =>
{
try
{
_IBMain.Inof("导出数据...");
if (File.Exists(path))
{
File.Delete(path);
}
using (StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8))
{
sw.WriteLine("时间,设备,报警信息,级别,报警类型,停机类型,故障类型,故障原因");
if (_CurrentAlarmInfos == null || _CurrentAlarmInfos.Count <= 0)
{
_IBMain.Success();
return;
}
foreach (var v in _CurrentAlarmInfos)
{
sw.WriteLine(string.Format("{0},{1},{2},{3},{4},{5},{6},{7}", v.AlertTimeTimeString,
v.ObjectName, v.AlertText, v.RankString, v.Category1String, "", "", ""));
}
}
_IBMain.Success();
Dispatcher.Invoke(() => MessageWindow.ShowMessage("数据导出成功!"));
}
catch (Exception ex)
{
_IBMain.Warning($"导出数据出现错误:{ex.Message}");
}
});
}
}
}