using NEIntelligentControl2.Models.Alarm;
using NEIntelligentControl2.Models.Messages;
using NEIntelligentControl2.Models.Station;
using NEIntelligentControl2.Service.Station;
using NEIntelligentControl2.Service.Windturbine;
using System;
using System.Collections.Generic;
using System.Configuration;
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.Shapes;
namespace NEIntelligentControl2.Windows.Alarm
{
///
/// 实时报警窗口
///
public partial class RealTimeAlarmWindow : Window
{
private StationManager _StationManager;
private WEBHelper _WEBHelper;
private InfoManager _InfoManager;
private string _Url;
private StationInfo _CurrentStationInfo;// 场站
private AlarmTypeItem _ClassTypeInfo;// 级别
private AlarmTypeItem _TypeInfo;// 类型
private AlarmTypeItem _STypeInfo;// 子类型
private List _AlarmInfos;
private AlarmTypeInfo _AlarmTypeInfo;
private string _WindturbineId;
public string KeyString { get; set; }
private bool _IsWindturbineFilter;
private bool _IsLoaded;
public RealTimeAlarmWindow(StationManager sm, WEBHelper web, InfoManager im)
{
InitializeComponent();
_StationManager = sm;
_WEBHelper = web;
_InfoManager = im;
Init();
}
private void Init()
{
try
{
#if (DEBUG)
_Url = ConfigurationManager.AppSettings["AlarmPathDebug"];
#else
_Url = ConfigurationManager.AppSettings["AlarmPath"];
#endif
}
catch (Exception ex)
{
Console.WriteLine("读取配置文件[ServicePath]出错!", ex);
}
var ls = _StationManager.GetStationInfos().Where(i=>i.Type!=Models.Station.StationType.Other).ToList();
if (ls == null) return;
_CBStation.ItemsSource = ls;
_AlarmTypeInfo = _InfoManager.GetAlarmTypeInfo();
_CBClass.ItemsSource = _AlarmTypeInfo.RankInfo;
_CBType.ItemsSource = _AlarmTypeInfo.DeviceType;
}
private void ContentControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
switch (((FrameworkElement)sender).Tag)
{
case "close":
this.Close();
break;
case "maximized":
Maximized();
break;
default: return;
}
}
private void Maximized()
{
if (this.WindowState == WindowState.Maximized)
{
this.WindowState = WindowState.Normal;
}
else
{
this.WindowState = WindowState.Maximized;
}
}
public static void ShowWindow()
{
RealTimeAlarmWindow rtw = App.ServiceProvider.GetService(typeof(RealTimeAlarmWindow)) as RealTimeAlarmWindow;
rtw.Owner = Application.Current.MainWindow;
rtw.ShowDialog();
}
///
/// 场站
///
private void _CBStation_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count <= 0) return;
var v = e.AddedItems[0] as StationInfo;
if (v == null) return;
if (_CurrentStationInfo != null && _CurrentStationInfo.Id == v.Id) return;
_CurrentStationInfo = v;
Task.Run(Search);
}
///
/// 级别
///
private void _CBClass_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count <= 0) return;
var v = e.AddedItems[0] as AlarmTypeItem;
if (v == null) return;
_ClassTypeInfo = v;
_IsWindturbineFilter = false;
Task.Run(Search);
}
///
/// 类型
///
private void _CBType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count <= 0) return;
var v = e.AddedItems[0] as AlarmTypeItem;
if (v == null) return;
_TypeInfo = v;
_CBSType.ItemsSource = v.SubItem;
_CBSType.SelectedIndex = 0;
_IsWindturbineFilter = false;
Task.Run(Search);
}
///
/// 子类型
///
private void _CBSType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count <= 0) return;
var v = e.AddedItems[0] as AlarmTypeItem;
if (v == null) return;
_STypeInfo = v;
_IsWindturbineFilter = false;
Task.Run(Search);
}
///
/// 风机
///
private void _CBWindturbine_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count <= 0) return;
var v = e.AddedItems[0] as string;
if (v == null) return;
_WindturbineId = v;
_IsWindturbineFilter = true;
Task.Run(Search);
}
private void Search()
{
if (!_IsLoaded) return;
try
{
_IBMain.Inof("查询数据...");
var vs = _WEBHelper.HttpGetJSON>($"{_Url}/alarm/snap?stationid={_CurrentStationInfo.Id}&isopened=1&windturbineid={(string.IsNullOrWhiteSpace(_WindturbineId) ? "" : _WindturbineId)}" +
$"&category1={GetInfoString(_TypeInfo)}&category2={GetInfoString(_STypeInfo)}&rank={GetInfoString(_ClassTypeInfo)}&keyword={(string.IsNullOrWhiteSpace(KeyString) ? "" : KeyString)}");
_AlarmInfos = vs;
Dispatcher.Invoke(() => ShowData());
}
catch(Exception e)
{
_IBMain.Warning($"查询数据出现错误:{e.Message}");
return;
}
_IBMain.Success();
}
private void ShowData()
{
if (_AlarmInfos == null || _AlarmInfos.Count <= 0)
{
_AlarmInfos = new List();
}
var ids = new HashSet() { "全部" };
foreach (var v in _AlarmInfos)
{
if (!string.IsNullOrWhiteSpace(v.WindturbineId))
{
ids.Add(v.WindturbineId);
}
}
if (!_IsWindturbineFilter)
{
_CBWindturbine.ItemsSource = ids;
}
_DGMain.ItemsSource = _AlarmInfos;
}
private object GetInfoString(AlarmTypeItem ati)
{
if (ati == null) return "";
return ati.Id == "all" ? "" : ati.Id;
}
private void _CBKeyString_LostFocus(object sender, RoutedEventArgs e)
{
KeyString = _CBKeyString.Text;
//Filter();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
_IsLoaded = true;
Task.Run(Search);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
switch (((Control)sender).Tag)
{
case "search":
Task.Run(Search);
break;
default:return;
}
}
}
}