using NEIntelligentControl2.Models.Alarm;
using NEIntelligentControl2.Models.Messages;
using NEIntelligentControl2.Service.User;
using System;
using System.Collections.Generic;
using System.ComponentModel;
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 DeviceDetailAlarmWindow : Window
{
///
/// 故障信息
///
public FaultInfo FaultInfo { get; private set; }
///
/// 是否需要确认
///
public bool IsConfirm { get; set; }
private WEBHelper _WEBHelper;
private UserManager _UserManager;
private string _Url;
private List _DeviceAlarmInfoList;
public DeviceDetailAlarmWindow(WEBHelper web, UserManager um)
{
InitializeComponent();
_WEBHelper = web;
_UserManager = um;
InitUrl();
}
private void InitUrl()
{
try
{
#if(DEBUG)
_Url = ConfigurationManager.AppSettings["ServicePathDebug"];
#else
_Url = ConfigurationManager.AppSettings["ServicePath"];
#endif
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private void Border_MouseDown(object sender, MouseButtonEventArgs e)
{
try
{
this.DragMove();
}
catch { }
}
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;
}
}
///
/// 显示窗口
///
internal static bool Show(FaultInfo faultInfo, bool isConfirm = false)
{
var ddaw = App.ServiceProvider.GetService(typeof(DeviceDetailAlarmWindow)) as DeviceDetailAlarmWindow; ;
ddaw.FaultInfo = faultInfo;
ddaw.IsConfirm = isConfirm;
ddaw.Owner = Application.Current.MainWindow;
ddaw._TBTitle.Text = $"设备报警详情 -- [{faultInfo.ObjectName}]";
var b = ddaw.ShowDialog();
return b == true;
}
private void window_Loaded(object sender, RoutedEventArgs e)
{
Task.Run(InitData);
}
private void InitData()
{
if (FaultInfo == null) return;
string obj;
if (FaultInfo.Category1 == "SYZ" || FaultInfo.Category1 == "STATION" || FaultInfo.Category1 == "GF")
{
obj = $"{FaultInfo.StationId}&cateGory1=SYZ";
}
else
{
obj = $"{FaultInfo.WindturbineId}&cateGory1=windturbine";
}
var url = $"{_Url}/alarm/real-time-alarm?objectId={obj}";
var vs = _WEBHelper.HttpGetJSON>(url);
_DeviceAlarmInfoList = vs;
Dispatcher.Invoke(() => _DGMain.ItemsSource = vs);
}
private void _DGMain_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
{
if (e.AddedCells.Count <= 0) return;
var vv = e.AddedCells[0].Item as DeviceAlarmInfo;
if (vv == null) return;
foreach (var v in _DeviceAlarmInfoList)
{
v.IsSelected = v == vv;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
switch (((Control)sender).Tag)
{
case "generate":// 生成缺陷单
Generate();
break;
case "ok":// 确认
Confrom();
break;
default: return;
}
}
///
/// 确认
///
private void Confrom()
{
SendConfirmInfo();
}
private DeviceAlarmInfo GetSelectedItem()
{
foreach (var v in _DeviceAlarmInfoList)
{
if (v.IsSelected) return v;
}
return null;
}
///
/// 生成缺陷单
///
private void Generate()
{
SendConfirmInfo();
}
private void SendConfirmInfo()
{
if (!_UserManager.IsLogined)
{
bool b = _UserManager.TempLogin();
if (!b) return;
}
this.Close();
try
{
string s = _WEBHelper.HttpGetString($"{_Url}/alarm/confirm?snapID={FaultInfo.SnapID}&faultID={FaultInfo.Id}&userName={_UserManager.User.Name}");
}catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
class DeviceAlarmInfo : INotifyPropertyChanged
{
public long Id { get; set; }
public string ObjectId { get; set; }
public string ObjectName { get; set; }
public long SnapId { get; set; }
public DateTime LastUpdateTime { get; set; }
public string AlertText { get; set; }
public string RankName { get; set; }
public string CategoryName { get; set; }
public string FaultCause { get; set; }
public string HaltType { get; set; }
public string FaultCategory { get; set; }
public string LastUpdateTimeString { get => LastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss"); }
private bool isSelected;
public bool IsSelected { get => isSelected; set { isSelected = value; OnPropertyChanged(); } }
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
}