using Aborlen.Model;
|
|
using FrameWork.Log;
|
|
using Monitor.FrameWork.Cache;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Aborlen.PlcCommunicationInit
|
|
{
|
|
public partial class WorkStation : StationBase
|
|
{
|
|
|
|
Dictionary<string, DateTime> AlarmStartTimeDic = new Dictionary<string, DateTime>();
|
|
private void OpcTag_AlarmChanged(string tagId, int tagMarkCode, object tagValue, DateTime timeTrigger)
|
|
{
|
|
try
|
|
{
|
|
//结果为TRUE 直接保存报警记录
|
|
|
|
if (Convert.ToBoolean(tagValue))
|
|
{
|
|
|
|
//判断当前报警是否存在
|
|
|
|
StationAlarmStatus stationAlarmStatus = new StationAlarmStatus();
|
|
|
|
//删除相同TagId数据
|
|
StationAlarmStatus.Delete(p => p.TagId == tagId);
|
|
|
|
//保存新的TagId数据
|
|
stationAlarmStatus.TagId = tagId;
|
|
stationAlarmStatus.StationId = thisStationInfo.StationId;
|
|
stationAlarmStatus.AlarmText = StationAlarmTexts.Where(p => p.TagId == tagId).First().AlarmText;
|
|
stationAlarmStatus.AlarmStatus = 1;
|
|
stationAlarmStatus.StartTime = DateTime.Now;
|
|
|
|
DictionaryHelper.DictionaryAddValue(AlarmStartTimeDic, tagId, stationAlarmStatus.StartTime);
|
|
//保存报警状态
|
|
StationAlarmStatus.InsertWithoutNullCol(stationAlarmStatus);
|
|
|
|
//报警记录表增加数据
|
|
|
|
StationAlarmRecord stationAlarmRecord = new StationAlarmRecord();
|
|
|
|
stationAlarmRecord.TagId = tagId;
|
|
stationAlarmRecord.StationId = thisStationInfo.StationId;
|
|
stationAlarmRecord.AlarmText = stationAlarmStatus.AlarmText;
|
|
stationAlarmRecord.AlarmStatus = stationAlarmStatus.AlarmStatus;
|
|
stationAlarmRecord.StartTime = stationAlarmStatus.StartTime;
|
|
StationAlarmRecord.Insert(stationAlarmRecord);
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
if (AlarmStartTimeDic.ContainsKey(tagId))
|
|
{
|
|
|
|
int timediff = Convert.ToInt32(ExecDateDiff(AlarmStartTimeDic[tagId], DateTime.Now));
|
|
|
|
|
|
|
|
//修改数据 解除报警
|
|
StationAlarmStatus.Update(p => new StationAlarmStatus() { AlarmStatus = 2, EndTime = DateTime.Now, TimeDiff = timediff }, p => p.TagId == tagId);
|
|
|
|
|
|
//报警记录解除报警
|
|
StationAlarmRecord.Update(p => new StationAlarmRecord() { AlarmStatus = 2, EndTime = DateTime.Now, TimeDiff = timediff }, q => q.TagId == tagId && q.AlarmStatus == 1);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
LogHelper.WriteLog(LogHelper.GetMethodInfo(), ex);
|
|
}
|
|
|
|
}
|
|
public static double ExecDateDiff(DateTime dateBegin, DateTime dateEnd)
|
|
{
|
|
TimeSpan ts1 = new TimeSpan(dateBegin.Ticks);
|
|
TimeSpan ts2 = new TimeSpan(dateEnd.Ticks);
|
|
TimeSpan ts3 = ts1.Subtract(ts2).Duration();
|
|
//你想转的格式
|
|
return ts3.TotalSeconds;
|
|
}
|
|
|
|
}
|
|
}
|