添加项目文件。
This commit is contained in:
166
OrpaonEMS.App/Models/BmsAlarmModel.cs
Normal file
166
OrpaonEMS.App/Models/BmsAlarmModel.cs
Normal file
@@ -0,0 +1,166 @@
|
||||
using ImTools;
|
||||
using OrpaonEMS.Core.EventHandMsg;
|
||||
using OrpaonEMS.Model.MasterSlave;
|
||||
using Prism.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace OrpaonEMS.App.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Bms报警模型
|
||||
/// </summary>
|
||||
public class BmsAlarmModel : BindableBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 声明委托对象-报警消失时BMS报警复位的触发事件
|
||||
/// </summary>
|
||||
public event EventHandler<string> BmsAlarmResetEventHandler;
|
||||
|
||||
/// <summary>
|
||||
/// 实例化函数
|
||||
/// </summary>
|
||||
/// <param name="alarmCells"></param>
|
||||
public BmsAlarmModel(List<AlarmCell> alarmCells)
|
||||
{
|
||||
ListBmsAlarm = alarmCells;
|
||||
//RtListViewItems = new ObservableCollection<RtAlarm>()
|
||||
//{
|
||||
// new RtAlarm() {Content="SDFA",Level=2,CreatTime=DateTime.Now},
|
||||
// new RtAlarm() {Content="DFGSDF",Level=2,CreatTime=DateTime.Now},
|
||||
// new RtAlarm() {Content="FGHSFD",Level=3,CreatTime=DateTime.Now},
|
||||
//};
|
||||
|
||||
//报警发布和统计
|
||||
foreach (var itemAlarm in ListBmsAlarm)
|
||||
{
|
||||
itemAlarm.PubBmsAlarmEventHandler += ItemAlarm_PubBmsAlarmEventHandler;
|
||||
}
|
||||
}
|
||||
|
||||
private ObservableCollection<RtAlarm> _RtListViewItems = new ObservableCollection<RtAlarm>();
|
||||
/// <summary>
|
||||
/// 实时报警 数据集合
|
||||
/// </summary>
|
||||
public ObservableCollection<RtAlarm> RtListViewItems
|
||||
{
|
||||
get { return _RtListViewItems; }
|
||||
set { _RtListViewItems = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报警发布方法
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
private void ItemAlarm_PubBmsAlarmEventHandler(object sender, BmsAlarmCellEventHandMsg data)
|
||||
{
|
||||
if (data.AlarmState)//报警开始
|
||||
{
|
||||
//报警开始
|
||||
AlarmCount++;//报警加1
|
||||
//当前没有的话,则新增
|
||||
CurAlarmContent = data.AlarmContent;
|
||||
|
||||
if (RtListViewItems.Where(a => a.Content == data.AlarmContent).Count() == 0)
|
||||
{
|
||||
RtListViewItems.Add(new RtAlarm()
|
||||
{
|
||||
Content = data.AlarmContent,
|
||||
Level = data.AlarmLevel,
|
||||
CreatTime = data.AlarmTime,
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//报警消失
|
||||
AlarmCount--;//报警减1
|
||||
//找到之前的报警
|
||||
if (RtListViewItems.Where(a => a.Content == data.AlarmContent).Count() > 0)
|
||||
{
|
||||
//找到并删除
|
||||
var FindOne = RtListViewItems.FindFirst(a => a.Content == data.AlarmContent);
|
||||
RtListViewItems.Remove(FindOne);
|
||||
}
|
||||
|
||||
if (data.AlarmContent== CurAlarmContent)
|
||||
{
|
||||
CurAlarmContent = "";
|
||||
}
|
||||
|
||||
//报警消失
|
||||
if (AlarmCount==0)
|
||||
{
|
||||
//报警消失后复位一下
|
||||
BmsAlarmResetEventHandler(this,"No Alarm");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Bms报警集合数据
|
||||
/// </summary>
|
||||
public List<AlarmCell> ListBmsAlarm { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前报警信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<string> GetCurAlarm()
|
||||
{
|
||||
if (AlarmCount > 0)
|
||||
{
|
||||
var ListInfo = new List<string>();
|
||||
var ListAlarm = ListBmsAlarm.Where(a => a.State == true).ToList();
|
||||
foreach (var itemAlarm in ListAlarm)
|
||||
{
|
||||
ListInfo.Add($"时间:{itemAlarm.CurTimeInfo.StartTime}-{itemAlarm.Content}");
|
||||
}
|
||||
return ListInfo;
|
||||
}
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报警个数
|
||||
/// </summary>
|
||||
public int AlarmCount { get; set; }
|
||||
|
||||
|
||||
private string _CurAlarmContent;
|
||||
/// <summary>
|
||||
/// 当前关注报警内容
|
||||
/// </summary>
|
||||
public string CurAlarmContent
|
||||
{
|
||||
get { return _CurAlarmContent; }
|
||||
set { _CurAlarmContent = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前报警等级
|
||||
/// </summary>
|
||||
public int CurAlarmLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前报警激活时间
|
||||
/// </summary>
|
||||
public DateTime CurAlarmActiveTime { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 显示报警数据
|
||||
///// </summary>
|
||||
///// <returns></returns>
|
||||
//public int TopAlarmCount()
|
||||
//{
|
||||
|
||||
//}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user