diff --git a/src/Application/Masa.Alert.Application/AlarmHistories/EventHandler/TriggerAlarmEventHandler.cs b/src/Application/Masa.Alert.Application/AlarmHistories/EventHandler/TriggerAlarmEventHandler.cs index 7e1cfe1..f096f27 100644 --- a/src/Application/Masa.Alert.Application/AlarmHistories/EventHandler/TriggerAlarmEventHandler.cs +++ b/src/Application/Masa.Alert.Application/AlarmHistories/EventHandler/TriggerAlarmEventHandler.cs @@ -29,13 +29,13 @@ public async Task HandleEventAsync(TriggerAlarmEvent eto) { alarm = new AlarmHistory(eto.AlarmRuleId, eto.AlertSeverity, isNotification, eto.TriggerRuleItems); alarm.AddAlarmRuleRecord(eto.ExcuteTime, eto.AggregateResult, true, eto.ConsecutiveCount, eto.TriggerRuleItems); - alarm.SetIsNotification(isNotification, isSilence); + alarm.SetIsNotification(isNotification, isSilence, eto.AggregateResult); await _repository.AddAsync(alarm); } else { alarm.Update(eto.AlertSeverity, isNotification, eto.TriggerRuleItems); - alarm.SetIsNotification(isNotification, isSilence); + alarm.SetIsNotification(isNotification, isSilence, eto.AggregateResult); alarm.AddAlarmRuleRecord(eto.ExcuteTime, eto.AggregateResult, true, eto.ConsecutiveCount, eto.TriggerRuleItems); await _repository.UpdateAsync(alarm); diff --git a/src/Application/Masa.Alert.Application/AlarmRules/EventHandler/SendAlarmNotificationEventHandler.cs b/src/Application/Masa.Alert.Application/AlarmRules/EventHandler/SendAlarmNotificationEventHandler.cs index 800b6cd..fd33dd1 100644 --- a/src/Application/Masa.Alert.Application/AlarmRules/EventHandler/SendAlarmNotificationEventHandler.cs +++ b/src/Application/Masa.Alert.Application/AlarmRules/EventHandler/SendAlarmNotificationEventHandler.cs @@ -37,7 +37,10 @@ public async Task HandleEventAsync(SendAlarmNotificationEvent eto) var notificationConfig = item.AlarmRuleItem.NotificationConfig; var variables = new Dictionary(); - var alarmRule = await _alarmRuleRepository.FindAsync(x => x.Id == eto.AlarmRuleId); + + AddAggregateVariables(variables, eto.AggregateResult); + + var alarmRule = await _alarmRuleRepository.FindAsync(x => x.Id == alarm.AlarmRuleId); if (alarmRule != null) { variables.TryAdd(AlertConsts.ALARM_RULE_NAME_NOTIFICATION_TEMPLATE_VAR_NAME, alarmRule.DisplayName); @@ -55,6 +58,14 @@ public async Task HandleEventAsync(SendAlarmNotificationEvent eto) await _repository.UpdateAsync(alarm); } + private void AddAggregateVariables(Dictionary variables, ConcurrentDictionary aggregateResult) + { + foreach (var aggregateItem in aggregateResult) + { + variables.TryAdd(aggregateItem.Key, aggregateItem.Value); + } + } + private async Task AddLogVariablesAsync(AlarmRule alarmRule, Dictionary variables) { var checkTime = DateTimeOffset.Now; @@ -63,6 +74,9 @@ private async Task AddLogVariablesAsync(AlarmRule alarmRule, Dictionary aggregateResult) { IsNotification = isNotification; if (IsNotification && !isSilence) { - AddDomainEvent(new SendAlarmNotificationEvent(Id, AlarmRuleId)); + AddDomainEvent(new SendAlarmNotificationEvent(Id, aggregateResult)); } } diff --git a/src/Domain/Masa.Alert.Domain/AlarmRules/Events/SendAlarmNotificationEvent.cs b/src/Domain/Masa.Alert.Domain/AlarmRules/Events/SendAlarmNotificationEvent.cs index 211188c..e7a9512 100644 --- a/src/Domain/Masa.Alert.Domain/AlarmRules/Events/SendAlarmNotificationEvent.cs +++ b/src/Domain/Masa.Alert.Domain/AlarmRules/Events/SendAlarmNotificationEvent.cs @@ -3,6 +3,6 @@ namespace Masa.Alert.Domain.AlarmRules.Events; -public record SendAlarmNotificationEvent(Guid AlarmHistoryId, Guid AlarmRuleId) : DomainEvent +public record SendAlarmNotificationEvent(Guid AlarmHistoryId, ConcurrentDictionary AggregateResult) : DomainEvent { } \ No newline at end of file