修改了触发器的问题

This commit is contained in:
2025-09-14 19:58:18 +08:00
parent 8e039e657a
commit ebf67b98fa
16 changed files with 144 additions and 56 deletions

View File

@@ -21,7 +21,7 @@ namespace DMS.Application.Services.Triggers
/// </summary>
/// <param name="id">触发器 ID</param>
/// <returns>触发器定义 DTO如果未找到则返回 null</returns>
Task<TriggerDefinitionDto?> GetTriggerByIdAsync(Guid id);
Task<TriggerDefinitionDto?> GetTriggerByIdAsync(int id);
/// <summary>
/// 创建一个新的触发器定义
@@ -36,20 +36,20 @@ namespace DMS.Application.Services.Triggers
/// <param name="id">要更新的触发器 ID</param>
/// <param name="triggerDto">包含更新信息的触发器定义 DTO</param>
/// <returns>更新后的触发器定义 DTO如果未找到则返回 null</returns>
Task<TriggerDefinitionDto?> UpdateTriggerAsync(Guid id, TriggerDefinitionDto triggerDto);
Task<TriggerDefinitionDto?> UpdateTriggerAsync(int id, TriggerDefinitionDto triggerDto);
/// <summary>
/// 删除一个触发器定义
/// </summary>
/// <param name="id">要删除的触发器 ID</param>
/// <returns>删除成功返回 true否则返回 false</returns>
Task<bool> DeleteTriggerAsync(Guid id);
Task<bool> DeleteTriggerAsync(int id);
/// <summary>
/// 获取与指定变量关联的所有触发器定义
/// </summary>
/// <param name="variableId">变量 ID</param>
/// <returns>该变量关联的触发器定义列表</returns>
Task<List<TriggerDefinitionDto>> GetTriggersForVariableAsync(Guid variableId);
Task<List<TriggerDefinitionDto>> GetTriggersForVariableAsync(int variableId);
}
}

View File

@@ -23,7 +23,7 @@ namespace DMS.Application.Services.Triggers.Impl
private readonly ITriggerActionExecutor _actionExecutor;
private readonly ILogger<TriggerEvaluationService> _logger; // 使用标准日志接口
// 为每个触发器存储抑制定时器
private readonly ConcurrentDictionary<Guid, ThreadingTimer> _suppressionTimers = new();
private readonly ConcurrentDictionary<int, ThreadingTimer> _suppressionTimers = new();
public TriggerEvaluationService(
ITriggerManagementService triggerManagementService,

View File

@@ -35,7 +35,7 @@ namespace DMS.Application.Services.Triggers.Impl
/// <summary>
/// 根据 ID 获取触发器定义
/// </summary>
public async Task<TriggerDefinitionDto?> GetTriggerByIdAsync(Guid id)
public async Task<TriggerDefinitionDto?> GetTriggerByIdAsync(int id)
{
var trigger = await _repositoryManager.Triggers.GetByIdAsync(id);
return trigger != null ? _mapper.Map<TriggerDefinitionDto>(trigger) : null;
@@ -64,7 +64,7 @@ namespace DMS.Application.Services.Triggers.Impl
/// <summary>
/// 更新一个已存在的触发器定义
/// </summary>
public async Task<TriggerDefinitionDto?> UpdateTriggerAsync(Guid id, TriggerDefinitionDto triggerDto)
public async Task<TriggerDefinitionDto?> UpdateTriggerAsync(int id, TriggerDefinitionDto triggerDto)
{
// 1. 获取现有实体
var existingTrigger = await _repositoryManager.Triggers.GetByIdAsync(id);
@@ -90,7 +90,7 @@ namespace DMS.Application.Services.Triggers.Impl
/// <summary>
/// 删除一个触发器定义
/// </summary>
public async Task<bool> DeleteTriggerAsync(Guid id)
public async Task<bool> DeleteTriggerAsync(int id)
{
return await _repositoryManager.Triggers.DeleteAsync(id);
}
@@ -98,7 +98,7 @@ namespace DMS.Application.Services.Triggers.Impl
/// <summary>
/// 获取与指定变量关联的所有触发器定义
/// </summary>
public async Task<List<TriggerDefinitionDto>> GetTriggersForVariableAsync(Guid variableId)
public async Task<List<TriggerDefinitionDto>> GetTriggersForVariableAsync(int variableId)
{
var triggers = await _repositoryManager.Triggers.GetByVariableIdAsync(variableId);
return _mapper.Map<List<TriggerDefinitionDto>>(triggers);

View File

@@ -83,21 +83,31 @@ public class VariableTableManagementService : IVariableTableManagementService
return;
DeviceDto deviceDto = null;
if (_appDataStorageService.Devices.TryGetValue(variableTableDto.DeviceId, out var device))
if (_appDataStorageService.Devices != null &&
_appDataStorageService.Devices.TryGetValue(variableTableDto.DeviceId, out var device))
{
deviceDto = device;
// 确保VariableTables不为null
device.VariableTables ??= new List<VariableTableDto>();
if (device.VariableTables == null)
device.VariableTables = new List<VariableTableDto>();
device.VariableTables.Add(variableTableDto);
variableTableDto.Device = device;
// 确保Device属性不为null
if (variableTableDto != null)
variableTableDto.Device = device;
}
if (_variableTables.TryAdd(variableTableDto.Id, variableTableDto))
// 确保_variableTables和variableTableDto不为null
if (_variableTables != null && variableTableDto != null)
{
OnVariableTableChanged?.Invoke(this,new VariableTableChangedEventArgs(
DataChangeType.Added,
variableTableDto,
deviceDto));
if (_variableTables.TryAdd(variableTableDto.Id, variableTableDto))
{
OnVariableTableChanged?.Invoke(this, new VariableTableChangedEventArgs(
DataChangeType.Added,
variableTableDto,
deviceDto));
}
}
}