From 263224e78baaf70f10d5249664cf18bc3f8adb0c Mon Sep 17 00:00:00 2001 From: "821644@qq.com" <821644@qq.com> Date: Mon, 13 Apr 2026 11:37:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0AlarmService=E5=91=8A?= =?UTF-8?q?=E8=AD=A6=E6=9C=8D=E5=8A=A1=E6=95=B0=E6=8D=AE=E5=BA=93=E9=9B=86?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AlarmService使用IAlarmRepository实现告警CRUD操作 - 实现GetAllAlarmsAsync、GetActiveAlarmsAsync、CreateAlarmAsync等方法 - 实现GetAlarmsByTypeAsync、GetDeviceAlarmsAsync等查询方法 - 实现ResolveAlarmAsync解决告警功能 - dotnet build 0 Error --- Haoliang.Core/Services/StubServices.cs | 93 +++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 11 deletions(-) diff --git a/Haoliang.Core/Services/StubServices.cs b/Haoliang.Core/Services/StubServices.cs index c27610d..ba7e7e1 100644 --- a/Haoliang.Core/Services/StubServices.cs +++ b/Haoliang.Core/Services/StubServices.cs @@ -278,19 +278,90 @@ namespace Haoliang.Core.Services #region ========== 告警服务 ========== public class AlarmService : IAlarmService { - public Task> GetAllAlarmsAsync() => Task.FromResult>(new List()); - public Task> GetAlarmsByTypeAsync(AlarmType type) => Task.FromResult>(new List()); - public Task> GetActiveAlarmsAsync() => Task.FromResult>(new List()); - public Task GetAlarmByIdAsync(int alarmId) => Task.FromResult(null); - public Task CreateAlarmAsync(Alarm alarm) => Task.FromResult(alarm); - public Task UpdateAlarmAsync(int alarmId, Alarm alarm) => Task.FromResult(null); - public Task DeleteAlarmAsync(int alarmId) => Task.FromResult(false); - public Task ResolveAlarmAsync(int alarmId, string? resolutionNote) => Task.FromResult(false); + private readonly IAlarmRepository _alarmRepository; + + public AlarmService(IAlarmRepository alarmRepository) + { + _alarmRepository = alarmRepository; + } + + public async Task> GetAllAlarmsAsync() + { + return await _alarmRepository.GetAllAsync(); + } + + public async Task> GetAlarmsByTypeAsync(AlarmType type) + { + return await _alarmRepository.GetAlarmsByTypeAsync(type.ToString()); + } + + public async Task> GetActiveAlarmsAsync() + { + return await _alarmRepository.GetActiveAlarmsAsync(); + } + + public async Task GetAlarmByIdAsync(int alarmId) + { + return await _alarmRepository.GetByIdAsync(alarmId); + } + + public async Task CreateAlarmAsync(Alarm alarm) + { + alarm.CreatedAt = DateTime.Now; + alarm.OccurrenceTime = DateTime.Now; + await _alarmRepository.AddAsync(alarm); + await _alarmRepository.SaveAsync(); + return alarm; + } + + public async Task UpdateAlarmAsync(int alarmId, Alarm alarm) + { + var existing = await _alarmRepository.GetByIdAsync(alarmId); + if (existing == null) return null; + + existing.AlarmType = alarm.AlarmType; + existing.AlarmContent = alarm.AlarmContent; + existing.AlarmLevel = alarm.AlarmLevel; + existing.IsResolved = alarm.IsResolved; + existing.ResolutionNote = alarm.ResolutionNote; + + _alarmRepository.Update(existing); + await _alarmRepository.SaveAsync(); + return existing; + } + + public async Task DeleteAlarmAsync(int alarmId) + { + var alarm = await _alarmRepository.GetByIdAsync(alarmId); + if (alarm == null) return false; + + _alarmRepository.Remove(alarm); + return await _alarmRepository.SaveAsync() > 0; + } + + public async Task ResolveAlarmAsync(int alarmId, string? resolutionNote) + { + return await _alarmRepository.ResolveAlarmAsync(alarmId, resolutionNote, "System"); + } + public Task AcknowledgeAlarmAsync(int alarmId, string? acknowledgeNote) => Task.FromResult(false); - public Task> GetDeviceAlarmsAsync(int deviceId, int days = 7) => Task.FromResult>(new List()); - public Task> GetCriticalAlarmsAsync() => Task.FromResult>(new List()); + + public async Task> GetDeviceAlarmsAsync(int deviceId, int days = 7) + { + return await _alarmRepository.GetAlarmsByDeviceIdAsync(deviceId); + } + + public async Task> GetCriticalAlarmsAsync() + { + return await _alarmRepository.GetAlarmsByLevelAsync("Critical"); + } + public Task GetAlarmStatisticsAsync(DateTime date) => Task.FromResult(null); - public Task> GetAlarmsByDateRangeAsync(DateTime startDate, DateTime endDate) => Task.FromResult>(new List()); + + public async Task> GetAlarmsByDateRangeAsync(DateTime startDate, DateTime endDate) + { + return await _alarmRepository.GetAlarmsByDateRangeAsync(startDate, endDate); + } } public class AlarmRuleService : IAlarmRuleService