Files
CapMachine/CapMachine.Wpf/Alarm/AlarmRunCell.cs
2025-01-01 17:41:48 +08:00

106 lines
2.7 KiB
C#

using CapMachine.Model.Alarm;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CapMachine.Wpf.Alarm
{
/// <summary>
/// 报警运行单元
/// </summary>
public class AlarmRunCell : BindableBase
{
/// <summary>
/// 实例化函数
/// </summary>
public AlarmRunCell(IFreeSql freeSql)
{
CurAlarmConfig = new AlarmConfig();
FreeSql = freeSql;
}
/// <summary>
/// 更新报警对应的值
/// </summary>
public void UpdateBoolValue(bool Value)
{
if (CurAlarmConfig.ActiveType == ActiveType.Bool)
{
if (CurAlarmConfig.BoolActiveValue == Value)
{
ActiveState = true;
ActiveTime = DateTime.Now;
}
else
{
ActiveState = false;
}
}
}
/// <summary>
/// 布尔类型的变量 序号
/// </summary>
public long Index { get; set; }
private bool _ActiveState = false;
/// <summary>
/// 报警激活状态
/// </summary>
public bool ActiveState
{
get { return _ActiveState; }
set
{
if (_ActiveState != value)
{
_ActiveState = value;
RaisePropertyChanged();
//报警结束时保存报警
if (ActiveState==false)
{
SaveAlarm();
}
}
}
}
/// <summary>
/// 保存报警
/// </summary>
private void SaveAlarm()
{
FreeSql.Insert<HistoryAlarm>(new HistoryAlarm()
{
AlarmLevel = CurAlarmConfig.AlarmLevel,
Category = CurAlarmConfig.Category,
Message = CurAlarmConfig.Message,
Name = CurAlarmConfig.Name,
Duration = (long)(DateTime.Now - ActiveTime).TotalSeconds,
CreateTime = ActiveTime,
}).ExecuteAffrows();
}
/// <summary>
/// 报警时长
/// </summary>
public int TimeDuration { get; set; }
/// <summary>
/// 激活时间
/// </summary>
public DateTime ActiveTime { get; set; }
/// <summary>
/// 当前的报警配置
/// </summary>
public AlarmConfig CurAlarmConfig { get; set; }
public IFreeSql FreeSql { get; }
}
}