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}"); } }); } } }