From 06883ec1b5ea0014d5dad881d97ef958da511dae Mon Sep 17 00:00:00 2001 From: wenjy Date: Thu, 5 Jun 2025 13:35:10 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20=E6=B7=BB=E5=8A=A0=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=95=B0=E6=8D=AE=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sln.Iot.Model/dao/BaseAlarmRule.cs | 6 ++ Sln.Iot.Model/dao/RecordAlarmData.cs | 83 ++++++++++++++++++ Sln.Iot.Model/dto/MonitorAlarmDto.cs | 2 +- Sln.Iot.Repository/Class1.cs | 5 -- .../service/IRecordAlarmDataService.cs | 9 ++ .../Impl/RecordAlarmDataServiceImpl.cs | 36 ++++++++ Sln.Iot.Serial/SerialExtensions.cs | 40 ++++++++- Sln.Iot.Serial/Sln.Iot.Serial.csproj | 6 -- Sln.Iot.Serial/libnserial.so.1 | Bin 78992 -> 0 bytes Sln.Iot/Sln.Iot.csproj | 3 - Sln.Iot/libnserial.so.1 | Bin 78992 -> 0 bytes 11 files changed, 172 insertions(+), 18 deletions(-) create mode 100644 Sln.Iot.Model/dao/RecordAlarmData.cs delete mode 100644 Sln.Iot.Repository/Class1.cs create mode 100644 Sln.Iot.Repository/service/IRecordAlarmDataService.cs create mode 100644 Sln.Iot.Repository/service/Impl/RecordAlarmDataServiceImpl.cs delete mode 100644 Sln.Iot.Serial/libnserial.so.1 delete mode 100644 Sln.Iot/libnserial.so.1 diff --git a/Sln.Iot.Model/dao/BaseAlarmRule.cs b/Sln.Iot.Model/dao/BaseAlarmRule.cs index 0117c5c..25506ee 100644 --- a/Sln.Iot.Model/dao/BaseAlarmRule.cs +++ b/Sln.Iot.Model/dao/BaseAlarmRule.cs @@ -57,5 +57,11 @@ namespace Sln.Iot.Model.dao /// [SugarColumn(ColumnName = "cause")] public string cause { get; set; } + + /// + /// 告警记录ID,推送数据使用,ORM不用 + /// + [SugarColumn(IsIgnore = true)] + public long alarmId { get; set; } } } diff --git a/Sln.Iot.Model/dao/RecordAlarmData.cs b/Sln.Iot.Model/dao/RecordAlarmData.cs new file mode 100644 index 0000000..8ecdd69 --- /dev/null +++ b/Sln.Iot.Model/dao/RecordAlarmData.cs @@ -0,0 +1,83 @@ +#region << 版 本 注 释 >> + +/*-------------------------------------------------------------------- +* 版权所有 (c) 2025 Wen JY 保留所有权利。 +* CLR版本:4.0.30319.42000 +* 机器名称:ThinkPad T14 +* 命名空间:Sln.Iot.Model.dao +* 唯一标识:50695B31-9DE2-4EE5-A13D-D58B53CDEBBA +* +* 创建者:WenJY +* 电子邮箱: +* 创建时间:2025-06-05 10:38:09 +* 版本:V1.0.0 +* 描述: +* +*-------------------------------------------------------------------- +* 修改人: +* 时间: +* 修改说明: +* +* 版本:V1.0.0 +*--------------------------------------------------------------------*/ + +#endregion << 版 本 注 释 >> + +using SqlSugar; + +namespace Sln.Iot.Model.dao; + +/// +///告警数据记录 +/// +[SugarTable("ems_record_alarm_data"), Tenant("tao_iot")] +public class RecordAlarmData +{ + + /// + /// 编号 + /// + [SugarColumn(ColumnName = "obj_id", IsPrimaryKey = true)] + public long objid { get; set; } + + /// + /// Desc:计量设备编号 + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true,ColumnName="monitor_id")] + public string monitorId {get;set;} + + /// + /// Desc:采集设备编号 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="collect_device_id")] + public string collectDeviceId {get;set;} + + /// + /// 触发规则(0大于 1小于) + /// + [SugarColumn(ColumnName = "alarm_type")] + public int triggerRule { get; set; } + + /// + /// 监测字段(0温度,1湿度,2振动-速度(mm/s),3振动-位移(um),4振动-加速度(g),5振动-温度(℃),6-噪音,7-照度) + /// + [SugarColumn(ColumnName = "cause")] + public int monitorField { get;set; } + + /// + /// 告警值 + /// + [SugarColumn(ColumnName = "alarm_data")] + public decimal alarmValue { get;set; } + + /// + /// 采集时间 + /// + [SugarColumn(ColumnName="collect_time" )] + public DateTime? collectTime { get; set; } + +} \ No newline at end of file diff --git a/Sln.Iot.Model/dto/MonitorAlarmDto.cs b/Sln.Iot.Model/dto/MonitorAlarmDto.cs index fa1dd05..26c62c8 100644 --- a/Sln.Iot.Model/dto/MonitorAlarmDto.cs +++ b/Sln.Iot.Model/dto/MonitorAlarmDto.cs @@ -19,7 +19,7 @@ namespace Sln.Iot.Model.dto /// 是否报警:1-是;0-否 /// public int isFlag { get;set; } - + /// /// 设备参数 /// diff --git a/Sln.Iot.Repository/Class1.cs b/Sln.Iot.Repository/Class1.cs deleted file mode 100644 index e063971..0000000 --- a/Sln.Iot.Repository/Class1.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Sln.Iot.Repository; - -public class Class1 -{ -} \ No newline at end of file diff --git a/Sln.Iot.Repository/service/IRecordAlarmDataService.cs b/Sln.Iot.Repository/service/IRecordAlarmDataService.cs new file mode 100644 index 0000000..c51c11d --- /dev/null +++ b/Sln.Iot.Repository/service/IRecordAlarmDataService.cs @@ -0,0 +1,9 @@ +using Sln.Iot.Model.dao; +using Sln.Iot.Repository.service.@base; + +namespace Sln.Iot.Repository.service; + +public interface IRecordAlarmDataService:IBaseService +{ + +} \ No newline at end of file diff --git a/Sln.Iot.Repository/service/Impl/RecordAlarmDataServiceImpl.cs b/Sln.Iot.Repository/service/Impl/RecordAlarmDataServiceImpl.cs new file mode 100644 index 0000000..ed77e54 --- /dev/null +++ b/Sln.Iot.Repository/service/Impl/RecordAlarmDataServiceImpl.cs @@ -0,0 +1,36 @@ +#region << 版 本 注 释 >> + +/*-------------------------------------------------------------------- +* 版权所有 (c) 2025 Wen JY 保留所有权利。 +* CLR版本:4.0.30319.42000 +* 机器名称:ThinkPad T14 +* 命名空间:Sln.Iot.Repository.service.Impl +* 唯一标识:0838E02D-6FDB-4D1D-8A1F-B78B582EE185 +* +* 创建者:WenJY +* 电子邮箱: +* 创建时间:2025-06-05 10:46:10 +* 版本:V1.0.0 +* 描述: +* +*-------------------------------------------------------------------- +* 修改人: +* 时间: +* 修改说明: +* +* 版本:V1.0.0 +*--------------------------------------------------------------------*/ + +#endregion << 版 本 注 释 >> + +using Sln.Iot.Model.dao; +using Sln.Iot.Repository.service.@base; + +namespace Sln.Iot.Repository.service.Impl; + +public class RecordAlarmDataServiceImpl: BaseServiceImpl, IRecordAlarmDataService +{ + public RecordAlarmDataServiceImpl(Repository rep) : base(rep) + { + } +} \ No newline at end of file diff --git a/Sln.Iot.Serial/SerialExtensions.cs b/Sln.Iot.Serial/SerialExtensions.cs index 1fca02f..a7b13c8 100644 --- a/Sln.Iot.Serial/SerialExtensions.cs +++ b/Sln.Iot.Serial/SerialExtensions.cs @@ -28,6 +28,8 @@ namespace Sln.Iot.Serial IBaseAlarmRuleService _alarmRuleService = service.GetService(); + IRecordAlarmDataService _alarmDataService = service.GetService(); + WebSocketBusiness webSocket = service.GetService(); var logger = service.GetService(); @@ -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 iotEnvInstants, IBaseAlarmRuleService _alarmRuleService, SerilogHelper _logger, WebSocketBusiness _webSocket) + private static void ParamAlarmFilter(List 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}"); + } + } + } } diff --git a/Sln.Iot.Serial/Sln.Iot.Serial.csproj b/Sln.Iot.Serial/Sln.Iot.Serial.csproj index dae9b9b..dea2d33 100644 --- a/Sln.Iot.Serial/Sln.Iot.Serial.csproj +++ b/Sln.Iot.Serial/Sln.Iot.Serial.csproj @@ -19,10 +19,4 @@ - - - Always - - - diff --git a/Sln.Iot.Serial/libnserial.so.1 b/Sln.Iot.Serial/libnserial.so.1 deleted file mode 100644 index 5b93c2a735232ad4096d7387e9b2007563cf4157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78992 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 lD@yfmOO4{6h<#4;&~|GawNLv_ PreserveNewest - - Always - diff --git a/Sln.Iot/libnserial.so.1 b/Sln.Iot/libnserial.so.1 deleted file mode 100644 index 5b93c2a735232ad4096d7387e9b2007563cf4157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78992 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 lD@yfmOO4{6h<#4;&~|GawNLv_