|
|
|
@ -28,6 +28,8 @@ namespace Sln.Iot.Serial
|
|
|
|
|
|
|
|
|
|
IBaseAlarmRuleService _alarmRuleService = service.GetService<IBaseAlarmRuleService>();
|
|
|
|
|
|
|
|
|
|
IRecordAlarmDataService _alarmDataService = service.GetService<IRecordAlarmDataService>();
|
|
|
|
|
|
|
|
|
|
WebSocketBusiness webSocket = service.GetService<WebSocketBusiness>();
|
|
|
|
|
|
|
|
|
|
var logger = service.GetService<SerilogHelper>();
|
|
|
|
@ -108,7 +110,7 @@ namespace Sln.Iot.Serial
|
|
|
|
|
|
|
|
|
|
logger.Info($"物联网数据保存{(inRes ? "成功" : "失败")}");
|
|
|
|
|
|
|
|
|
|
ParamAlarmFilter(iotEnvInstants,_alarmRuleService,logger, webSocket);
|
|
|
|
|
ParamAlarmFilter(iotEnvInstants,_alarmRuleService,logger, webSocket,_alarmDataService);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
@ -127,7 +129,7 @@ namespace Sln.Iot.Serial
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void ParamAlarmFilter(List<RecordIotEnvInstant> iotEnvInstants, IBaseAlarmRuleService _alarmRuleService, SerilogHelper _logger, WebSocketBusiness _webSocket)
|
|
|
|
|
private static void ParamAlarmFilter(List<RecordIotEnvInstant> iotEnvInstants, IBaseAlarmRuleService _alarmRuleService, SerilogHelper _logger, WebSocketBusiness _webSocket,IRecordAlarmDataService _alarmDataService)
|
|
|
|
|
{
|
|
|
|
|
if (iotEnvInstants == null)
|
|
|
|
|
{
|
|
|
|
@ -170,11 +172,26 @@ namespace Sln.Iot.Serial
|
|
|
|
|
: 0;
|
|
|
|
|
|
|
|
|
|
var comparer = CreateComparer(rule.triggerRule);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (comparer(paramValue, rule.triggerValue))
|
|
|
|
|
{
|
|
|
|
|
var alarmId=SnowFlakeSingle.Instance.NextId();
|
|
|
|
|
|
|
|
|
|
rule.alarmId = alarmId;
|
|
|
|
|
ruleRes.Add(rule);
|
|
|
|
|
alarmContents.Add($"{item.monitorId}传感器数据在{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}触发{rule.ruleName}异常告警,告警规则:{(rule.triggerRule == 0 ? "大于" : "小于")},阈值:{rule.triggerValue},详细信息:{rule.cause}");
|
|
|
|
|
|
|
|
|
|
SaveAlarmData(new RecordAlarmData()
|
|
|
|
|
{
|
|
|
|
|
objid = alarmId,
|
|
|
|
|
monitorId = item.monitorId,
|
|
|
|
|
collectDeviceId = item.monitorId.substring(0,5),
|
|
|
|
|
triggerRule = rule.triggerRule,
|
|
|
|
|
monitorField = rule.monitorField,
|
|
|
|
|
alarmValue = paramValue,
|
|
|
|
|
collectTime = DateTime.Now,
|
|
|
|
|
|
|
|
|
|
},_alarmDataService,_logger);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -194,5 +211,22 @@ namespace Sln.Iot.Serial
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static void SaveAlarmData(RecordAlarmData alarmData,IRecordAlarmDataService _alarmDataService, SerilogHelper _logger)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var insert = _alarmDataService.Insert(alarmData);
|
|
|
|
|
|
|
|
|
|
string str = JsonConvert.SerializeObject(alarmData);
|
|
|
|
|
|
|
|
|
|
_logger.Info($"传感器:{alarmData.monitorId};告警数据:{str},保存{(insert ? "成功" : "失败")}");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
_logger.Info($"传感器:{alarmData.monitorId};告警数据保存异常:{e.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|