2
3 - 重命名TriggerDefinition类为Trigger,移除冗余的Definition后缀
4 - 更新所有相关接口和实现类以使用新的Trigger类名
5 - 在Variable模型中添加Triggers集合,实现变量到触发器的反向关联
6 - 在TriggerVariableManagementService中完善触发器与变量的双向关联逻辑
7 - 将触发器-变量关联数据加载集成到DataLoaderService中
8 - 在依赖注入容器中注册ITriggerVariableManagementService和ITriggerVariableAppService
9 - 更新触发器相关的DTO映射配置
10 - 修复触发器评估服务中的类型引用问题
11
12 此更改统一了触发器模型命名,完善了触发器与变量的双向关联关系,提高了代码的一致性和可维护性。
126 lines
5.1 KiB
C#
126 lines
5.1 KiB
C#
using DMS.Application.Events;
|
|
using DMS.Application.Interfaces;
|
|
using DMS.Application.Interfaces.Database;
|
|
using DMS.Application.Interfaces.Management;
|
|
using DMS.Core.Enums;
|
|
using DMS.Core.Models.Triggers;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace DMS.Application.Services.Management;
|
|
|
|
public class TriggerVariableManagementService : ITriggerVariableManagementService
|
|
{
|
|
private readonly ITriggerVariableAppService _triggerVariableAppService;
|
|
private readonly IAppStorageService _appStorageService;
|
|
private readonly IEventService _eventService;
|
|
|
|
public TriggerVariableManagementService(ITriggerVariableAppService triggerVariableAppService,IAppStorageService appStorageService,IEventService eventService)
|
|
{
|
|
_triggerVariableAppService = triggerVariableAppService;
|
|
_appStorageService = appStorageService;
|
|
_eventService = eventService;
|
|
}
|
|
|
|
public async Task<TriggerVariable> AssignTriggerVariableAsync(TriggerVariable triggerVariable)
|
|
{
|
|
var newTriggerVariable = await _triggerVariableAppService.AssignTriggerVariableAsync(triggerVariable);
|
|
if (newTriggerVariable != null)
|
|
{
|
|
// Add to cache
|
|
_appStorageService.TriggerVariables.TryAdd(newTriggerVariable.Id, newTriggerVariable);
|
|
|
|
_eventService.RaiseTriggerVariableChanged(this, new TriggerVariableChangedEventArgs(ActionChangeType.Added, newTriggerVariable));
|
|
}
|
|
|
|
return newTriggerVariable;
|
|
}
|
|
|
|
public async Task<List<TriggerVariable>> LoadAllTriggerVariablesAsync()
|
|
{
|
|
var triggerVariables = await _triggerVariableAppService.GetAllAsync();
|
|
foreach (var triggerVariable in triggerVariables)
|
|
{
|
|
// Add to cache
|
|
_appStorageService.TriggerVariables.TryAdd(triggerVariable.Id, triggerVariable);
|
|
|
|
|
|
if (_appStorageService.Triggers.TryGetValue(triggerVariable.TriggerDefinitionId, out var trigger))
|
|
{
|
|
if (_appStorageService.Variables.TryGetValue(triggerVariable.VariableId, out var variable))
|
|
{
|
|
trigger.Variables.Add(variable);
|
|
variable.Triggers.Add(trigger);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
_eventService.RaiseTriggerVariableChanged(this, new TriggerVariableChangedEventArgs(ActionChangeType.Added, triggerVariable));
|
|
}
|
|
|
|
return triggerVariables;
|
|
}
|
|
|
|
public async Task<int> UpdateAsync(TriggerVariable triggerVariable)
|
|
{
|
|
int res = await _triggerVariableAppService.UpdateTriggerVariableAsync(triggerVariable);
|
|
if (res > 0)
|
|
{
|
|
// Update cache
|
|
if (_appStorageService.TriggerVariables.TryGetValue(triggerVariable.Id, out var existingTriggerVariable))
|
|
{
|
|
existingTriggerVariable.TriggerDefinitionId = triggerVariable.TriggerDefinitionId;
|
|
existingTriggerVariable.VariableId = triggerVariable.VariableId;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
public async Task<bool> DeleteAsync(int id)
|
|
{
|
|
var result = await _triggerVariableAppService.RemoveTriggerVariableAsync(id);
|
|
if (result == 0) return false;
|
|
|
|
if (_appStorageService.TriggerVariables.TryGetValue(id, out var triggerVariable))
|
|
{
|
|
_appStorageService.TriggerVariables.TryRemove(triggerVariable.Id, out _);
|
|
_eventService.RaiseTriggerVariableChanged(
|
|
this, new TriggerVariableChangedEventArgs(ActionChangeType.Deleted, triggerVariable));
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// public async Task<List<int>> GetVariableIdsByTriggerIdAsync(int triggerId)
|
|
// {
|
|
// return await _triggerVariableAppService.GetVariableIdsByTriggerIdAsync(triggerId);
|
|
// }
|
|
|
|
// public async Task<List<int>> GetTriggerIdsByVariableIdAsync(int variableId)
|
|
// {
|
|
// return await _triggerVariableAppService.GetTriggerIdsByVariableIdAsync(variableId);
|
|
// }
|
|
|
|
public async Task<List<TriggerVariable>> AddTriggerVariablesAsync(List<TriggerVariable> triggerVariables)
|
|
{
|
|
var addedTriggerVariables = await _triggerVariableAppService.AddTriggerVariablesAsync(triggerVariables);
|
|
foreach (var triggerVariable in addedTriggerVariables)
|
|
{
|
|
// Add to cache
|
|
_appStorageService.TriggerVariables.TryAdd(triggerVariable.Id, triggerVariable);
|
|
_eventService.RaiseTriggerVariableChanged(this, new TriggerVariableChangedEventArgs(ActionChangeType.Added, triggerVariable));
|
|
}
|
|
|
|
return addedTriggerVariables;
|
|
}
|
|
|
|
public async Task<bool> DeleteByTriggerIdAsync(int triggerId)
|
|
{
|
|
// var result = await _triggerVariableAppService.RemoveTriggerVariablesByTriggerIdAsync(triggerId);
|
|
// 注意:这里可能需要额外的缓存管理逻辑,因为删除的是多个条目
|
|
// 可能需要根据triggerId获取这些变量ID并从缓存中移除
|
|
// 为简化实现,我们先不处理缓存中的逐个删除,而依赖于后续的重新加载
|
|
// return result != null;
|
|
return false;
|
|
}
|
|
} |