From 1686c32d0ab84b1bbd9bfcd5558af4598ca02abd Mon Sep 17 00:00:00 2001 From: zhangbin <460190368@qq.com> Date: Fri, 27 Jun 2025 15:49:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ServiceApp/AirportMaintenanceApp.cs | 46 ++++++++++++++++++- .../Domain/LasaManageDeviceHms.cs | 8 ++++ .../AirportMaintenanceController.cs | 34 ++++++++++++-- OpenAuth.WebApi/Model/mqtt/HmsAlarmParser.cs | 8 ++-- .../Model/mqtt/MqttHostedService.cs | 4 +- .../Model/mqtt/ThingEventHandler.cs | 15 +++--- OpenAuth.WebApi/Startup.cs | 2 +- 7 files changed, 98 insertions(+), 19 deletions(-) diff --git a/OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs b/OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs index b91345c..f1bf00b 100644 --- a/OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs +++ b/OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs @@ -11,6 +11,9 @@ using SqlSugar; using Infrastructure; using OpenAuth.App.ServiceApp.Response; using DocumentFormat.OpenXml.EMMA; +using NPOI.SS.Formula.Functions; +using Infrastructure.Extensions; +using DocumentFormat.OpenXml.Math; namespace OpenAuth.App.ServiceApp { @@ -206,17 +209,56 @@ namespace OpenAuth.App.ServiceApp /// /// /// - public bool AddManageDeviceHms(List info) + public bool AddManageDeviceHms(List newAlarms) { using (var db = UnitWork.CreateContext()) { - var flag = db.LasaManageDeviceHms.InsertRange(info); + var now = DateTime.Now; + //获取当前所有未处理的告警信息 + var existing = db.LasaManageDeviceHms.AsQueryable() + .Where(x => x.IsResolved == 0).ToList(); + var currentKeys = newAlarms.Select(x => x.Code).ToHashSet(); + var existingKeys = existing.Select(x => x.Code).ToHashSet(); + // 需要解除的(老有,新没有) 起的隆冬强 + var toResolve = existing + .Where(x => !currentKeys.Contains(x.Code)).ToList(); + foreach (var resolved in toResolve) + { + resolved.IsResolved = 1; + resolved.UpdateTime = now; + } + db.LasaManageDeviceHms.UpdateRange(toResolve); + // 需要新增的(新有,老没有) + var toInsert = newAlarms + .Where(x => !existingKeys.Contains(x.Code)) + .ToList(); + if (toInsert.Count > 0) + db.LasaManageDeviceHms.InsertRange(toInsert); + //var flag = db.LasaManageDeviceHms.InsertRange(newAlarms); if (db.Commit()) return true; else return false; } } + //根据时间获取告警信息列表 + public async Task>>> GetManageDeviceHmsList(int level, int model, DateTime startTime, DateTime endTime, int page, int limit) + { + RefAsync totalCount = 0; + using (var db = UnitWork.CreateContext()) + { + var list = await db.LasaManageDeviceHms.AsQueryable() + .Where(x => x.CreateTime >= startTime && x.CreateTime <= endTime && x.IsResolved == 0) + .WhereIF(level!=0,x=>x.Level==level) + .WhereIF(model != 0, x => x.Module == model) + .OrderBy(x => x.CreateTime, OrderByType.Desc) + .ToPageListAsync(page, limit, totalCount); + return new Response>> + { + Result = new PageInfo> { Items = list, Total = totalCount } + }; + } + } #endregion #region 日志 diff --git a/OpenAuth.Repository/Domain/LasaManageDeviceHms.cs b/OpenAuth.Repository/Domain/LasaManageDeviceHms.cs index 4a9065e..02f2c20 100644 --- a/OpenAuth.Repository/Domain/LasaManageDeviceHms.cs +++ b/OpenAuth.Repository/Domain/LasaManageDeviceHms.cs @@ -70,5 +70,13 @@ namespace OpenAuth.Repository.Domain /// 修改时间 /// public DateTime? UpdateTime { get; set; } + /// + /// 是否解除 + /// + public int IsResolved { get; set; } + /// + /// 告警码 + /// + public string Code { get; set; } } } diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/AirportMaintenanceController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/AirportMaintenanceController.cs index 9d6f6a0..13e8f5f 100644 --- a/OpenAuth.WebApi/Controllers/ServiceControllers/AirportMaintenanceController.cs +++ b/OpenAuth.WebApi/Controllers/ServiceControllers/AirportMaintenanceController.cs @@ -89,7 +89,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers /// /// [HttpPost] - [AllowAnonymous] public async Task> GetGateway() { var result = new Response(); @@ -124,7 +123,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers /// /// [HttpPost] - [AllowAnonymous] public async Task> AddFirmware(LasaFirmware info) { var result = new Response(); @@ -405,7 +403,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers /// /// [HttpPost] - [AllowAnonymous] public async Task> AddOrUpdateRedisUser(MqttClientResp info) { var result = new Response(); @@ -463,7 +460,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers /// /// [HttpGet] - [AllowAnonymous] public async Task> GetRedisUser(string id) { var result = new Response(); @@ -497,7 +493,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers /// /// [HttpGet] - [AllowAnonymous] public async Task> GetLockedClients() { var userIds = await _cache.SetMembersAsync("locked_users"); @@ -513,5 +508,34 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers return result; } #endregion + + #region 获取告警信息 + /// + /// 获取告警信息 + /// + /// 告警等级,0-全部,1-注意,2-告警 + /// 设备,0-全部,1-设备管理,2-媒体管理,3-HMS告警 + /// + /// + /// + /// + /// + [HttpGet] + public async Task>>> GetManageDeviceHmsList(int level, int model, DateTime startTime, DateTime endTime, int page, int limit) + { + var result = new Response>>(); + try + { + result = await _app.GetManageDeviceHmsList(level, model, startTime, endTime, page, limit); + } + catch (Exception ex) + { + result.Code = 500; + result.Message = ex.Message; + } + + return result; + } + #endregion } } diff --git a/OpenAuth.WebApi/Model/mqtt/HmsAlarmParser.cs b/OpenAuth.WebApi/Model/mqtt/HmsAlarmParser.cs index c51e6e4..377278b 100644 --- a/OpenAuth.WebApi/Model/mqtt/HmsAlarmParser.cs +++ b/OpenAuth.WebApi/Model/mqtt/HmsAlarmParser.cs @@ -15,10 +15,10 @@ namespace OpenAuth.WebApi.Model.mqtt public List ParseAlarmMessages(string rawJson) { - List result= new List (); + List result = new List(); var root = JsonNode.Parse(rawJson)?.AsObject(); if (root == null) - { + { return null; } @@ -73,9 +73,11 @@ namespace OpenAuth.WebApi.Model.mqtt TId = tid, Level = level, Module = module, - CreateTime=DateTime.Now, + CreateTime = DateTime.Now, MessageEn = en, MessageZh = zh, + IsResolved = 0, + Code = code }); } diff --git a/OpenAuth.WebApi/Model/mqtt/MqttHostedService.cs b/OpenAuth.WebApi/Model/mqtt/MqttHostedService.cs index 4a77bdf..81dffb2 100644 --- a/OpenAuth.WebApi/Model/mqtt/MqttHostedService.cs +++ b/OpenAuth.WebApi/Model/mqtt/MqttHostedService.cs @@ -42,8 +42,8 @@ namespace OpenAuth.WebApi.Model.mqtt $"thing/product/{gateway}/events", $"thing/product/{gateway}/requests", $"thing/product/{gateway}/services_reply", - $"thing/product/{gateway}/drc/up", - $"thing/product/{gateway}/drc/down", + //$"thing/product/{gateway}/drc/up", + //$"thing/product/{gateway}/drc/down", $"thing/product/{gateway}/state" }); } diff --git a/OpenAuth.WebApi/Model/mqtt/ThingEventHandler.cs b/OpenAuth.WebApi/Model/mqtt/ThingEventHandler.cs index d58c94e..0c52729 100644 --- a/OpenAuth.WebApi/Model/mqtt/ThingEventHandler.cs +++ b/OpenAuth.WebApi/Model/mqtt/ThingEventHandler.cs @@ -34,13 +34,16 @@ namespace OpenAuth.WebApi.Model.mqtt if (payload.Contains("hms"))//健康告警 { var jsondata = JsonSerializer.Deserialize(payload); - if (jsondata.data != null && jsondata.data.list.Count > 0) + + var path = Path.Combine(AppContext.BaseDirectory, "hms.json"); + var parser = new HmsAlarmParser(path); + + List alarmMessages = null; + if (jsondata.data != null && jsondata.data.list?.Count > 0) { - var path = Path.Combine(AppContext.BaseDirectory, "hms.json"); - var parser = new HmsAlarmParser(path); - var alarmMessages = parser.ParseAlarmMessages(payload); - _app.AddManageDeviceHms(alarmMessages); - } + alarmMessages = parser.ParseAlarmMessages(payload); + } + _app.AddManageDeviceHms(alarmMessages ?? new List()); } return Task.CompletedTask; diff --git a/OpenAuth.WebApi/Startup.cs b/OpenAuth.WebApi/Startup.cs index 1794e0b..aefb7d9 100644 --- a/OpenAuth.WebApi/Startup.cs +++ b/OpenAuth.WebApi/Startup.cs @@ -333,7 +333,7 @@ namespace OpenAuth.WebApi services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); + //services.AddSingleton(); services.AddHostedService(); From d161a22c3596f7d4587b5fa96fefe2efde089241 Mon Sep 17 00:00:00 2001 From: zhangbin <460190368@qq.com> Date: Fri, 27 Jun 2025 15:49:58 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ServiceControllers/ManageController.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/ManageController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/ManageController.cs index a32d07d..9793e67 100644 --- a/OpenAuth.WebApi/Controllers/ServiceControllers/ManageController.cs +++ b/OpenAuth.WebApi/Controllers/ServiceControllers/ManageController.cs @@ -39,7 +39,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers /// /// [HttpGet] - [AllowAnonymous] public async Task>>> GetDataList(int page, int limit, string key) { var result = new Response>>(); @@ -100,7 +99,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers /// /// [HttpGet] - [AllowAnonymous] public async Task>>> GetUavPageList(int page, int limit, string key) { var result = new Response>>(); From 74d8634df11f0bc1b87937191e12b3ef0f100306 Mon Sep 17 00:00:00 2001 From: zhangbin <460190368@qq.com> Date: Fri, 27 Jun 2025 15:54:31 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs | 5 +++-- .../ServiceControllers/AirportMaintenanceController.cs | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs b/OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs index f1bf00b..f20d9c8 100644 --- a/OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs +++ b/OpenAuth.App/ServiceApp/AirportMaintenanceApp.cs @@ -242,15 +242,16 @@ namespace OpenAuth.App.ServiceApp } } //根据时间获取告警信息列表 - public async Task>>> GetManageDeviceHmsList(int level, int model, DateTime startTime, DateTime endTime, int page, int limit) + public async Task>>> GetManageDeviceHmsList(int level, int model, DateTime startTime, DateTime endTime, int page, int limit, string message) { RefAsync totalCount = 0; using (var db = UnitWork.CreateContext()) { var list = await db.LasaManageDeviceHms.AsQueryable() .Where(x => x.CreateTime >= startTime && x.CreateTime <= endTime && x.IsResolved == 0) - .WhereIF(level!=0,x=>x.Level==level) + .WhereIF(level != 0, x => x.Level == level) .WhereIF(model != 0, x => x.Module == model) + .WhereIF(!string.IsNullOrEmpty(message), x => x.MessageZh.Contains(message)) .OrderBy(x => x.CreateTime, OrderByType.Desc) .ToPageListAsync(page, limit, totalCount); return new Response>> diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/AirportMaintenanceController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/AirportMaintenanceController.cs index 13e8f5f..b6cc0e2 100644 --- a/OpenAuth.WebApi/Controllers/ServiceControllers/AirportMaintenanceController.cs +++ b/OpenAuth.WebApi/Controllers/ServiceControllers/AirportMaintenanceController.cs @@ -521,12 +521,12 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers /// /// [HttpGet] - public async Task>>> GetManageDeviceHmsList(int level, int model, DateTime startTime, DateTime endTime, int page, int limit) + public async Task>>> GetManageDeviceHmsList(int level, int model, DateTime startTime, DateTime endTime, int page, int limit, string message) { var result = new Response>>(); try { - result = await _app.GetManageDeviceHmsList(level, model, startTime, endTime, page, limit); + result = await _app.GetManageDeviceHmsList(level, model, startTime, endTime, page, limit, message); } catch (Exception ex) {