From cb984b1b91241661d71ec3945d532949ceac542a Mon Sep 17 00:00:00 2001 From: "David P.G" Date: Sat, 18 Oct 2025 18:23:14 +0800 Subject: [PATCH] =?UTF-8?q?=20=201=20feat:=20=E9=87=8D=E6=9E=84=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E5=99=A8=E5=AE=9A=E4=B9=89=E6=A8=A1=E5=9E=8B=E5=B9=B6?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=A7=A6=E5=8F=91=E5=99=A8-=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E5=85=B3=E8=81=94=E5=8A=9F=E8=83=BD=20=20=20=20=202?= =?UTF-8?q?=20=20=20=20=203=20-=20=E9=87=8D=E5=91=BD=E5=90=8DTriggerDefini?= =?UTF-8?q?tion=E7=B1=BB=E4=B8=BATrigger=EF=BC=8C=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=86=97=E4=BD=99=E7=9A=84Definition=E5=90=8E=E7=BC=80=20=20?= =?UTF-8?q?=20=20=204=20-=20=E6=9B=B4=E6=96=B0=E6=89=80=E6=9C=89=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3=E5=92=8C=E5=AE=9E=E7=8E=B0=E7=B1=BB?= =?UTF-8?q?=E4=BB=A5=E4=BD=BF=E7=94=A8=E6=96=B0=E7=9A=84Trigger=E7=B1=BB?= =?UTF-8?q?=E5=90=8D=20=20=20=20=205=20-=20=E5=9C=A8Variable=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E4=B8=AD=E6=B7=BB=E5=8A=A0Triggers=E9=9B=86=E5=90=88?= =?UTF-8?q?=EF=BC=8C=E5=AE=9E=E7=8E=B0=E5=8F=98=E9=87=8F=E5=88=B0=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E5=99=A8=E7=9A=84=E5=8F=8D=E5=90=91=E5=85=B3=E8=81=94?= =?UTF-8?q?=20=20=20=20=206=20-=20=E5=9C=A8TriggerVariableManagementServic?= =?UTF-8?q?e=E4=B8=AD=E5=AE=8C=E5=96=84=E8=A7=A6=E5=8F=91=E5=99=A8?= =?UTF-8?q?=E4=B8=8E=E5=8F=98=E9=87=8F=E7=9A=84=E5=8F=8C=E5=90=91=E5=85=B3?= =?UTF-8?q?=E8=81=94=E9=80=BB=E8=BE=91=20=20=20=20=207=20-=20=E5=B0=86?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=99=A8-=E5=8F=98=E9=87=8F=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=95=B0=E6=8D=AE=E5=8A=A0=E8=BD=BD=E9=9B=86=E6=88=90?= =?UTF-8?q?=E5=88=B0DataLoaderService=E4=B8=AD=20=20=20=20=208=20-=20?= =?UTF-8?q?=E5=9C=A8=E4=BE=9D=E8=B5=96=E6=B3=A8=E5=85=A5=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E4=B8=AD=E6=B3=A8=E5=86=8CITriggerVariableManagementService?= =?UTF-8?q?=E5=92=8CITriggerVariableAppService=20=20=20=20=209=20-=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=A7=A6=E5=8F=91=E5=99=A8=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E7=9A=84DTO=E6=98=A0=E5=B0=84=E9=85=8D=E7=BD=AE=20=20=20=2010?= =?UTF-8?q?=20-=20=E4=BF=AE=E5=A4=8D=E8=A7=A6=E5=8F=91=E5=99=A8=E8=AF=84?= =?UTF-8?q?=E4=BC=B0=E6=9C=8D=E5=8A=A1=E4=B8=AD=E7=9A=84=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E9=97=AE=E9=A2=98=20=20=20=2011=20=20=20=201?= =?UTF-8?q?2=20=E6=AD=A4=E6=9B=B4=E6=94=B9=E7=BB=9F=E4=B8=80=E4=BA=86?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=99=A8=E6=A8=A1=E5=9E=8B=E5=91=BD=E5=90=8D?= =?UTF-8?q?=EF=BC=8C=E5=AE=8C=E5=96=84=E4=BA=86=E8=A7=A6=E5=8F=91=E5=99=A8?= =?UTF-8?q?=E4=B8=8E=E5=8F=98=E9=87=8F=E7=9A=84=E5=8F=8C=E5=90=91=E5=85=B3?= =?UTF-8?q?=E8=81=94=E5=85=B3=E7=B3=BB=EF=BC=8C=E6=8F=90=E9=AB=98=E4=BA=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=9A=84=E4=B8=80=E8=87=B4=E6=80=A7=E5=92=8C?= =?UTF-8?q?=E5=8F=AF=E7=BB=B4=E6=8A=A4=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Interfaces/Database/ITriggerAppService.cs | 10 ++++---- .../Interfaces/IAppStorageService.cs | 2 +- .../Management/ITriggerManagementService.cs | 10 ++++---- DMS.Application/Services/AppStorageService.cs | 2 +- DMS.Application/Services/DataLoaderService.cs | 5 ++++ .../Services/Database/TriggerAppService.cs | 12 +++++----- .../Management/TriggerManagementService.cs | 24 +++++++++---------- .../TriggerVariableManagementService.cs | 1 + .../Triggers/Impl/TriggerEvaluationService.cs | 4 ++-- .../Services/Triggers/TriggerContext.cs | 2 +- .../Triggers/ITriggerRepository.cs | 4 ++-- .../{TriggerDefinition.cs => Trigger.cs} | 2 +- DMS.Core/Models/Variable.cs | 5 ++++ DMS.Infrastructure/Profiles/MappingProfile.cs | 2 +- .../Repositories/TriggerRepository.cs | 22 ++++++++--------- DMS.WPF/App.xaml.cs | 2 ++ DMS.WPF/Interfaces/ITriggerDataService.cs | 2 +- DMS.WPF/Services/TriggerDataService.cs | 6 ++--- DMS.WPF/ViewModels/TriggersViewModel.cs | 2 +- 19 files changed, 66 insertions(+), 53 deletions(-) rename DMS.Core/Models/Triggers/{TriggerDefinition.cs => Trigger.cs} (98%) diff --git a/DMS.Application/Interfaces/Database/ITriggerAppService.cs b/DMS.Application/Interfaces/Database/ITriggerAppService.cs index 77296a2..3b2c7f9 100644 --- a/DMS.Application/Interfaces/Database/ITriggerAppService.cs +++ b/DMS.Application/Interfaces/Database/ITriggerAppService.cs @@ -14,27 +14,27 @@ namespace DMS.Application.Interfaces.Database /// /// 触发器ID。 /// 触发器定义实体。 - Task GetTriggerByIdAsync(int id); + Task GetTriggerByIdAsync(int id); /// /// 异步获取所有触发器定义。 /// /// 触发器定义实体列表。 - Task> GetAllTriggersAsync(); + Task> GetAllTriggersAsync(); /// /// 异步创建一个新触发器定义及其关联的变量ID。 /// /// 要创建的触发器定义。 /// 新创建的触发器定义。 - Task CreateTriggerAsync(TriggerDefinition trigger); + Task CreateTriggerAsync(Trigger trigger); /// /// 异步更新一个已存在的触发器定义及其关联的变量ID。 /// /// 要更新的触发器定义。 /// 受影响的行数。 - Task UpdateTriggerAsync(TriggerDefinition trigger); + Task UpdateTriggerAsync(Trigger trigger); /// /// 异步删除一个触发器定义及其关联的变量关系。 @@ -48,6 +48,6 @@ namespace DMS.Application.Interfaces.Database /// /// 变量ID。 /// 与指定变量关联的触发器定义实体列表。 - Task> GetTriggersByVariableIdAsync(int variableId); + Task> GetTriggersByVariableIdAsync(int variableId); } } \ No newline at end of file diff --git a/DMS.Application/Interfaces/IAppStorageService.cs b/DMS.Application/Interfaces/IAppStorageService.cs index 2c1e9af..34d50bb 100644 --- a/DMS.Application/Interfaces/IAppStorageService.cs +++ b/DMS.Application/Interfaces/IAppStorageService.cs @@ -49,7 +49,7 @@ public interface IAppStorageService /// /// 安全字典,用于存储所有触发器定义数据 /// - ConcurrentDictionary Triggers { get; } + ConcurrentDictionary Triggers { get; } /// /// 安全字典,用于存储所有触发器与变量关联数据 diff --git a/DMS.Application/Interfaces/Management/ITriggerManagementService.cs b/DMS.Application/Interfaces/Management/ITriggerManagementService.cs index 0f8fef7..c820276 100644 --- a/DMS.Application/Interfaces/Management/ITriggerManagementService.cs +++ b/DMS.Application/Interfaces/Management/ITriggerManagementService.cs @@ -12,21 +12,21 @@ namespace DMS.Application.Interfaces.Management /// 获取所有触发器定义 /// /// 触发器定义列表 - List GetAllTriggersAsync(); + List GetAllTriggersAsync(); /// /// 根据 ID 获取触发器定义 /// /// 触发器 ID /// 触发器定义 DTO,如果未找到则返回 null - Task GetTriggerByIdAsync(int id); + Task GetTriggerByIdAsync(int id); /// /// 创建一个新的触发器定义 /// /// 要创建的触发器定义 DTO /// 创建成功的触发器定义 DTO - Task CreateTriggerAsync(TriggerDefinition triggerDto); + Task CreateTriggerAsync(Trigger triggerDto); /// /// 更新一个已存在的触发器定义 @@ -34,7 +34,7 @@ namespace DMS.Application.Interfaces.Management /// 要更新的触发器 ID /// 包含更新信息的触发器定义 DTO /// 更新后的触发器定义 DTO,如果未找到则返回 null - Task UpdateTriggerAsync(int id, TriggerDefinition triggerDto); + Task UpdateTriggerAsync(int id, Trigger triggerDto); /// /// 删除一个触发器定义 @@ -48,7 +48,7 @@ namespace DMS.Application.Interfaces.Management /// /// 变量 ID /// 该变量关联的触发器定义列表 - Task> GetTriggersForVariableAsync(int variableId); + Task> GetTriggersForVariableAsync(int variableId); /// /// 异步加载所有触发器数据 diff --git a/DMS.Application/Services/AppStorageService.cs b/DMS.Application/Services/AppStorageService.cs index 0164e41..f7f8ff5 100644 --- a/DMS.Application/Services/AppStorageService.cs +++ b/DMS.Application/Services/AppStorageService.cs @@ -58,7 +58,7 @@ public class AppStorageService : IAppStorageService /// /// 安全字典,用于存储所有触发器定义数据 /// - public ConcurrentDictionary Triggers { get; } = new(); + public ConcurrentDictionary Triggers { get; } = new(); /// /// 安全字典,用于存储所有触发器与变量关联数据 diff --git a/DMS.Application/Services/DataLoaderService.cs b/DMS.Application/Services/DataLoaderService.cs index 25a9bad..d2286d5 100644 --- a/DMS.Application/Services/DataLoaderService.cs +++ b/DMS.Application/Services/DataLoaderService.cs @@ -16,6 +16,7 @@ public class DataLoaderService : IDataLoaderService { private readonly IMqttManagementService _mqttManagementService; private readonly IMqttAliasManagementService _mqttAliasManagementService; + private readonly ITriggerVariableManagementService _triggerVariableManagementService; private readonly ITriggerManagementService _triggerManagementService; // 添加触发器管理服务 private readonly IEventService _eventService; // 添加事件服务 private readonly IDeviceManagementService _deviceManagementService; // 添加设备管理服务 @@ -29,6 +30,7 @@ public class DataLoaderService : IDataLoaderService public const int LoadLogCount =100; public DataLoaderService(IMqttManagementService mqttManagementService, IMqttAliasManagementService mqttAliasManagementService, + ITriggerVariableManagementService triggerVariableManagementService, ITriggerManagementService triggerManagementService, // 添加触发器管理服务参数 IEventService eventService, // 添加事件服务参数 IDeviceManagementService deviceManagementService, // 添加设备管理服务参数 @@ -39,6 +41,7 @@ public class DataLoaderService : IDataLoaderService { _mqttManagementService = mqttManagementService; _mqttAliasManagementService = mqttAliasManagementService; + _triggerVariableManagementService = triggerVariableManagementService; _triggerManagementService = triggerManagementService; // 初始化触发器管理服务 _eventService = eventService; // 初始化事件服务 _deviceManagementService = deviceManagementService; // 初始化设备管理服务 @@ -74,6 +77,8 @@ public class DataLoaderService : IDataLoaderService // 加载所有触发器 await _triggerManagementService.LoadAllTriggersAsync(); + // 加载触发器和变量的关联 + await _triggerVariableManagementService.LoadAllTriggerVariablesAsync(); _eventService.RaiseLoadDataCompleted(this, new DataLoadCompletedEventArgs(true, "数据加载成功")); } diff --git a/DMS.Application/Services/Database/TriggerAppService.cs b/DMS.Application/Services/Database/TriggerAppService.cs index 2ebe138..2f12893 100644 --- a/DMS.Application/Services/Database/TriggerAppService.cs +++ b/DMS.Application/Services/Database/TriggerAppService.cs @@ -33,7 +33,7 @@ namespace DMS.Application.Services.Database /// /// 触发器ID。 /// 触发器定义实体。 - public async Task GetTriggerByIdAsync(int id) + public async Task GetTriggerByIdAsync(int id) { var dbTrigger = await _repositoryManager.Triggers.GetByIdAsync(id); return dbTrigger; @@ -43,7 +43,7 @@ namespace DMS.Application.Services.Database /// 异步获取所有触发器定义。 /// /// 触发器定义实体列表。 - public async Task> GetAllTriggersAsync() + public async Task> GetAllTriggersAsync() { var triggers = await _repositoryManager.Triggers.GetAllAsync(); var triggerVariables = await _repositoryManager.TriggerVariables.GetAllAsync(); @@ -62,7 +62,7 @@ namespace DMS.Application.Services.Database /// /// 要创建的触发器定义。 /// 新创建的触发器定义。 - public async Task CreateTriggerAsync(TriggerDefinition trigger) + public async Task CreateTriggerAsync(Trigger trigger) { try { @@ -99,7 +99,7 @@ namespace DMS.Application.Services.Database /// /// 要更新的触发器定义。 /// 受影响的行数。 - public async Task UpdateTriggerAsync(TriggerDefinition trigger) + public async Task UpdateTriggerAsync(Trigger trigger) { try { @@ -169,7 +169,7 @@ namespace DMS.Application.Services.Database /// /// 变量ID。 /// 与指定变量关联的触发器定义实体列表。 - public async Task> GetTriggersByVariableIdAsync(int variableId) + public async Task> GetTriggersByVariableIdAsync(int variableId) { var stopwatch = new Stopwatch(); stopwatch.Start(); @@ -177,7 +177,7 @@ namespace DMS.Application.Services.Database // // 获取关联的触发器ID列表 // var triggerIds = await _repositoryManager.GetTriggerIdsByVariableIdAsync(variableId); - // var triggers = new List(); + // var triggers = new List(); // if (triggerIds.Any()) // { // // 获取所有关联的触发器 diff --git a/DMS.Application/Services/Management/TriggerManagementService.cs b/DMS.Application/Services/Management/TriggerManagementService.cs index 211c92d..a6f6234 100644 --- a/DMS.Application/Services/Management/TriggerManagementService.cs +++ b/DMS.Application/Services/Management/TriggerManagementService.cs @@ -27,16 +27,16 @@ namespace DMS.Application.Services.Management /// /// 获取所有触发器定义 /// - public List GetAllTriggersAsync() + public List GetAllTriggersAsync() { var triggers = _appStorageService.Triggers.Values.ToList(); - return _mapper.Map>(triggers); + return _mapper.Map>(triggers); } /// /// 根据 ID 获取触发器定义 /// - public async Task GetTriggerByIdAsync(int id) + public async Task GetTriggerByIdAsync(int id) { _appStorageService.Triggers.TryGetValue(id, out var trigger); return trigger; @@ -46,13 +46,13 @@ namespace DMS.Application.Services.Management /// /// 创建一个新的触发器定义 /// - public async Task CreateTriggerAsync(TriggerDefinition triggerDto) + public async Task CreateTriggerAsync(Trigger triggerDto) { // 1. 验证 DTO (可以在应用层或领域层做) ValidateTriggerDto(triggerDto); // 2. 转换 DTO 到实体 - var triggerEntity = _mapper.Map(triggerDto); + var triggerEntity = _mapper.Map(triggerDto); triggerEntity.CreatedAt = DateTime.UtcNow; triggerEntity.UpdatedAt = DateTime.UtcNow; @@ -60,7 +60,7 @@ namespace DMS.Application.Services.Management var createdTrigger = await _repositoryManager.Triggers.AddAsync(triggerEntity); // 4. 转换回 DTO 并返回 - var result = _mapper.Map(createdTrigger); + var result = _mapper.Map(createdTrigger); // 5. 同步更新AppDataStorageService中的Triggers字典 _appStorageService.Triggers[result.Id] = result; @@ -71,7 +71,7 @@ namespace DMS.Application.Services.Management /// /// 更新一个已存在的触发器定义 /// - public async Task UpdateTriggerAsync(int id, TriggerDefinition triggerDto) + public async Task UpdateTriggerAsync(int id, Trigger triggerDto) { // 1. 获取现有实体 var existingTrigger = await _repositoryManager.Triggers.GetByIdAsync(id); @@ -91,7 +91,7 @@ namespace DMS.Application.Services.Management return null; // 5. 转换回 DTO 并返回 - var result = _mapper.Map(updatedTrigger); + var result = _mapper.Map(updatedTrigger); // 6. 同步更新AppDataStorageService中的Triggers字典 _appStorageService.Triggers[result.Id] = result; @@ -119,10 +119,10 @@ namespace DMS.Application.Services.Management /// /// 获取与指定变量关联的所有触发器定义 /// - public async Task> GetTriggersForVariableAsync(int variableId) + public async Task> GetTriggersForVariableAsync(int variableId) { // var triggers = await _repositoryManager.Triggers.GetByVariableIdAsync(variableId); - // return _mapper.Map>(triggers); + // return _mapper.Map>(triggers); return null; } @@ -141,9 +141,9 @@ namespace DMS.Application.Services.Management } /// - /// 内部方法:验证 TriggerDefinition 的有效性 + /// 内部方法:验证 Trigger 的有效性 /// - private void ValidateTriggerDto(TriggerDefinition dto) + private void ValidateTriggerDto(Trigger dto) { // 检查是否至少关联了一个变量 if (dto.Variables == null || !dto.Variables.Any()) diff --git a/DMS.Application/Services/Management/TriggerVariableManagementService.cs b/DMS.Application/Services/Management/TriggerVariableManagementService.cs index eb232cb..be88e23 100644 --- a/DMS.Application/Services/Management/TriggerVariableManagementService.cs +++ b/DMS.Application/Services/Management/TriggerVariableManagementService.cs @@ -50,6 +50,7 @@ public class TriggerVariableManagementService : ITriggerVariableManagementServic if (_appStorageService.Variables.TryGetValue(triggerVariable.VariableId, out var variable)) { trigger.Variables.Add(variable); + variable.Triggers.Add(trigger); } } diff --git a/DMS.Application/Services/Triggers/Impl/TriggerEvaluationService.cs b/DMS.Application/Services/Triggers/Impl/TriggerEvaluationService.cs index 13011b1..c6f8983 100644 --- a/DMS.Application/Services/Triggers/Impl/TriggerEvaluationService.cs +++ b/DMS.Application/Services/Triggers/Impl/TriggerEvaluationService.cs @@ -101,7 +101,7 @@ namespace DMS.Application.Services.Triggers.Impl /// /// 内部方法:评估单个触发器的条件 /// - private bool EvaluateCondition(TriggerDefinition trigger, object currentValueObj) + private bool EvaluateCondition(Trigger trigger, object currentValueObj) { if (currentValueObj == null) { @@ -139,7 +139,7 @@ namespace DMS.Application.Services.Triggers.Impl /// /// 内部方法:检查触发器是否处于抑制窗口期内 /// - private bool IsWithinSuppressionWindow(TriggerDefinition trigger) + private bool IsWithinSuppressionWindow(Trigger trigger) { if (!trigger.SuppressionDuration.HasValue || !trigger.LastTriggeredAt.HasValue) return false; diff --git a/DMS.Application/Services/Triggers/TriggerContext.cs b/DMS.Application/Services/Triggers/TriggerContext.cs index cc5f084..5184e83 100644 --- a/DMS.Application/Services/Triggers/TriggerContext.cs +++ b/DMS.Application/Services/Triggers/TriggerContext.cs @@ -11,5 +11,5 @@ namespace DMS.Application.Services.Triggers /// 被触发的触发器定义 /// 触发时变量的当前值 /// 关联的变量信息 - public record TriggerContext(TriggerDefinition Trigger, object CurrentValue, Variable Variable); + public record TriggerContext(Trigger Trigger, object CurrentValue, Variable Variable); } \ No newline at end of file diff --git a/DMS.Core/Interfaces/Repositories/Triggers/ITriggerRepository.cs b/DMS.Core/Interfaces/Repositories/Triggers/ITriggerRepository.cs index 0304336..f2ee511 100644 --- a/DMS.Core/Interfaces/Repositories/Triggers/ITriggerRepository.cs +++ b/DMS.Core/Interfaces/Repositories/Triggers/ITriggerRepository.cs @@ -7,9 +7,9 @@ using DMS.Core.Interfaces.Repositories; namespace DMS.Core.Interfaces.Repositories.Triggers { /// - /// 触发器仓储接口 (定义对 TriggerDefinition 实体的数据访问方法) + /// 触发器仓储接口 (定义对 Trigger 实体的数据访问方法) /// - public interface ITriggerRepository : IBaseRepository + public interface ITriggerRepository : IBaseRepository { } } \ No newline at end of file diff --git a/DMS.Core/Models/Triggers/TriggerDefinition.cs b/DMS.Core/Models/Triggers/Trigger.cs similarity index 98% rename from DMS.Core/Models/Triggers/TriggerDefinition.cs rename to DMS.Core/Models/Triggers/Trigger.cs index 5b32941..e917520 100644 --- a/DMS.Core/Models/Triggers/TriggerDefinition.cs +++ b/DMS.Core/Models/Triggers/Trigger.cs @@ -30,7 +30,7 @@ namespace DMS.Core.Models.Triggers /// /// 触发器定义领域模型 /// - public class TriggerDefinition + public class Trigger { /// /// 触发器唯一标识符 diff --git a/DMS.Core/Models/Variable.cs b/DMS.Core/Models/Variable.cs index 1085677..81bf207 100644 --- a/DMS.Core/Models/Variable.cs +++ b/DMS.Core/Models/Variable.cs @@ -1,6 +1,7 @@ using DMS.Core.Enums; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; +using DMS.Core.Models.Triggers; namespace DMS.Core.Models; @@ -58,6 +59,10 @@ public class Variable /// 此变量的所有MQTT发布别名关联。一个变量可以关联多个MQTT服务器,每个关联可以有独立的别名。 /// public List MqttAliases { get; set; } = new(); + /// + /// 此变量的所有触发器关联。一个变量可以关联多个触发器 + /// + public List Triggers { get; set; } = new(); /// /// OPC UA NodeId (仅当 Protocol 为 OpcUa 时有效)。 diff --git a/DMS.Infrastructure/Profiles/MappingProfile.cs b/DMS.Infrastructure/Profiles/MappingProfile.cs index fb5a958..ce7aa6a 100644 --- a/DMS.Infrastructure/Profiles/MappingProfile.cs +++ b/DMS.Infrastructure/Profiles/MappingProfile.cs @@ -45,7 +45,7 @@ public class MappingProfile : Profile CreateMap().ReverseMap(); // --- 触发器映射 --- - CreateMap() + CreateMap() .ReverseMap(); } } diff --git a/DMS.Infrastructure/Repositories/TriggerRepository.cs b/DMS.Infrastructure/Repositories/TriggerRepository.cs index 5750e6c..e42de04 100644 --- a/DMS.Infrastructure/Repositories/TriggerRepository.cs +++ b/DMS.Infrastructure/Repositories/TriggerRepository.cs @@ -36,20 +36,20 @@ namespace DMS.Infrastructure.Repositories /// /// 触发器定义的唯一标识符。 /// 对应的触发器定义实体,如果不存在则为null。 - public async Task GetByIdAsync(int id) + public async Task GetByIdAsync(int id) { var dbTrigger = await base.GetByIdAsync(id); - return _mapper.Map(dbTrigger); + return _mapper.Map(dbTrigger); } /// /// 异步获取所有触发器定义。 /// /// 包含所有触发器定义实体的列表。 - public async Task> GetAllAsync() + public async Task> GetAllAsync() { var dbList = await base.GetAllAsync(); - return _mapper.Map>(dbList); + return _mapper.Map>(dbList); } /// @@ -57,7 +57,7 @@ namespace DMS.Infrastructure.Repositories /// /// 要添加的触发器定义实体。 /// 添加成功后的触发器定义实体(包含数据库生成的ID等信息)。 - public async Task AddAsync(TriggerDefinition entity) + public async Task AddAsync(Trigger entity) { var dbTrigger = _mapper.Map(entity); var addedDbTrigger = await base.AddAsync(dbTrigger); @@ -69,7 +69,7 @@ namespace DMS.Infrastructure.Repositories /// /// 要更新的触发器定义实体。 /// 受影响的行数。 - public async Task UpdateAsync(TriggerDefinition entity) + public async Task UpdateAsync(Trigger entity) { var dbTrigger = _mapper.Map(entity); return await base.UpdateAsync(dbTrigger); @@ -80,7 +80,7 @@ namespace DMS.Infrastructure.Repositories /// /// 要删除的触发器定义实体。 /// 受影响的行数。 - public async Task DeleteAsync(TriggerDefinition entity) + public async Task DeleteAsync(Trigger entity) { return await base.DeleteAsync(_mapper.Map(entity)); } @@ -106,17 +106,17 @@ namespace DMS.Infrastructure.Repositories /// /// 要获取的触发器定义数量。 /// 包含指定数量触发器定义实体的列表。 - public new async Task> TakeAsync(int number) + public new async Task> TakeAsync(int number) { var dbList = await base.TakeAsync(number); - return _mapper.Map>(dbList); + return _mapper.Map>(dbList); } - public async Task> AddBatchAsync(List entities) + public async Task> AddBatchAsync(List entities) { var dbEntities = _mapper.Map>(entities); var addedEntities = await base.AddBatchAsync(dbEntities); - return _mapper.Map>(addedEntities); + return _mapper.Map>(addedEntities); } } } \ No newline at end of file diff --git a/DMS.WPF/App.xaml.cs b/DMS.WPF/App.xaml.cs index 8ce1099..f57e0ab 100644 --- a/DMS.WPF/App.xaml.cs +++ b/DMS.WPF/App.xaml.cs @@ -271,6 +271,8 @@ public partial class App : System.Windows.Application services.AddSingleton(); // 注册触发器管理服务 services.AddSingleton(); // 注册触发器评估服务 services.AddSingleton(); // 注册触发器动作执行器 + services.AddSingleton(); // 注册触发器变量管理服务 + services.AddSingleton(); // 注册触发器变量应用服务 services.AddSingleton(); services.AddSingleton(); diff --git a/DMS.WPF/Interfaces/ITriggerDataService.cs b/DMS.WPF/Interfaces/ITriggerDataService.cs index d5b2eb0..491efee 100644 --- a/DMS.WPF/Interfaces/ITriggerDataService.cs +++ b/DMS.WPF/Interfaces/ITriggerDataService.cs @@ -17,7 +17,7 @@ public interface ITriggerDataService /// /// 添加触发器。 /// - Task AddTrigger(TriggerItem dto); + Task AddTrigger(TriggerItem triggerItem); /// /// 删除触发器。 diff --git a/DMS.WPF/Services/TriggerDataService.cs b/DMS.WPF/Services/TriggerDataService.cs index 6f97ea7..53efa62 100644 --- a/DMS.WPF/Services/TriggerDataService.cs +++ b/DMS.WPF/Services/TriggerDataService.cs @@ -59,15 +59,15 @@ public class TriggerDataService : ITriggerDataService /// /// 添加触发器。 /// - public async Task AddTrigger(TriggerItem dto) + public async Task AddTrigger(TriggerItem triggerItem) { // 添加null检查 - if (dto == null) + if (triggerItem == null) return null; var addDto = await _appCenterService.TriggerManagementService.CreateTriggerAsync( - _mapper.Map(dto)); + _mapper.Map(triggerItem)); // 添加null检查 if (addDto == null) diff --git a/DMS.WPF/ViewModels/TriggersViewModel.cs b/DMS.WPF/ViewModels/TriggersViewModel.cs index 96109d4..ae11ce1 100644 --- a/DMS.WPF/ViewModels/TriggersViewModel.cs +++ b/DMS.WPF/ViewModels/TriggersViewModel.cs @@ -105,7 +105,7 @@ namespace DMS.WPF.ViewModels } // 传递副本以避免直接修改原始对象 - var triggerToEdit = _mapper.Map(SelectedTrigger); + var triggerToEdit = _mapper.Map(SelectedTrigger); TriggerDialogViewModel viewModel = App.Current.Services.GetRequiredService(); await viewModel.OnInitializedAsync(triggerToEdit);