diff --git a/DMS.Application/DTOs/CreateDeviceWithDetailsDto.cs b/DMS.Application/DTOs/CreateDeviceWithDetailsDto.cs index 8a66dc3..e7fd4e6 100644 --- a/DMS.Application/DTOs/CreateDeviceWithDetailsDto.cs +++ b/DMS.Application/DTOs/CreateDeviceWithDetailsDto.cs @@ -1,3 +1,5 @@ +using DMS.Core.Models; + namespace DMS.Application.DTOs; /// @@ -5,8 +7,7 @@ namespace DMS.Application.DTOs; /// public class CreateDeviceWithDetailsDto { - public DeviceDto Device { get; set; } - public VariableTableDto VariableTable { get; set; } + public Device Device { get; set; } public VariableTable VariableTable { get; set; } public MenuBeanDto DeviceMenu { get; set; } // 如果需要包含菜单信息 public MenuBeanDto VariableTableMenu { get; set; } // 如果需要包含菜单信息 diff --git a/DMS.Application/DTOs/CreateVariableTableWithMenuDto.cs b/DMS.Application/DTOs/CreateVariableTableWithMenuDto.cs index 78bc00c..b682606 100644 --- a/DMS.Application/DTOs/CreateVariableTableWithMenuDto.cs +++ b/DMS.Application/DTOs/CreateVariableTableWithMenuDto.cs @@ -5,7 +5,7 @@ namespace DMS.Application.DTOs { public class CreateVariableTableWithMenuDto { - public VariableTableDto VariableTable { get; set; } + public VariableTable VariableTable { get; set; } public int DeviceId { get; set; } public MenuBeanDto Menu { get; set; } } diff --git a/DMS.Application/DTOs/DeviceDto.cs b/DMS.Application/DTOs/DeviceDto.cs deleted file mode 100644 index d2b3961..0000000 --- a/DMS.Application/DTOs/DeviceDto.cs +++ /dev/null @@ -1,84 +0,0 @@ -using DMS.Core.Enums; - -namespace DMS.Application.DTOs; - -/// -/// 用于在UI上显示设备基本信息的DTO。 -/// -public class DeviceDto -{ - /// - /// 设备唯一标识符 - /// - public int Id { get; set; } - - /// - /// 设备名称 - /// - public string Name { get; set; } - - /// - /// 设备描述信息 - /// - public string Description { get; set; } - - /// - /// 通信协议类型 - /// - public ProtocolType Protocol { get; set; } - - /// - /// 设备IP地址 - /// - public string IpAddress { get; set; } - - /// - /// 设备端口号 - /// - public int Port { get; set; } - - /// - /// PLC机架号(用于PLC连接) - /// - public int Rack { get; set; } - - /// - /// PLC插槽号(用于PLC连接) - /// - public int Slot { get; set; } - - /// - /// CPU类型 - /// - public CpuType CpuType { get; set; } - - /// - /// 设备类型 - /// - public DeviceType DeviceType { get; set; } - - /// - /// OPC UA服务器URL - /// - public string OpcUaServerUrl { get; set; } - - /// - /// 设备是否处于激活状态 - /// - public bool IsActive { get; set; } - - /// - /// 设备是否正在运行 - /// - public bool IsRunning { get; set; } - - /// - /// 设备当前状态("在线", "离线", "连接中...") - /// - public string Status { get; set; } // "在线", "离线", "连接中..." - - /// - /// 设备关联的变量表集合 - /// - public List VariableTables { get; set; }=new List(); -} \ No newline at end of file diff --git a/DMS.Application/DTOs/VariableDto.cs b/DMS.Application/DTOs/VariableDto.cs deleted file mode 100644 index 1b4de20..0000000 --- a/DMS.Application/DTOs/VariableDto.cs +++ /dev/null @@ -1,41 +0,0 @@ -using DMS.Core.Enums; -using DMS.Core.Models; -using System; -using System.Collections.Generic; - -namespace DMS.Application.DTOs; - -/// -/// 用于在UI上显示变量基本信息的DTO。 -/// -public class VariableDto -{ - public int Id { get; set; } - public string Name { get; set; } - public string S7Address { get; set; } - public string DataValue { get; set; } - public double NumericValue { get; set; } - public string DisplayValue { get; set; } - public VariableTableDto? VariableTable { get; set; } - public List? MqttAliases { get; set; } = new List(); - public SignalType SignalType { get; set; } - public int PollingInterval { get; set; } - public bool IsActive { get; set; } - public int VariableTableId { get; set; } - public string OpcUaNodeId { get; set; } - public bool IsHistoryEnabled { get; set; } - public double HistoryDeadband { get; set; } - public bool IsAlarmEnabled { get; set; } - public double AlarmMinValue { get; set; } - public double AlarmMaxValue { get; set; } - public double AlarmDeadband { get; set; } - public ProtocolType Protocol { get; set; } - public DataType DataType { get; set; } - public string ConversionFormula { get; set; } - public DateTime CreatedAt { get; set; } - public DateTime UpdatedAt { get; set; } - public string UpdatedBy { get; set; } - public bool IsModified { get; set; } - public string Description { get; set; } - public OpcUaUpdateType OpcUaUpdateType { get; set; } -} \ No newline at end of file diff --git a/DMS.Application/DTOs/VariableTableDto.cs b/DMS.Application/DTOs/VariableTableDto.cs deleted file mode 100644 index f10430a..0000000 --- a/DMS.Application/DTOs/VariableTableDto.cs +++ /dev/null @@ -1,18 +0,0 @@ -using DMS.Core.Enums; - -namespace DMS.Application.DTOs; - -/// -/// 用于在UI上显示变量表基本信息的DTO。 -/// -public class VariableTableDto -{ - public int Id { get; set; } - public string Name { get; set; } - public string Description { get; set; } - public bool IsActive { get; set; } - public int DeviceId { get; set; } - public DeviceDto Device { get; set; } - public ProtocolType Protocol { get; set; } - public List Variables { get; set; } = new(); -} \ No newline at end of file diff --git a/DMS.Application/Events/BatchImportVariablesEventArgs.cs b/DMS.Application/Events/BatchImportVariablesEventArgs.cs index 21792df..6669ac0 100644 --- a/DMS.Application/Events/BatchImportVariablesEventArgs.cs +++ b/DMS.Application/Events/BatchImportVariablesEventArgs.cs @@ -1,5 +1,6 @@ using DMS.Application.DTOs; using DMS.Core.Enums; +using DMS.Core.Models; namespace DMS.Application.Events { @@ -11,7 +12,7 @@ namespace DMS.Application.Events /// /// 导入的变量列表 /// - public List Variables { get; } + public List Variables { get; } /// /// 导入的变量数量 @@ -27,9 +28,9 @@ namespace DMS.Application.Events /// 构造函数 /// /// 导入的变量列表 - public BatchImportVariablesEventArgs(List variables) + public BatchImportVariablesEventArgs(List variables) { - Variables = variables ?? new List(); + Variables = variables ?? new List(); Count = Variables.Count; ChangeTime = DateTime.Now; } diff --git a/DMS.Application/Events/DeviceChangedEventArgs.cs b/DMS.Application/Events/DeviceChangedEventArgs.cs index d76c74f..1554286 100644 --- a/DMS.Application/Events/DeviceChangedEventArgs.cs +++ b/DMS.Application/Events/DeviceChangedEventArgs.cs @@ -1,5 +1,5 @@ -using DMS.Application.DTOs; using DMS.Core.Enums; +using DMS.Core.Models; namespace DMS.Application.Events { @@ -16,7 +16,7 @@ namespace DMS.Application.Events /// /// 设备DTO /// - public DeviceDto Device { get; } + public Device Device { get; } /// /// 变更时间 @@ -28,7 +28,7 @@ namespace DMS.Application.Events /// /// 变更类型 /// 设备DTO - public DeviceChangedEventArgs(DataChangeType changeType, DeviceDto device) + public DeviceChangedEventArgs(DataChangeType changeType, Device device) { ChangeType = changeType; Device = device; diff --git a/DMS.Application/Events/VariableChangedEventArgs.cs b/DMS.Application/Events/VariableChangedEventArgs.cs index a9c47c0..39918af 100644 --- a/DMS.Application/Events/VariableChangedEventArgs.cs +++ b/DMS.Application/Events/VariableChangedEventArgs.cs @@ -1,5 +1,6 @@ using DMS.Application.DTOs; using DMS.Core.Enums; +using DMS.Core.Models; namespace DMS.Application.Events { @@ -16,7 +17,7 @@ namespace DMS.Application.Events /// /// 变量DTO /// - public VariableDto Variable { get; } + public Variable Variable { get; } /// /// 发生变化的属性类型 @@ -29,7 +30,7 @@ namespace DMS.Application.Events /// 变更类型 /// 变量DTO /// 发生变化的属性类型 - public VariableChangedEventArgs(ActionChangeType changeType, VariableDto variable, VariablePropertyType propertyType = VariablePropertyType.All) + public VariableChangedEventArgs(ActionChangeType changeType, Variable variable, VariablePropertyType propertyType = VariablePropertyType.All) { ChangeType = changeType; Variable = variable; diff --git a/DMS.Application/Events/VariableTableChangedEventArgs.cs b/DMS.Application/Events/VariableTableChangedEventArgs.cs index fd6d2a9..b784ba1 100644 --- a/DMS.Application/Events/VariableTableChangedEventArgs.cs +++ b/DMS.Application/Events/VariableTableChangedEventArgs.cs @@ -1,5 +1,5 @@ -using DMS.Application.DTOs; using DMS.Core.Enums; +using DMS.Core.Models; namespace DMS.Application.Events { @@ -16,7 +16,7 @@ namespace DMS.Application.Events /// /// 变量表DTO /// - public VariableTableDto VariableTable { get; } + public VariableTable VariableTable { get; } /// @@ -30,7 +30,7 @@ namespace DMS.Application.Events /// 变更类型 /// 变量表DTO /// 关联的设备DTO - public VariableTableChangedEventArgs(DataChangeType changeType, VariableTableDto variableTable) + public VariableTableChangedEventArgs(DataChangeType changeType, VariableTable variableTable) { ChangeType = changeType; VariableTable = variableTable; diff --git a/DMS.Application/Events/VariableValueChangedEventArgs.cs b/DMS.Application/Events/VariableValueChangedEventArgs.cs index 299c42c..d6a7634 100644 --- a/DMS.Application/Events/VariableValueChangedEventArgs.cs +++ b/DMS.Application/Events/VariableValueChangedEventArgs.cs @@ -1,4 +1,5 @@ -using DMS.Application.DTOs; + +using DMS.Core.Models; namespace DMS.Application.Events { @@ -10,7 +11,7 @@ namespace DMS.Application.Events /// /// 变量DTO对象 /// - public VariableDto Variable { get; set; } + public Variable Variable { get; set; } /// /// 旧值 @@ -20,7 +21,7 @@ namespace DMS.Application.Events /// /// 构造函数 /// - public VariableValueChangedEventArgs(VariableDto variable, string? oldValue) + public VariableValueChangedEventArgs(Variable variable, string? oldValue) { Variable = variable; OldValue = oldValue; diff --git a/DMS.Application/Interfaces/Database/IDeviceAppService.cs b/DMS.Application/Interfaces/Database/IDeviceAppService.cs index cee2baa..1766220 100644 --- a/DMS.Application/Interfaces/Database/IDeviceAppService.cs +++ b/DMS.Application/Interfaces/Database/IDeviceAppService.cs @@ -12,13 +12,11 @@ public interface IDeviceAppService /// /// 异步根据ID获取设备DTO。 /// - Task GetDeviceByIdAsync(int id); - + Task GetDeviceByIdAsync(int id); /// /// 异步获取所有设备DTO列表。 /// - Task> GetAllDevicesAsync(); - + Task> GetAllDevicesAsync(); /// /// 异步创建一个新设备及其关联的变量表和菜单(事务性操作)。 /// @@ -29,8 +27,7 @@ public interface IDeviceAppService /// /// 异步更新一个已存在的设备。 /// - Task UpdateDeviceAsync(DeviceDto deviceDto); - + Task UpdateDeviceAsync(Device device); /// /// 异步删除一个设备。 /// @@ -49,5 +46,4 @@ public interface IDeviceAppService /// /// 异步获取指定协议类型的设备列表。 /// - Task> GetDevicesByProtocolAsync(ProtocolType protocol); -} \ No newline at end of file + Task> GetDevicesByProtocolAsync(ProtocolType protocol);} \ No newline at end of file diff --git a/DMS.Application/Interfaces/Database/IVariableAppService.cs b/DMS.Application/Interfaces/Database/IVariableAppService.cs index 6a35c0f..96e23ac 100644 --- a/DMS.Application/Interfaces/Database/IVariableAppService.cs +++ b/DMS.Application/Interfaces/Database/IVariableAppService.cs @@ -1,4 +1,5 @@ using DMS.Application.DTOs; +using DMS.Core.Models; namespace DMS.Application.Interfaces.Database; @@ -10,37 +11,37 @@ public interface IVariableAppService /// /// 异步根据ID获取变量DTO。 /// - Task GetVariableByIdAsync(int id); + Task GetVariableByIdAsync(int id); /// /// 异步根据OPC UA NodeId获取变量DTO。 /// - Task GetVariableByOpcUaNodeIdAsync(string opcUaNodeId); + Task GetVariableByOpcUaNodeIdAsync(string opcUaNodeId); /// /// 异步根据OPC UA NodeId列表获取变量DTO列表。 /// - Task> GetVariableByOpcUaNodeIdsAsync(List opcUaNodeIds); + Task> GetVariableByOpcUaNodeIdsAsync(List opcUaNodeIds); /// /// 异步获取所有变量DTO列表。 /// - Task> GetAllVariablesAsync(); + Task> GetAllVariablesAsync(); /// /// 异步创建一个新变量。 /// - Task CreateVariableAsync(VariableDto variableDto); + Task CreateVariableAsync(Variable variable); /// /// 异步更新一个已存在的变量。 /// - Task UpdateVariableAsync(VariableDto variableDto); + Task UpdateVariableAsync(Variable variable); /// /// 异步更新一个已存在的变量。 /// - Task UpdateVariablesAsync(List variableDtos); + Task UpdateVariablesAsync(List variables); /// /// 异步删除一个变量。 @@ -55,19 +56,19 @@ public interface IVariableAppService /// /// 异步批量导入变量。 /// - Task> BatchImportVariablesAsync(List variables); + Task> BatchImportVariablesAsync(List variables); /// /// 检测一组变量是否已存在。 /// /// 要检查的变量列表。 /// 返回输入列表中已存在的变量。 - Task> FindExistingVariablesAsync(IEnumerable variablesToCheck); + Task> FindExistingVariablesAsync(IEnumerable variablesToCheck); /// /// 检测单个变量是否已存在。 /// /// 要检查的变量。 /// 如果变量已存在则返回该变量,否则返回null。 - Task FindExistingVariableAsync(VariableDto variableToCheck); + Task FindExistingVariableAsync(Variable variableToCheck); } \ No newline at end of file diff --git a/DMS.Application/Interfaces/Database/IVariableTableAppService.cs b/DMS.Application/Interfaces/Database/IVariableTableAppService.cs index 2087c0a..b643d7d 100644 --- a/DMS.Application/Interfaces/Database/IVariableTableAppService.cs +++ b/DMS.Application/Interfaces/Database/IVariableTableAppService.cs @@ -1,13 +1,15 @@ + using DMS.Application.DTOs; +using DMS.Core.Models; namespace DMS.Application.Interfaces.Database { public interface IVariableTableAppService { - Task GetVariableTableByIdAsync(int id); - Task> GetAllVariableTablesAsync(); + Task GetVariableTableByIdAsync(int id); + Task> GetAllVariableTablesAsync(); Task CreateVariableTableAsync(CreateVariableTableWithMenuDto createDto); - Task UpdateVariableTableAsync(VariableTableDto variableTableDto); + Task UpdateVariableTableAsync(VariableTable variableTableDto); Task DeleteVariableTableAsync(int id); } } diff --git a/DMS.Application/Interfaces/IAlarmService.cs b/DMS.Application/Interfaces/IAlarmService.cs index ce21d17..acad0a5 100644 --- a/DMS.Application/Interfaces/IAlarmService.cs +++ b/DMS.Application/Interfaces/IAlarmService.cs @@ -1,5 +1,6 @@ using DMS.Application.DTOs; using DMS.Core.Events; +using DMS.Core.Models; namespace DMS.Application.Interfaces { @@ -10,7 +11,7 @@ namespace DMS.Application.Interfaces /// /// 变量DTO /// 是否触发报警 - bool CheckAlarm(VariableDto variable); + bool CheckAlarm(Variable variable); /// /// 警报事件 diff --git a/DMS.Application/Interfaces/IAppDataStorageService.cs b/DMS.Application/Interfaces/IAppDataStorageService.cs index 535819c..4d23d0a 100644 --- a/DMS.Application/Interfaces/IAppDataStorageService.cs +++ b/DMS.Application/Interfaces/IAppDataStorageService.cs @@ -9,17 +9,16 @@ public interface IAppDataStorageService /// /// 安全字典,用于存储所有设备数据 /// - ConcurrentDictionary Devices { get; } - + ConcurrentDictionary Devices { get; } /// /// 安全字典,用于存储所有变量表数据 /// - ConcurrentDictionary VariableTables { get; } + ConcurrentDictionary VariableTables { get; } /// /// 安全字典,用于存储所有变量数据 /// - ConcurrentDictionary Variables { get; } + ConcurrentDictionary Variables { get; } /// /// 安全字典,用于存储所有菜单数据 diff --git a/DMS.Application/Interfaces/Management/IDeviceManagementService.cs b/DMS.Application/Interfaces/Management/IDeviceManagementService.cs index 54db4a5..2d0cc5f 100644 --- a/DMS.Application/Interfaces/Management/IDeviceManagementService.cs +++ b/DMS.Application/Interfaces/Management/IDeviceManagementService.cs @@ -1,5 +1,6 @@ using DMS.Application.DTOs; using DMS.Application.Events; +using DMS.Core.Models; namespace DMS.Application.Interfaces.Management; @@ -10,13 +11,11 @@ public interface IDeviceManagementService /// /// 异步根据ID获取设备DTO。 /// - Task GetDeviceByIdAsync(int id); - + Task GetDeviceByIdAsync(int id); /// /// 异步获取所有设备DTO列表。 /// - Task> GetAllDevicesAsync(); - + Task> GetAllDevicesAsync(); /// /// 异步创建一个新设备及其关联的变量表和菜单(事务性操作)。 /// @@ -25,8 +24,7 @@ public interface IDeviceManagementService /// /// 异步更新一个已存在的设备。 /// - Task UpdateDeviceAsync(DeviceDto deviceDto); - + Task UpdateDeviceAsync(Device device); /// /// 异步删除一个设备。 /// diff --git a/DMS.Application/Interfaces/Management/IVariableManagementService.cs b/DMS.Application/Interfaces/Management/IVariableManagementService.cs index 353e4f1..a9a3ea9 100644 --- a/DMS.Application/Interfaces/Management/IVariableManagementService.cs +++ b/DMS.Application/Interfaces/Management/IVariableManagementService.cs @@ -1,5 +1,6 @@ using System.Collections.Concurrent; using DMS.Application.DTOs; +using DMS.Core.Models; namespace DMS.Application.Interfaces.Management; @@ -8,27 +9,27 @@ public interface IVariableManagementService /// /// 异步根据ID获取变量DTO。 /// - Task GetVariableByIdAsync(int id); + Task GetVariableByIdAsync(int id); /// /// 异步获取所有变量DTO列表。 /// - Task> GetAllVariablesAsync(); + Task> GetAllVariablesAsync(); /// /// 异步创建一个新变量。 /// - Task CreateVariableAsync(VariableDto variableDto); + Task CreateVariableAsync(Variable variable); /// /// 异步更新一个已存在的变量。 /// - Task UpdateVariableAsync(VariableDto variableDto); + Task UpdateVariableAsync(Variable variable); /// /// 异步批量更新变量。 /// - Task UpdateVariablesAsync(List variableDtos); + Task UpdateVariablesAsync(List variables); /// /// 异步删除一个变量。 @@ -43,10 +44,10 @@ public interface IVariableManagementService /// /// 异步批量导入变量。 /// - Task> BatchImportVariablesAsync(List variables); + Task> BatchImportVariablesAsync(List variables); /// /// 查找已存在的变量。 /// - Task> FindExistingVariablesAsync(IEnumerable variablesToCheck); + Task> FindExistingVariablesAsync(IEnumerable variablesToCheck); } \ No newline at end of file diff --git a/DMS.Application/Interfaces/Management/IVariableTableManagementService.cs b/DMS.Application/Interfaces/Management/IVariableTableManagementService.cs index 81f0804..d7d532a 100644 --- a/DMS.Application/Interfaces/Management/IVariableTableManagementService.cs +++ b/DMS.Application/Interfaces/Management/IVariableTableManagementService.cs @@ -1,5 +1,6 @@ using DMS.Application.DTOs; using DMS.Application.Events; +using DMS.Core.Models; namespace DMS.Application.Interfaces.Management; @@ -8,12 +9,12 @@ public interface IVariableTableManagementService /// /// 异步根据ID获取变量表DTO。 /// - Task GetVariableTableByIdAsync(int id); + Task GetVariableTableByIdAsync(int id); /// /// 异步获取所有变量表DTO列表。 /// - Task> GetAllVariableTablesAsync(); + Task> GetAllVariableTablesAsync(); /// /// 异步创建一个新变量表及其关联菜单(事务性操作)。 @@ -23,7 +24,7 @@ public interface IVariableTableManagementService /// /// 异步更新一个已存在的变量表。 /// - Task UpdateVariableTableAsync(VariableTableDto variableTableDto); + Task UpdateVariableTableAsync(VariableTable variableTableDto); /// /// 异步删除一个变量表。 diff --git a/DMS.Application/Models/VariableContext.cs b/DMS.Application/Models/VariableContext.cs index 170d8c9..aed1673 100644 --- a/DMS.Application/Models/VariableContext.cs +++ b/DMS.Application/Models/VariableContext.cs @@ -1,16 +1,15 @@ -using DMS.Application.DTOs; using DMS.Core.Models; namespace DMS.Application.Models { public class VariableContext { - public VariableDto Data { get; set; } + public Variable Data { get; set; } public string NewValue { get; set; } public bool IsHandled { get; set; } - public VariableContext(VariableDto data, string newValue="") + public VariableContext(Variable data, string newValue="") { Data = data; IsHandled = false; // 默认未处理 diff --git a/DMS.Application/Profiles/MappingProfile.cs b/DMS.Application/Profiles/MappingProfile.cs index b8c983d..ba17189 100644 --- a/DMS.Application/Profiles/MappingProfile.cs +++ b/DMS.Application/Profiles/MappingProfile.cs @@ -12,21 +12,9 @@ public class MappingProfile : Profile { public MappingProfile() { - CreateMap() - .ReverseMap(); - - // VariableTable 映射 - CreateMap().ReverseMap(); // Variable 映射 - CreateMap() - .ReverseMap(); - CreateMap() - .ReverseMap(); - CreateMap() - .ReverseMap(); - // VariableHistory 映射 diff --git a/DMS.Application/Services/AlarmService.cs b/DMS.Application/Services/AlarmService.cs index dd9e5ae..eab8d2e 100644 --- a/DMS.Application/Services/AlarmService.cs +++ b/DMS.Application/Services/AlarmService.cs @@ -2,6 +2,7 @@ using DMS.Application.DTOs; using DMS.Application.Interfaces; using DMS.Core.Enums; using DMS.Core.Events; +using DMS.Core.Models; using Microsoft.Extensions.Logging; namespace DMS.Application.Services @@ -17,7 +18,7 @@ namespace DMS.Application.Services public event EventHandler OnAlarmTriggered; - public bool CheckAlarm(VariableDto variable) + public bool CheckAlarm(Variable variable) { if (!variable.IsAlarmEnabled) { @@ -69,7 +70,7 @@ namespace DMS.Application.Services // 如果需要在 AlarmService 中处理死区报警,我们需要一种方式来获取上一次的值 - // 这可能需要修改 VariableDto 或通过其他方式传递上一次的值 + // 这可能需要修改 Variable 或通过其他方式传递上一次的值 // 为了保持设计的清晰性,我们暂时不在这里实现死区报警 // 死区报警可以在 VariableItemViewModel 中实现,当检测到值变化超过死区时触发一个事件 diff --git a/DMS.Application/Services/AppDataStorageService.cs b/DMS.Application/Services/AppDataStorageService.cs index 4c7a64f..241e0b8 100644 --- a/DMS.Application/Services/AppDataStorageService.cs +++ b/DMS.Application/Services/AppDataStorageService.cs @@ -10,17 +10,16 @@ public class AppDataStorageService : IAppDataStorageService /// /// 安全字典,用于存储所有设备数据 /// - public ConcurrentDictionary Devices { get; } = new(); - + public ConcurrentDictionary Devices { get; } = new(); /// /// 安全字典,用于存储所有变量表数据 /// - public ConcurrentDictionary VariableTables { get; } = new(); + public ConcurrentDictionary VariableTables { get; } = new(); /// /// 安全字典,用于存储所有变量数据 /// - public ConcurrentDictionary Variables { get; } = new(); + public ConcurrentDictionary Variables { get; } = new(); /// /// 安全字典,用于存储所有菜单数据 diff --git a/DMS.Application/Services/DataLoaderService.cs b/DMS.Application/Services/DataLoaderService.cs index 3839249..53da267 100644 --- a/DMS.Application/Services/DataLoaderService.cs +++ b/DMS.Application/Services/DataLoaderService.cs @@ -131,7 +131,7 @@ public class DataLoaderService : IDataLoaderService { _appDataStorageService.Devices.Clear(); var devices = await _repositoryManager.Devices.GetAllAsync(); - var devicesDtos = _mapper.Map>(devices); + var devicesDtos = _mapper.Map>(devices); // 建立设备与变量表的关联 foreach (var deviceDto in devicesDtos) @@ -148,7 +148,7 @@ public class DataLoaderService : IDataLoaderService { _appDataStorageService.VariableTables.Clear(); var variableTables = await _repositoryManager.VariableTables.GetAllAsync(); - var variableTableDtos = _mapper.Map>(variableTables); + var variableTableDtos = _mapper.Map>(variableTables); // 建立变量表与变量的关联 foreach (var variableTableDto in variableTableDtos) { @@ -171,7 +171,7 @@ public class DataLoaderService : IDataLoaderService _appDataStorageService.Variables.Clear(); var variables = await _repositoryManager.Variables.GetAllAsync(); - var variableDtos = _mapper.Map>(variables); + var variableDtos = _mapper.Map>(variables); // 将变量添加到安全字典 foreach (var variableDto in variableDtos) { diff --git a/DMS.Application/Services/Database/DeviceAppService.cs b/DMS.Application/Services/Database/DeviceAppService.cs index 3b4e9b1..759abc2 100644 --- a/DMS.Application/Services/Database/DeviceAppService.cs +++ b/DMS.Application/Services/Database/DeviceAppService.cs @@ -33,20 +33,19 @@ public class DeviceAppService : IDeviceAppService /// /// 设备ID。 /// 设备数据传输对象。 - public async Task GetDeviceByIdAsync(int id) - { + public async Task GetDeviceByIdAsync(int id) { var device = await _repoManager.Devices.GetByIdAsync(id); - return _mapper.Map(device); + return device; } /// /// 异步获取所有设备数据传输对象列表。 /// /// 设备数据传输对象列表。 - public async Task> GetAllDevicesAsync() + public async Task> GetAllDevicesAsync() { var devices = await _repoManager.Devices.GetAllAsync(); - return _mapper.Map>(devices); + return devices; } /// @@ -62,8 +61,7 @@ public class DeviceAppService : IDeviceAppService { await _repoManager.BeginTranAsync(); - var device = _mapper.Map(dto.Device); - var addDevice = await _repoManager.Devices.AddAsync(device); + var addDevice = await _repoManager.Devices.AddAsync(dto.Device); if (addDevice == null || addDevice.Id == 0) { throw new InvalidOperationException($"添加设备失败:{addDevice}"); @@ -92,12 +90,12 @@ public class DeviceAppService : IDeviceAppService if (dto.VariableTable != null) { var variableTable = _mapper.Map(dto.VariableTable); - variableTable.DeviceId = device.Id; // 关联新设备ID - variableTable.Protocol = device.Protocol; + variableTable.DeviceId = dto.Device.Id; // 关联新设备ID + variableTable.Protocol = dto.Device.Protocol; var addVariableTable = await _repoManager.VariableTables.AddAsync(variableTable); if (addVariableTable == null || addVariableTable.Id == 0) { - throw new InvalidOperationException($"添加设备变量表失败,设备:{device.Name},变量表:{variableTable.Name}"); + throw new InvalidOperationException($"添加设备变量表失败,设备:{dto.Device.Name},变量表:{variableTable.Name}"); } _mapper.Map(addVariableTable,dto.VariableTable); dto.VariableTable.Device = dto.Device; @@ -134,21 +132,21 @@ public class DeviceAppService : IDeviceAppService /// /// 异步更新一个已存在的设备。 /// - /// 要更新的设备数据传输对象。 + /// 要更新的设备。 /// 受影响的行数。 /// 如果找不到设备。 - public async Task UpdateDeviceAsync(DeviceDto deviceDto) + public async Task UpdateDeviceAsync(Device device) { await _repoManager.BeginTranAsync(); - var device = await _repoManager.Devices.GetByIdAsync(deviceDto.Id); - if (device == null) + var existingDevice = await _repoManager.Devices.GetByIdAsync(device.Id); + if (existingDevice == null) { - throw new ApplicationException($"Device with ID {deviceDto.Id} not found."); + throw new ApplicationException($"Device with ID {device.Id} not found."); } - _mapper.Map(deviceDto, device); - int res=await _repoManager.Devices.UpdateAsync(device); - var menu=await _repoManager.Menus.GetMenuByTargetIdAsync(MenuType.DeviceMenu, deviceDto.Id); + _mapper.Map(device, existingDevice); + int res=await _repoManager.Devices.UpdateAsync(existingDevice); + var menu=await _repoManager.Menus.GetMenuByTargetIdAsync(MenuType.DeviceMenu, device.Id); if (menu != null) { menu.Header = device.Name; @@ -230,9 +228,9 @@ public class DeviceAppService : IDeviceAppService /// /// 协议类型。 /// 设备数据传输对象列表。 - public async Task> GetDevicesByProtocolAsync(ProtocolType protocol) + public async Task> GetDevicesByProtocolAsync(ProtocolType protocol) { var devices = await _repoManager.Devices.GetAllAsync(); - return _mapper.Map>(devices); + return devices; } } \ No newline at end of file diff --git a/DMS.Application/Services/Database/VariableAppService.cs b/DMS.Application/Services/Database/VariableAppService.cs index c17ea5f..7a24261 100644 --- a/DMS.Application/Services/Database/VariableAppService.cs +++ b/DMS.Application/Services/Database/VariableAppService.cs @@ -32,10 +32,10 @@ public class VariableAppService : IVariableAppService /// /// 变量ID。 /// 变量数据传输对象。 - public async Task GetVariableByIdAsync(int id) + public async Task GetVariableByIdAsync(int id) { var variable = await _repoManager.Variables.GetByIdAsync(id); - return _mapper.Map(variable); + return variable; } /// @@ -43,10 +43,10 @@ public class VariableAppService : IVariableAppService /// /// OPC UA NodeId。 /// 变量数据传输对象。 - public async Task GetVariableByOpcUaNodeIdAsync(string opcUaNodeId) + public async Task GetVariableByOpcUaNodeIdAsync(string opcUaNodeId) { var variable = await _repoManager.Variables.GetByOpcUaNodeIdAsync(opcUaNodeId); - return variable == null ? null : _mapper.Map(variable); + return variable ; } /// @@ -54,37 +54,33 @@ public class VariableAppService : IVariableAppService /// /// OPC UA NodeId列表。 /// 变量数据传输对象列表。 - public async Task> GetVariableByOpcUaNodeIdsAsync(List opcUaNodeIds) + public async Task> GetVariableByOpcUaNodeIdsAsync(List opcUaNodeIds) { var variables = await _repoManager.Variables.GetByOpcUaNodeIdsAsync(opcUaNodeIds); - return _mapper.Map>(variables); + return variables; } /// /// 异步获取所有变量数据传输对象列表。 /// /// 变量数据传输对象列表。 - public async Task> GetAllVariablesAsync() + public async Task> GetAllVariablesAsync() { var variables = await _repoManager.Variables.GetAllAsync(); - return _mapper.Map>(variables); + return _mapper.Map>(variables); } /// /// 异步创建一个新变量(事务性操作)。 /// - /// 要创建的变量数据传输对象。 - /// 新创建的变量数据传输对象。 - /// 如果创建变量时发生错误。 - public async Task CreateVariableAsync(VariableDto variableDto) +/// 要创建的变量数据传输对象。 + public async Task CreateVariableAsync(Variable variable) { try { await _repoManager.BeginTranAsync(); - var variable = _mapper.Map(variableDto); - var addedVariable = await _repoManager.Variables.AddAsync(variable); - await _repoManager.CommitAsync(); - return _mapper.Map(addedVariable); + var addedVariable = await _repoManager.Variables.AddAsync(variable); await _repoManager.CommitAsync(); + return _mapper.Map(addedVariable); } catch (Exception ex) { @@ -96,20 +92,18 @@ public class VariableAppService : IVariableAppService /// /// 异步更新一个已存在的变量(事务性操作)。 /// - /// 要更新的变量数据传输对象。 - /// 受影响的行数。 - /// 如果找不到变量或更新变量时发生错误。 - public async Task UpdateVariableAsync(VariableDto variableDto) +/// 要更新的变量数据传输对象。 + public async Task UpdateVariableAsync(Variable variable) { try { await _repoManager.BeginTranAsync(); - var variable = await _repoManager.Variables.GetByIdAsync(variableDto.Id); - if (variable == null) + var existingVariable = await _repoManager.Variables.GetByIdAsync(variable.Id); + if (existingVariable == null) { - throw new ApplicationException($"Variable with ID {variableDto.Id} not found."); + throw new ApplicationException($"Variable with ID {variable.Id} not found."); } - _mapper.Map(variableDto, variable); + _mapper.Map(variable, existingVariable); int res = await _repoManager.Variables.UpdateAsync(variable); await _repoManager.CommitAsync(); return res; @@ -124,25 +118,25 @@ public class VariableAppService : IVariableAppService /// /// 异步批量更新变量(事务性操作)。 /// - /// 要更新的变量数据传输对象列表。 + /// 要更新的变量数据传输对象列表。 /// 受影响的行数。 /// 如果更新变量时发生错误。 - public async Task UpdateVariablesAsync(List variableDtos) + public async Task UpdateVariablesAsync(List variables) { try { await _repoManager.BeginTranAsync(); int totalAffected = 0; - foreach (var variableDto in variableDtos) + foreach (var variable in variables) { - var variable = await _repoManager.Variables.GetByIdAsync(variableDto.Id); - if (variable == null) + var existingVariable = await _repoManager.Variables.GetByIdAsync(variable.Id); + if (existingVariable == null) { - throw new ApplicationException($"Variable with ID {variableDto.Id} not found."); + throw new ApplicationException($"Variable with ID {variable.Id} not found."); } - _mapper.Map(variableDto, variable); - int res = await _repoManager.Variables.UpdateAsync(variable); + _mapper.Map(variable, existingVariable); + int res = await _repoManager.Variables.UpdateAsync(existingVariable); totalAffected += res; } @@ -220,13 +214,13 @@ public class VariableAppService : IVariableAppService } } - public async Task> BatchImportVariablesAsync(List variables) + public async Task> BatchImportVariablesAsync(List variables) { try { var variableModels = _mapper.Map>(variables); var addedVariables = await _repoManager.Variables.AddBatchAsync(variableModels); - return _mapper.Map>(addedVariables); + return _mapper.Map>(addedVariables); } catch (Exception ex) { @@ -234,11 +228,11 @@ public class VariableAppService : IVariableAppService } } - public async Task> FindExistingVariablesAsync(IEnumerable variablesToCheck) + public async Task> FindExistingVariablesAsync(IEnumerable variablesToCheck) { if (variablesToCheck == null || !variablesToCheck.Any()) { - return new List(); + return new List(); } var names = variablesToCheck.Select(v => v.Name).Where(n => !string.IsNullOrEmpty(n)).Distinct().ToList(); @@ -254,23 +248,23 @@ public class VariableAppService : IVariableAppService if (existingVariablesFromDb == null || !existingVariablesFromDb.Any()) { - return new List(); + return new List(); } var existingNames = new HashSet(existingVariablesFromDb.Select(v => v.Name).Where(n => !string.IsNullOrEmpty(n))); var existingS7Addresses = new HashSet(existingVariablesFromDb.Select(v => v.S7Address).Where(a => !string.IsNullOrEmpty(a))); var existingOpcUaNodeIds = new HashSet(existingVariablesFromDb.Select(v => v.OpcUaNodeId).Where(id => !string.IsNullOrEmpty(id))); - var result = variablesToCheck.Where(v => - (!string.IsNullOrEmpty(v.Name) && existingNames.Contains(v.Name)) || - (!string.IsNullOrEmpty(v.S7Address) && existingS7Addresses.Contains(v.S7Address)) || - (!string.IsNullOrEmpty(v.OpcUaNodeId) && existingOpcUaNodeIds.Contains(v.OpcUaNodeId))) + var result = existingVariablesFromDb.Where(v => + (names.Any() && !string.IsNullOrEmpty(v.Name) && names.Contains(v.Name)) || + (s7Addresses.Any() && !string.IsNullOrEmpty(v.S7Address) && s7Addresses.Contains(v.S7Address)) || + (opcUaNodeIds.Any() && !string.IsNullOrEmpty(v.OpcUaNodeId) && opcUaNodeIds.Contains(v.OpcUaNodeId))) .ToList(); return result; } - public async Task FindExistingVariableAsync(VariableDto variableToCheck) + public async Task FindExistingVariableAsync(Variable variableToCheck) { if (variableToCheck == null) { @@ -278,7 +272,7 @@ public class VariableAppService : IVariableAppService } // 创建一个包含单个元素的列表以便复用现有的逻辑 - var variablesToCheck = new List { variableToCheck }; + var variablesToCheck = new List { variableToCheck }; var existingVariables = await FindExistingVariablesAsync(variablesToCheck); // 如果找到了匹配的变量,返回第一个(也是唯一一个) diff --git a/DMS.Application/Services/Database/VariableTableAppService.cs b/DMS.Application/Services/Database/VariableTableAppService.cs index 1ab6821..6557e8d 100644 --- a/DMS.Application/Services/Database/VariableTableAppService.cs +++ b/DMS.Application/Services/Database/VariableTableAppService.cs @@ -33,20 +33,20 @@ namespace DMS.Application.Services.Database /// /// 变量表ID。 /// 变量表数据传输对象。 - public async Task GetVariableTableByIdAsync(int id) + public async Task GetVariableTableByIdAsync(int id) { var variableTable = await _repositoryManager.VariableTables.GetByIdAsync(id); - return _mapper.Map(variableTable); + return _mapper.Map(variableTable); } /// /// 异步获取所有变量表。 /// /// 变量表数据传输对象列表。 - public async Task> GetAllVariableTablesAsync() + public async Task> GetAllVariableTablesAsync() { var variableTables = await _repositoryManager.VariableTables.GetAllAsync(); - return _mapper.Map>(variableTables); + return _mapper.Map>(variableTables); } /// @@ -107,10 +107,10 @@ namespace DMS.Application.Services.Database /// /// 异步更新变量表。 /// - /// 要更新的变量表数据传输对象。 + /// 要更新的变量表数据传输对象。 /// 受影响的行数。 /// 如果找不到变量表。 - public async Task UpdateVariableTableAsync(VariableTableDto variableTableDto) + public async Task UpdateVariableTableAsync(VariableTable variableTableDto) { try { diff --git a/DMS.Application/Services/Management/DeviceManagementService.cs b/DMS.Application/Services/Management/DeviceManagementService.cs index 18bf818..6576be1 100644 --- a/DMS.Application/Services/Management/DeviceManagementService.cs +++ b/DMS.Application/Services/Management/DeviceManagementService.cs @@ -4,6 +4,7 @@ using DMS.Application.Interfaces; using DMS.Application.Interfaces.Database; using DMS.Application.Interfaces.Management; using DMS.Core.Enums; +using DMS.Core.Models; namespace DMS.Application.Services.Management; @@ -26,7 +27,7 @@ public class DeviceManagementService : IDeviceManagementService /// /// 异步根据ID获取设备DTO。 /// - public async Task GetDeviceByIdAsync(int id) + public async Task GetDeviceByIdAsync(int id) { return await _deviceAppService.GetDeviceByIdAsync(id); } @@ -34,7 +35,7 @@ public class DeviceManagementService : IDeviceManagementService /// /// 异步获取所有设备DTO列表。 /// - public async Task> GetAllDevicesAsync() + public async Task> GetAllDevicesAsync() { return await _deviceAppService.GetAllDevicesAsync(); } @@ -65,15 +66,15 @@ public class DeviceManagementService : IDeviceManagementService /// /// 异步更新一个已存在的设备。 /// - public async Task UpdateDeviceAsync(DeviceDto deviceDto) + public async Task UpdateDeviceAsync(Device device) { - var result = await _deviceAppService.UpdateDeviceAsync(deviceDto); + var result = await _deviceAppService.UpdateDeviceAsync(device); // 更新成功后,更新内存中的设备 - if (result > 0 && deviceDto != null) + if (result > 0 && device != null) { - _appDataStorageService.Devices.AddOrUpdate(deviceDto.Id, deviceDto, (key, oldValue) => deviceDto); - _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Updated, deviceDto)); + _appDataStorageService.Devices.AddOrUpdate(device.Id, device, (key, oldValue) => device); + _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Updated, device)); } return result; @@ -90,9 +91,9 @@ public class DeviceManagementService : IDeviceManagementService // 删除成功后,从内存中移除设备 if (result && device != null) { - if (_appDataStorageService.Devices.TryGetValue(deviceId, out var deviceDto)) + if (_appDataStorageService.Devices.TryGetValue(deviceId, out var deviceInStorage)) { - foreach (var variableTable in deviceDto.VariableTables) + foreach (var variableTable in deviceInStorage.VariableTables) { foreach (var variable in variableTable.Variables) { @@ -104,7 +105,7 @@ public class DeviceManagementService : IDeviceManagementService _appDataStorageService.Devices.TryRemove(deviceId, out _); - _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Deleted, deviceDto)); + _eventService.RaiseDeviceChanged(this, new DeviceChangedEventArgs(DataChangeType.Deleted, deviceInStorage)); } } diff --git a/DMS.Application/Services/Management/VariableManagementService.cs b/DMS.Application/Services/Management/VariableManagementService.cs index 8185d3b..8cfc4aa 100644 --- a/DMS.Application/Services/Management/VariableManagementService.cs +++ b/DMS.Application/Services/Management/VariableManagementService.cs @@ -6,6 +6,7 @@ using DMS.Application.Interfaces; using DMS.Application.Interfaces.Database; using DMS.Application.Interfaces.Management; using DMS.Core.Enums; +using DMS.Core.Models; namespace DMS.Application.Services.Management; @@ -37,7 +38,7 @@ public class VariableManagementService : IVariableManagementService /// /// 异步根据ID获取变量DTO。 /// - public async Task GetVariableByIdAsync(int id) + public async Task GetVariableByIdAsync(int id) { return await _variableAppService.GetVariableByIdAsync(id); } @@ -45,7 +46,7 @@ public class VariableManagementService : IVariableManagementService /// /// 异步获取所有变量DTO列表。 /// - public async Task> GetAllVariablesAsync() + public async Task> GetAllVariablesAsync() { return await _variableAppService.GetAllVariablesAsync(); } @@ -53,18 +54,16 @@ public class VariableManagementService : IVariableManagementService /// /// 异步创建一个新变量。 /// - public async Task CreateVariableAsync(VariableDto variableDto) + public async Task CreateVariableAsync(Variable variable) { - var result = await _variableAppService.CreateVariableAsync(variableDto); + var result = await _variableAppService.CreateVariableAsync(variable); // 创建成功后,将变量添加到内存中 if (result != null) { - VariableTableDto variableTableDto = null; if (_appDataStorageService.VariableTables.TryGetValue(result.VariableTableId, out var variableTable)) { - variableTableDto = variableTable; - result.VariableTable = variableTableDto; + result.VariableTable = variableTable; variableTable.Variables.Add(result); } @@ -81,51 +80,51 @@ public class VariableManagementService : IVariableManagementService /// /// 异步更新一个已存在的变量。 /// - public async Task UpdateVariableAsync(VariableDto variableDto) + public async Task UpdateVariableAsync(Variable variable) { - return await UpdateVariablesAsync(new List() { variableDto}); + return await UpdateVariablesAsync(new List() { variable}); } /// /// 异步批量更新变量。 /// - public async Task UpdateVariablesAsync(List variableDtos) + public async Task UpdateVariablesAsync(List variables) { - var result = await _variableAppService.UpdateVariablesAsync(variableDtos); + var result = await _variableAppService.UpdateVariablesAsync(variables); // 批量更新成功后,更新内存中的变量 - if (result > 0 && variableDtos != null) + if (result > 0 && variables != null) { - foreach (var variableDto in variableDtos) + foreach (var variable in variables) { - if (_appDataStorageService.Variables.TryGetValue(variableDto.Id, out var mVariableDto)) + if (_appDataStorageService.Variables.TryGetValue(variable.Id, out var mVariable)) { // 比较旧值和新值,确定哪个属性发生了变化 - var changedProperties = GetChangedProperties(mVariableDto, variableDto); + var changedProperties = GetChangedProperties(mVariable, variable); // 更新内存中的变量 - _mapper.Map(variableDto,mVariableDto); + _mapper.Map(variable, mVariable); // 为每个发生变化的属性触发事件 foreach (var property in changedProperties) { _eventService.RaiseVariableChanged( - this, new VariableChangedEventArgs(ActionChangeType.Updated, variableDto, property)); + this, new VariableChangedEventArgs(ActionChangeType.Updated, variable, property)); } // 如果没有任何属性发生变化,至少触发一次更新事件 if (changedProperties.Count == 0) { _eventService.RaiseVariableChanged( - this, new VariableChangedEventArgs(ActionChangeType.Updated, variableDto, VariablePropertyType.All)); + this, new VariableChangedEventArgs(ActionChangeType.Updated, variable, VariablePropertyType.All)); } } else { // 如果内存中不存在该变量,则直接添加 - _appDataStorageService.Variables.TryAdd(variableDto.Id, variableDto); + _appDataStorageService.Variables.TryAdd(variable.Id, variable); _eventService.RaiseVariableChanged( - this, new VariableChangedEventArgs(ActionChangeType.Added, variableDto, VariablePropertyType.All)); + this, new VariableChangedEventArgs(ActionChangeType.Added, variable, VariablePropertyType.All)); } } } @@ -138,23 +137,21 @@ public class VariableManagementService : IVariableManagementService /// public async Task DeleteVariableAsync(int id) { - var variable = await _variableAppService.GetVariableByIdAsync(id); // 获取变量信息用于内存删除 var result = await _variableAppService.DeleteVariableAsync(id); // 删除成功后,从内存中移除变量 - if (result && variable != null) + if (result) { - if (_appDataStorageService.Variables.TryRemove(id, out var variableDto)) + if (_appDataStorageService.Variables.TryRemove(id, out var variable)) { - VariableTableDto variableTableDto = null; - if (variableDto != null && _appDataStorageService.VariableTables.TryGetValue(variableDto.VariableTableId, out var variableTable)) + if (variable != null && _appDataStorageService.VariableTables.TryGetValue(variable.VariableTableId, out var variableTable)) { - variableTableDto = variableTable; - variableTable.Variables.Remove(variableDto); + variableTable.Variables.Remove(variable); + } _eventService.RaiseVariableChanged( - this, new VariableChangedEventArgs(ActionChangeType.Deleted, variableDto)); + this, new VariableChangedEventArgs(ActionChangeType.Deleted, variable)); } } @@ -164,14 +161,14 @@ public class VariableManagementService : IVariableManagementService /// /// 异步批量导入变量。 /// - public async Task> BatchImportVariablesAsync(List variables) + public async Task> BatchImportVariablesAsync(List variables) { var result = await _variableAppService.BatchImportVariablesAsync(variables); - foreach (var variableDto in result) + foreach (var variable in result) { - if (_appDataStorageService.VariableTables.TryGetValue(variableDto.VariableTableId ,out var variableTable)) + if (_appDataStorageService.VariableTables.TryGetValue(variable.VariableTableId ,out var variableTable)) { - variableDto.VariableTable = variableTable; + variable.VariableTable = variableTable; } } @@ -186,7 +183,7 @@ public class VariableManagementService : IVariableManagementService return result; } - public async Task> FindExistingVariablesAsync(IEnumerable variablesToCheck) + public async Task> FindExistingVariablesAsync(IEnumerable variablesToCheck) { return await _variableAppService.FindExistingVariablesAsync(variablesToCheck); } @@ -197,7 +194,7 @@ public class VariableManagementService : IVariableManagementService /// 旧变量值 /// 新变量值 /// 发生变化的属性列表 - private List GetChangedProperties(VariableDto oldVariable, VariableDto newVariable) + private List GetChangedProperties(Variable oldVariable, Variable newVariable) { var changedProperties = new List(); @@ -261,17 +258,15 @@ public class VariableManagementService : IVariableManagementService { foreach (var id in ids) { - if (_appDataStorageService.Variables.TryRemove(id, out var variableDto)) + if (_appDataStorageService.Variables.TryRemove(id, out var variable)) { - VariableTableDto variableTableDto = null; - if (variableDto != null && _appDataStorageService.VariableTables.TryGetValue(variableDto.VariableTableId, out var variableTable)) + if (variable != null && _appDataStorageService.VariableTables.TryGetValue(variable.VariableTableId, out var variableTable)) { - variableTableDto = variableTable; - variableTable.Variables.Remove(variableDto); + variableTable.Variables.Remove(variable); } _eventService.RaiseVariableChanged( - this, new VariableChangedEventArgs(ActionChangeType.Deleted, variableDto)); + this, new VariableChangedEventArgs(ActionChangeType.Deleted, variable)); } } } diff --git a/DMS.Application/Services/Management/VariableTableManagementService.cs b/DMS.Application/Services/Management/VariableTableManagementService.cs index aaa5c6e..b780659 100644 --- a/DMS.Application/Services/Management/VariableTableManagementService.cs +++ b/DMS.Application/Services/Management/VariableTableManagementService.cs @@ -1,10 +1,10 @@ -using System.Collections.Concurrent; using DMS.Application.DTOs; 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; namespace DMS.Application.Services.Management; @@ -22,7 +22,7 @@ public class VariableTableManagementService : IVariableTableManagementService /// public event EventHandler OnVariableTableChanged; - public VariableTableManagementService(IVariableTableAppService variableTableAppService, + public VariableTableManagementService(IVariableTableAppService variableTableAppService, IAppDataStorageService appDataStorageService, IEventService eventService) { @@ -34,7 +34,7 @@ public class VariableTableManagementService : IVariableTableManagementService /// /// 异步根据ID获取变量表DTO。 /// - public async Task GetVariableTableByIdAsync(int id) + public async Task GetVariableTableByIdAsync(int id) { return await _variableTableAppService.GetVariableTableByIdAsync(id); } @@ -42,7 +42,7 @@ public class VariableTableManagementService : IVariableTableManagementService /// /// 异步获取所有变量表DTO列表。 /// - public async Task> GetAllVariableTablesAsync() + public async Task> GetAllVariableTablesAsync() { return await _variableTableAppService.GetAllVariableTablesAsync(); } @@ -53,25 +53,20 @@ public class VariableTableManagementService : IVariableTableManagementService public async Task CreateVariableTableAsync(CreateVariableTableWithMenuDto dto) { var result = await _variableTableAppService.CreateVariableTableAsync(dto); - + // 创建成功后,将变量表添加到内存中 if (result?.VariableTable != null) { // 添加null检查 - if (result.VariableTable == null) - return result; - - DeviceDto deviceDto = null; - if (_appDataStorageService.Devices != null && + if (_appDataStorageService.Devices != null && _appDataStorageService.Devices.TryGetValue(result.VariableTable.DeviceId, out var device)) { - deviceDto = device; // 确保VariableTables不为null if (device.VariableTables == null) - device.VariableTables = new List(); - + device.VariableTables = new List(); + device.VariableTables.Add(result.VariableTable); - + // 确保Device属性不为null if (result.VariableTable != null) result.VariableTable.Device = device; @@ -85,32 +80,26 @@ public class VariableTableManagementService : IVariableTableManagementService result.VariableTable)); } } - + return result; } /// /// 异步更新一个已存在的变量表。 /// - public async Task UpdateVariableTableAsync(VariableTableDto variableTableDto) + public async Task UpdateVariableTableAsync(VariableTable variableTable) { - var result = await _variableTableAppService.UpdateVariableTableAsync(variableTableDto); - - // 更新成功后,更新内存中的变量表 - if (result > 0 && variableTableDto != null) - { - DeviceDto deviceDto = null; - if (_appDataStorageService.Devices.TryGetValue(variableTableDto.DeviceId, out var device)) - { - deviceDto = device; - } + var result = await _variableTableAppService.UpdateVariableTableAsync(variableTable); - _appDataStorageService.VariableTables.AddOrUpdate(variableTableDto.Id, variableTableDto, (key, oldValue) => variableTableDto); + // 更新成功后,更新内存中的变量表 + if (result > 0 && variableTable != null) + { + _appDataStorageService.VariableTables.AddOrUpdate(variableTable.Id, variableTable, (key, oldValue) => variableTable); _eventService.RaiseVariableTableChanged(this, new VariableTableChangedEventArgs( DataChangeType.Updated, - variableTableDto)); + variableTable)); } - + return result; } @@ -119,32 +108,29 @@ public class VariableTableManagementService : IVariableTableManagementService /// public async Task DeleteVariableTableAsync(int id) { - var variableTable = await _variableTableAppService.GetVariableTableByIdAsync(id); // 获取变量表信息用于内存删除 var result = await _variableTableAppService.DeleteVariableTableAsync(id); - + // 删除成功后,从内存中移除变量表 - if (result && variableTable != null) + if (result ) { - if (_appDataStorageService.VariableTables.TryRemove(id, out var variableTableDto)) + if (_appDataStorageService.VariableTables.TryRemove(id, out var variableTable)) { - DeviceDto deviceDto = null; - if (variableTableDto != null && _appDataStorageService.Devices.TryGetValue(variableTableDto.DeviceId, out var device)) + if (variableTable != null && _appDataStorageService.Devices.TryGetValue(variableTable.DeviceId, out var device)) { - deviceDto = device; if (device.VariableTables != null) - device.VariableTables.Remove(variableTableDto); + device.VariableTables.Remove(variableTable); } _eventService.RaiseVariableTableChanged(this, new VariableTableChangedEventArgs( DataChangeType.Deleted, - variableTableDto)); + variableTable)); } } - + return result; } - - + + } \ No newline at end of file diff --git a/DMS.Application/Services/Processors/HistoryProcessor.cs b/DMS.Application/Services/Processors/HistoryProcessor.cs index 35ce8fe..ab4d147 100644 --- a/DMS.Application/Services/Processors/HistoryProcessor.cs +++ b/DMS.Application/Services/Processors/HistoryProcessor.cs @@ -56,7 +56,7 @@ public class HistoryProcessor : IVariableProcessor, IDisposable } } - // 将 VariableDto 转换为 VariableHistory + // 将 Variable 转换为 VariableHistory var historyData = new VariableHistory { VariableId = context.Data.Id, diff --git a/DMS.Application/Services/Processors/UpdateDbVariableProcessor.cs b/DMS.Application/Services/Processors/UpdateDbVariableProcessor.cs index c620a60..959475b 100644 --- a/DMS.Application/Services/Processors/UpdateDbVariableProcessor.cs +++ b/DMS.Application/Services/Processors/UpdateDbVariableProcessor.cs @@ -17,7 +17,7 @@ public class UpdateDbVariableProcessor : IVariableProcessor, IDisposable private const int BATCH_SIZE = 50; // 批量更新的阈值 private const int TIMER_INTERVAL_MS = 30 * 1000; // 30秒 - private readonly ConcurrentQueue _queue = new(); + private readonly ConcurrentQueue _queue = new(); private readonly Timer _timer; private readonly IRepositoryManager _repositoryManager; private readonly ILogger _logger; @@ -52,7 +52,7 @@ public class UpdateDbVariableProcessor : IVariableProcessor, IDisposable // 停止定时器,防止在写入过程中再次触发 _timer.Change(Timeout.Infinite, Timeout.Infinite); - var itemsToProcess = new List(); + var itemsToProcess = new List(); while (_queue.TryDequeue(out var item)) { itemsToProcess.Add(item); diff --git a/DMS.Application/Services/Processors/ValueConvertProcessor.cs b/DMS.Application/Services/Processors/ValueConvertProcessor.cs index 233d2ae..a2f4def 100644 --- a/DMS.Application/Services/Processors/ValueConvertProcessor.cs +++ b/DMS.Application/Services/Processors/ValueConvertProcessor.cs @@ -4,6 +4,7 @@ using DMS.Application.DTOs; using DMS.Application.Interfaces; using DMS.Application.Models; using DMS.Core.Enums; +using DMS.Core.Models; using Microsoft.Extensions.Logging; namespace DMS.Application.Services.Processors; @@ -58,7 +59,7 @@ public class ValueConvertProcessor : IVariableProcessor /// 根据转换公式计算用于UI显示的DisplayValue /// /// 需要处理的变量DTO - private void CalculateDisplayValue(VariableDto variable) + private void CalculateDisplayValue(Variable variable) { // 默认情况下,显示值等于原始数据值 variable.DisplayValue = variable.DataValue; @@ -106,7 +107,7 @@ public class ValueConvertProcessor : IVariableProcessor /// /// 关联的变量 DTO /// 从 S7 读取的原始对象值 - private void ConvertS7ValueToStringAndNumeric(VariableDto variable, string value) + private void ConvertS7ValueToStringAndNumeric(Variable variable, string value) { if (value == null) return; diff --git a/DMS.Application/Services/Triggers/Impl/TriggerActionExecutor.cs b/DMS.Application/Services/Triggers/Impl/TriggerActionExecutor.cs index 29e84d5..118e80c 100644 --- a/DMS.Application/Services/Triggers/Impl/TriggerActionExecutor.cs +++ b/DMS.Application/Services/Triggers/Impl/TriggerActionExecutor.cs @@ -93,7 +93,7 @@ namespace DMS.Application.Services.Triggers.Impl // Simple token replacement - in practice, use a templating engine like Scriban, RazorLight etc. // Note: This assumes context.Variable and context.CurrentValue have Name properties/values. - // You might need to adjust the token names and values based on your actual VariableDto structure. + // You might need to adjust the token names and values based on your actual Variable structure. var subject = subjectTemplate .Replace("{VariableName}", context.Variable?.Name ?? "Unknown") .Replace("{CurrentValue}", context.CurrentValue?.ToString() ?? "N/A") diff --git a/DMS.Application/Services/Triggers/Impl/TriggerEvaluationService.cs b/DMS.Application/Services/Triggers/Impl/TriggerEvaluationService.cs index 0ce4a1d..d7ac7e2 100644 --- a/DMS.Application/Services/Triggers/Impl/TriggerEvaluationService.cs +++ b/DMS.Application/Services/Triggers/Impl/TriggerEvaluationService.cs @@ -47,9 +47,10 @@ namespace DMS.Application.Services.Triggers.Impl try { var triggers = await _triggerManagementService.GetTriggersForVariableAsync(variableId); - // 注意:这里不再通过 _variableAppService 获取 VariableDto, - // 而是在调用 ExecuteActionAsync 时,由上层(DataEventService)提供。 - // 如果需要 VariableDto 信息,可以在 ExecuteActionAsync 的 TriggerContext 中携带。 +// 注意:这里不再通过 _variableAppService 获取 Variable, +// 如果需要 Variable 信息,可以在 ExecuteActionAsync 的 TriggerContext 中携带。 +// 创建一个临时的上下文对象,其中 Variable 可以为 null, +// 在实际应用中,你可能需要通过某种方式获取 Variable。 _logger.LogDebug($"Evaluating {triggers.Count(t => t.IsActive)} active triggers for variable ID: {variableId}"); @@ -59,9 +60,7 @@ namespace DMS.Application.Services.Triggers.Impl { if (EvaluateCondition(trigger, currentValue)) { - // 创建一个临时的上下文对象,其中 VariableDto 可以为 null, - // 因为我们目前没有从 _variableAppService 获取它。 - // 在实际应用中,你可能需要通过某种方式获取 VariableDto。 + var context = new TriggerContext(trigger, currentValue, null); await _actionExecutor.ExecuteActionAsync(context); diff --git a/DMS.Application/Services/Triggers/TriggerContext.cs b/DMS.Application/Services/Triggers/TriggerContext.cs index 03fc7c0..683284a 100644 --- a/DMS.Application/Services/Triggers/TriggerContext.cs +++ b/DMS.Application/Services/Triggers/TriggerContext.cs @@ -1,5 +1,6 @@ -using System; using DMS.Application.DTOs; +using DMS.Core.Models; +using System; namespace DMS.Application.Services.Triggers { @@ -9,5 +10,5 @@ namespace DMS.Application.Services.Triggers /// 被触发的触发器定义 /// 触发时变量的当前值 /// 关联的变量信息 - public record TriggerContext(TriggerDefinitionDto Trigger, object CurrentValue, VariableDto Variable); + public record TriggerContext(TriggerDefinitionDto Trigger, object CurrentValue, Variable Variable); } \ No newline at end of file diff --git a/DMS.Infrastructure/Interfaces/Services/IOpcUaServiceManager.cs b/DMS.Infrastructure/Interfaces/Services/IOpcUaServiceManager.cs index 5d4b458..020623c 100644 --- a/DMS.Infrastructure/Interfaces/Services/IOpcUaServiceManager.cs +++ b/DMS.Infrastructure/Interfaces/Services/IOpcUaServiceManager.cs @@ -1,4 +1,4 @@ -using DMS.Application.DTOs; +using DMS.Core.Models; using DMS.Infrastructure.Models; using System; using System.Collections.Generic; @@ -20,7 +20,7 @@ namespace DMS.Infrastructure.Interfaces.Services /// /// 添加设备到监控列表 /// - void AddDevice(DeviceDto device); + void AddDevice(DMS.Core.Models.Device device); /// /// 移除设备监控 @@ -30,7 +30,7 @@ namespace DMS.Infrastructure.Interfaces.Services /// /// 更新设备变量 /// - void UpdateVariables(int deviceId, List variables); + void UpdateVariables(int deviceId, List variables); /// /// 获取设备连接状态 diff --git a/DMS.Infrastructure/Interfaces/Services/IS7ServiceManager.cs b/DMS.Infrastructure/Interfaces/Services/IS7ServiceManager.cs index ef138cf..9bd47d9 100644 --- a/DMS.Infrastructure/Interfaces/Services/IS7ServiceManager.cs +++ b/DMS.Infrastructure/Interfaces/Services/IS7ServiceManager.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using DMS.Application.DTOs; +using DMS.Core.Models; using DMS.Infrastructure.Services; using DMS.Infrastructure.Services.S7; @@ -21,7 +21,7 @@ namespace DMS.Infrastructure.Interfaces.Services /// /// 添加设备到监控列表 /// - void AddDevice(DeviceDto device); + void AddDevice(DMS.Core.Models.Device device); /// /// 移除设备监控 @@ -31,7 +31,7 @@ namespace DMS.Infrastructure.Interfaces.Services /// /// 更新设备变量 /// - void UpdateVariables(int deviceId, List variables); + void UpdateVariables(int deviceId, List variables); /// /// 获取设备连接状态 diff --git a/DMS.Infrastructure/Services/OpcUa/OpcUaServiceManager.cs b/DMS.Infrastructure/Services/OpcUa/OpcUaServiceManager.cs index 46788bb..eae5f89 100644 --- a/DMS.Infrastructure/Services/OpcUa/OpcUaServiceManager.cs +++ b/DMS.Infrastructure/Services/OpcUa/OpcUaServiceManager.cs @@ -1,7 +1,6 @@ using System.Collections.Concurrent; using System.Diagnostics; using System.Text; -using DMS.Application.DTOs; using DMS.Application.Events; using DMS.Application.Interfaces; using DMS.Application.Models; @@ -99,7 +98,7 @@ namespace DMS.Infrastructure.Services.OpcUa /// /// 处理设备添加事件 /// - private void HandleDeviceAdded(DeviceDto device) + private void HandleDeviceAdded(DMS.Core.Models.Device device) { if (device == null) { @@ -151,7 +150,7 @@ namespace DMS.Infrastructure.Services.OpcUa /// /// 处理设备更新事件 /// - private void HandleDeviceUpdated(DeviceDto device) + private void HandleDeviceUpdated(DMS.Core.Models.Device device) { if (device == null) { @@ -303,7 +302,7 @@ namespace DMS.Infrastructure.Services.OpcUa /// /// 添加设备到监控列表 /// - public void AddDevice(DeviceDto device) + public void AddDevice(DMS.Core.Models.Device device) { if (device == null) throw new ArgumentNullException(nameof(device)); @@ -318,7 +317,7 @@ namespace DMS.Infrastructure.Services.OpcUa { Device = device, OpcUaService = new OpcUaService(), - Variables = new ConcurrentDictionary(), + Variables = new ConcurrentDictionary(), IsConnected = false }; @@ -341,7 +340,7 @@ namespace DMS.Infrastructure.Services.OpcUa /// /// 更新设备变量 /// - public void UpdateVariables(int deviceId, List variables) + public void UpdateVariables(int deviceId, List variables) { if (_deviceContexts.TryGetValue(deviceId, out var context)) { @@ -679,9 +678,9 @@ namespace DMS.Infrastructure.Services.OpcUa case VariablePropertyType.OpcUaNodeId: case VariablePropertyType.OpcUaUpdateType: case VariablePropertyType.PollingInterval: - if (context.Variables.TryGetValue(e.Variable.OpcUaNodeId, out var variableDto)) + if (context.Variables.TryGetValue(e.Variable.OpcUaNodeId, out var variable)) { - if (variableDto.IsActive) + if (variable.IsActive) { context.OpcUaService.UnsubscribeFromNode(e.Variable.OpcUaNodeId); context.OpcUaService.SubscribeToNode( @@ -744,9 +743,9 @@ namespace DMS.Infrastructure.Services.OpcUa /// public class DeviceContext { - public DeviceDto Device { get; set; } + public DMS.Core.Models.Device Device { get; set; } public OpcUaService OpcUaService { get; set; } - public ConcurrentDictionary Variables { get; set; } + public ConcurrentDictionary Variables { get; set; } public bool IsConnected { get; set; } } } \ No newline at end of file diff --git a/DMS.Infrastructure/Services/OpcUa/OptimizedOpcUaBackgroundService.cs b/DMS.Infrastructure/Services/OpcUa/OptimizedOpcUaBackgroundService.cs index 18e26ea..e0b0fa8 100644 --- a/DMS.Infrastructure/Services/OpcUa/OptimizedOpcUaBackgroundService.cs +++ b/DMS.Infrastructure/Services/OpcUa/OptimizedOpcUaBackgroundService.cs @@ -2,6 +2,7 @@ using DMS.Application.DTOs; using DMS.Application.Events; using DMS.Application.Interfaces; using DMS.Core.Enums; +using DMS.Core.Models; using DMS.Infrastructure.Interfaces.Services; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -113,7 +114,7 @@ namespace DMS.Infrastructure.Services.OpcUa var variables = device.VariableTables? .SelectMany(vt => vt.Variables) .Where(v => v.IsActive && v.Protocol == ProtocolType.OpcUa) - .ToList() ?? new List(); + .ToList() ?? new List(); _opcUaServiceManager.UpdateVariables(device.Id, variables); } diff --git a/DMS.Infrastructure/Services/S7/OptimizedS7BackgroundService.cs b/DMS.Infrastructure/Services/S7/OptimizedS7BackgroundService.cs index 0473856..842b2db 100644 --- a/DMS.Infrastructure/Services/S7/OptimizedS7BackgroundService.cs +++ b/DMS.Infrastructure/Services/S7/OptimizedS7BackgroundService.cs @@ -6,6 +6,7 @@ using DMS.Application.Interfaces; using DMS.Application.Models; using DMS.Core.Enums; using DMS.Core.Events; +using DMS.Core.Models; using DMS.Infrastructure.Interfaces.Services; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -30,7 +31,7 @@ public class OptimizedS7BackgroundService : BackgroundService private readonly int _s7PollOnceSleepTimeMs = 50; // 存储每个设备的变量按轮询间隔分组 - private readonly ConcurrentDictionary>> _variablesByPollingInterval = new(); + private readonly ConcurrentDictionary>> _variablesByPollingInterval = new(); /// @@ -132,7 +133,7 @@ public class OptimizedS7BackgroundService : BackgroundService _s7ServiceManager.AddDevice(s7Device); // 查找设备中所有要轮询的变量 - var variables = new List(); + var variables = new List(); foreach (var variableTable in s7Device.VariableTables) { @@ -203,7 +204,7 @@ public class OptimizedS7BackgroundService : BackgroundService /// /// 轮询设备的变量 /// - private async Task PollVariablesForDeviceAsync(S7DeviceContext context, List variables, + private async Task PollVariablesForDeviceAsync(S7DeviceContext context, List variables, CancellationToken stoppingToken) { if (!_appDataStorageService.Devices.TryGetValue(context.Device.Id, out var device)) diff --git a/DMS.Infrastructure/Services/S7/S7DeviceAgent.cs b/DMS.Infrastructure/Services/S7/S7DeviceAgent.cs index 0ac5281..97dc860 100644 --- a/DMS.Infrastructure/Services/S7/S7DeviceAgent.cs +++ b/DMS.Infrastructure/Services/S7/S7DeviceAgent.cs @@ -246,7 +246,7 @@ namespace DMS.Infrastructure.Services.S7 variable.UpdatedAt = DateTime.Now; // 创建VariableDto对象 - var variableDto = new VariableDto + var variableDto = new Variable { Id = variable.Id, Name = variable.Name, diff --git a/DMS.Infrastructure/Services/S7/S7ServiceManager.cs b/DMS.Infrastructure/Services/S7/S7ServiceManager.cs index 9a09d75..95dc700 100644 --- a/DMS.Infrastructure/Services/S7/S7ServiceManager.cs +++ b/DMS.Infrastructure/Services/S7/S7ServiceManager.cs @@ -1,10 +1,10 @@ using System.Collections.Concurrent; using System.Diagnostics; -using DMS.Application.DTOs; using DMS.Application.Events; using DMS.Application.Interfaces; using DMS.Core.Enums; using DMS.Core.Events; +using DMS.Core.Models; using DMS.Infrastructure.Interfaces.Services; using Microsoft.Extensions.Logging; using NPOI.HSSF.Record; @@ -85,7 +85,7 @@ namespace DMS.Infrastructure.Services.S7 /// /// 添加设备到监控列表 /// - public void AddDevice(DeviceDto device) + public void AddDevice(DMS.Core.Models.Device device) { if (device == null) throw new ArgumentNullException(nameof(device)); @@ -100,7 +100,7 @@ namespace DMS.Infrastructure.Services.S7 { Device = device, S7Service = _s7ServiceFactory.CreateService(), - Variables = new ConcurrentDictionary(), + Variables = new ConcurrentDictionary(), IsConnected = false }; @@ -123,7 +123,7 @@ namespace DMS.Infrastructure.Services.S7 /// /// 更新设备变量 /// - public void UpdateVariables(int deviceId, List variables) + public void UpdateVariables(int deviceId, List variables) { if (_deviceContexts.TryGetValue(deviceId, out var context)) { @@ -467,9 +467,9 @@ namespace DMS.Infrastructure.Services.S7 /// public class S7DeviceContext { - public DeviceDto Device { get; set; } + public DMS.Core.Models.Device Device { get; set; } public IS7Service S7Service { get; set; } - public ConcurrentDictionary Variables { get; set; } + public ConcurrentDictionary Variables { get; set; } public bool IsConnected { get; set; } } } \ No newline at end of file diff --git a/DMS.WPF/Interfaces/IVariableDataService.cs b/DMS.WPF/Interfaces/IVariableDataService.cs index fc1cdb8..6d20a33 100644 --- a/DMS.WPF/Interfaces/IVariableDataService.cs +++ b/DMS.WPF/Interfaces/IVariableDataService.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using DMS.Application.DTOs; +using DMS.Core.Models; using DMS.WPF.ItemViewModel; namespace DMS.WPF.Interfaces; @@ -18,7 +19,7 @@ public interface IVariableDataService /// /// 添加变量表。 /// - Task AddVariableTableToView(VariableTableDto tableDto); + Task AddVariableTableToView(VariableTable tableDto); /// /// 更新变量表。 diff --git a/DMS.WPF/Interfaces/IVariableTableDataService.cs b/DMS.WPF/Interfaces/IVariableTableDataService.cs index 7daf229..a4f7a87 100644 --- a/DMS.WPF/Interfaces/IVariableTableDataService.cs +++ b/DMS.WPF/Interfaces/IVariableTableDataService.cs @@ -1,5 +1,6 @@ using System.Collections.ObjectModel; using DMS.Application.DTOs; +using DMS.Core.Models; using DMS.WPF.ItemViewModel; namespace DMS.WPF.Interfaces; @@ -9,7 +10,7 @@ public interface IVariableTableDataService void LoadAllVariableTables(); - Task AddVariableTable(VariableTableDto variableTableDto, + Task AddVariableTable(VariableTable variableTable, MenuBeanDto menuDto = null, bool isAddDb = false); Task UpdateVariableTable(VariableTableItem variableTable); diff --git a/DMS.WPF/ItemViewModel/VariableItem.cs b/DMS.WPF/ItemViewModel/VariableItem.cs index c7d78bc..d252088 100644 --- a/DMS.WPF/ItemViewModel/VariableItem.cs +++ b/DMS.WPF/ItemViewModel/VariableItem.cs @@ -4,6 +4,7 @@ using DMS.Core.Enums; using System; using System.Collections.Generic; using DMS.Application.Configurations; +using DMS.Core.Models; using Microsoft.Extensions.DependencyInjection; namespace DMS.WPF.ItemViewModel; @@ -98,7 +99,7 @@ public partial class VariableItem : ObservableObject /// 用于在界面上显示变量表的关联信息。 /// [ObservableProperty] - private VariableTableDto? _variableTable; + private VariableTable _variableTable; /// /// 获取或设置与此变量关联的MQTT别名列表。 @@ -250,7 +251,7 @@ public partial class VariableItem : ObservableObject /// /// 检查死区报警和布尔值变化报警 /// - public void CheckAdvancedAlarms(VariableDto variable) + public void CheckAdvancedAlarms(Variable variable) { // 检查死区报警 if (variable.IsAlarmEnabled && variable.AlarmDeadband > 0) diff --git a/DMS.WPF/Profiles/MappingProfile.cs b/DMS.WPF/Profiles/MappingProfile.cs index e202d03..5b076dd 100644 --- a/DMS.WPF/Profiles/MappingProfile.cs +++ b/DMS.WPF/Profiles/MappingProfile.cs @@ -11,10 +11,12 @@ namespace DMS.WPF.Profiles { public MappingProfile() { - CreateMap() + CreateMap() .ReverseMap(); CreateMap() .ReverseMap(); + CreateMap() + .ReverseMap(); CreateMap() .ReverseMap(); CreateMap(); @@ -29,9 +31,8 @@ namespace DMS.WPF.Profiles CreateMap().ReverseMap(); CreateMap().ReverseMap(); CreateMap().ReverseMap(); - CreateMap() + CreateMap() .ReverseMap(); - CreateMap().ReverseMap(); CreateMap().ReverseMap(); } } diff --git a/DMS.WPF/Services/DeviceDataService.cs b/DMS.WPF/Services/DeviceDataService.cs index 741c48e..1e82e0b 100644 --- a/DMS.WPF/Services/DeviceDataService.cs +++ b/DMS.WPF/Services/DeviceDataService.cs @@ -82,9 +82,9 @@ public class DeviceDataService : IDeviceDataService /// public void LoadAllDevices() { - foreach (var deviceDto in _appDataStorageService.Devices.Values) + foreach (var device in _appDataStorageService.Devices.Values) { - _dataStorageService.Devices.Add(deviceDto.Id, _mapper.Map(deviceDto)); + _dataStorageService.Devices.Add(device.Id, _mapper.Map(device)); } } @@ -171,13 +171,13 @@ public class DeviceDataService : IDeviceDataService /// public async Task UpdateDevice(DeviceItem device) { - if (!_appDataStorageService.Devices.TryGetValue(device.Id, out var deviceDto)) + if (!_appDataStorageService.Devices.TryGetValue(device.Id, out var existingDevice)) { return false; } - _mapper.Map(device, deviceDto); - if (await _appDataCenterService.DeviceManagementService.UpdateDeviceAsync(deviceDto) > 0) + _mapper.Map(device, existingDevice); + if (await _appDataCenterService.DeviceManagementService.UpdateDeviceAsync(existingDevice) > 0) { // 更新数据库后会自动更新内存,无需额外操作 return true; diff --git a/DMS.WPF/Services/VariableDataService.cs b/DMS.WPF/Services/VariableDataService.cs index 9168e7f..f45d017 100644 --- a/DMS.WPF/Services/VariableDataService.cs +++ b/DMS.WPF/Services/VariableDataService.cs @@ -56,7 +56,7 @@ public class VariableDataService : IVariableDataService /// /// 添加变量表。 /// - public async Task AddVariableTableToView(VariableTableDto tableDto) + public async Task AddVariableTableToView(VariableTable tableDto) { // 添加null检查 if (tableDto == null || tableDto.DeviceId==0) @@ -76,15 +76,15 @@ public class VariableDataService : IVariableDataService /// /// 更新变量表。 /// - public async Task UpdateVariableTable(VariableTableItem variableTable) + public async Task UpdateVariableTable(VariableTableItem variableTableItem) { - if (variableTable == null) + if (variableTableItem is null) { return false; } - var variableTableDto = _mapper.Map(variableTable); - if (await _appDataCenterService.VariableTableManagementService.UpdateVariableTableAsync(variableTableDto) > 0) + var variableTable = _mapper.Map(variableTableItem); + if (await _appDataCenterService.VariableTableManagementService.UpdateVariableTableAsync(variableTable) > 0) { // 更新数据库后会自动更新内存,无需额外操作 return true; diff --git a/DMS.WPF/Services/VariableTableDataService.cs b/DMS.WPF/Services/VariableTableDataService.cs index 7082066..aa97a04 100644 --- a/DMS.WPF/Services/VariableTableDataService.cs +++ b/DMS.WPF/Services/VariableTableDataService.cs @@ -3,6 +3,7 @@ using AutoMapper; using DMS.Application.DTOs; using DMS.Application.Interfaces; using DMS.Core.Enums; +using DMS.Core.Models; using DMS.WPF.Interfaces; using DMS.WPF.ItemViewModel; @@ -38,17 +39,17 @@ public class VariableTableDataService : IVariableTableDataService } } - public async Task AddVariableTable(VariableTableDto variableTableDto, + public async Task AddVariableTable(VariableTable variableTable, MenuBeanDto menuDto = null, bool isAddDb = false) { - if (variableTableDto == null) + if (variableTable == null) return 0; if (isAddDb && menuDto != null) { CreateVariableTableWithMenuDto createDto = new CreateVariableTableWithMenuDto(); - createDto.VariableTable = variableTableDto; - createDto.DeviceId = variableTableDto.DeviceId; + createDto.VariableTable = variableTable; + createDto.DeviceId = variableTable.DeviceId; createDto.Menu = menuDto; var resDto = await _appDataCenterService.VariableTableManagementService.CreateVariableTableAsync(createDto); @@ -69,8 +70,8 @@ public class VariableTableDataService : IVariableTableDataService return false; } - var variableTableDto = _mapper.Map(variableTable); - if (await _appDataCenterService.VariableTableManagementService.UpdateVariableTableAsync(variableTableDto) > 0) + var variableTable_mapped = _mapper.Map(variableTable); + if (await _appDataCenterService.VariableTableManagementService.UpdateVariableTableAsync(variableTable_mapped) > 0) { // 更新数据库后会自动更新内存,无需额外操作 diff --git a/DMS.WPF/ViewModels/DeviceDetailViewModel.cs b/DMS.WPF/ViewModels/DeviceDetailViewModel.cs index 179ceb1..3286887 100644 --- a/DMS.WPF/ViewModels/DeviceDetailViewModel.cs +++ b/DMS.WPF/ViewModels/DeviceDetailViewModel.cs @@ -75,7 +75,7 @@ public partial class DeviceDetailViewModel : ViewModelBase TargetViewKey = nameof(VariableTableViewModel) }; int addVarTableId = await _wpfDataService.VariableTableDataService.AddVariableTable( - _mapper.Map(VariableTableItem), + _mapper.Map(VariableTableItem), tableMenu, true); if (addVarTableId > 0) diff --git a/DMS.WPF/ViewModels/DevicesViewModel.cs b/DMS.WPF/ViewModels/DevicesViewModel.cs index 3b9d130..4be9869 100644 --- a/DMS.WPF/ViewModels/DevicesViewModel.cs +++ b/DMS.WPF/ViewModels/DevicesViewModel.cs @@ -95,7 +95,7 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable // 添加null检查 if (_mapper != null) { - dto.Device = _mapper.Map(device); + dto.Device = _mapper.Map(device); } else { @@ -113,7 +113,7 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable if (device.IsAddDefVarTable) { - dto.VariableTable = new VariableTableDto() + dto.VariableTable = new VariableTable() { Name = "默认变量表", Description = "默认变量表", @@ -273,7 +273,7 @@ public partial class DevicesViewModel : ViewModelBase, INavigatable TargetViewKey = nameof(VariableTableViewModel) }; int addVarTableId = await _wpfDataService.VariableTableDataService.AddVariableTable( - _mapper.Map(VariableTableItem), + _mapper.Map(VariableTableItem), tableMenu, true); if (addVarTableId > 0) diff --git a/DMS.WPF/ViewModels/VariableTableViewModel.cs b/DMS.WPF/ViewModels/VariableTableViewModel.cs index ae1cdb4..28b4a3a 100644 --- a/DMS.WPF/ViewModels/VariableTableViewModel.cs +++ b/DMS.WPF/ViewModels/VariableTableViewModel.cs @@ -208,7 +208,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable editedVariable.UpdatedAt = DateTime.Now; // 更新数据库中的变量数据 - var updateResult = await _variableManagementService.UpdateVariableAsync(_mapper.Map(editedVariable)); + var updateResult = await _variableManagementService.UpdateVariableAsync(_mapper.Map(editedVariable)); if (updateResult > 0) @@ -245,7 +245,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable if (improtVariable == null || improtVariable.Count == 0) return; - var improtVariableDtos = _mapper.Map>(improtVariable); + var improtVariableDtos = _mapper.Map>(improtVariable); foreach (var variableDto in improtVariableDtos) { variableDto.IsActive = true; @@ -331,7 +331,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable // 将导入的变量转换为DTO并设置必要的属性 - var importedVariableDtos = _mapper.Map>(importedVariables); + var importedVariableDtos = _mapper.Map>(importedVariables); foreach (var variableDto in importedVariableDtos) { variableDto.CreatedAt = DateTime.Now; @@ -420,7 +420,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable // // 添加变量数据到数据库 var addVariable - = await _variableManagementService.CreateVariableAsync(_mapper.Map(variableItemViewModel)); + = await _variableManagementService.CreateVariableAsync(_mapper.Map(variableItemViewModel)); _mapper.Map(addVariable, variableItemViewModel); // // 更新当前页面显示的数据:将新变量添加到集合中 _variableItemList.Add(variableItemViewModel); @@ -526,7 +526,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable } // 批量更新数据库中的变量数据 - var variableDtos = _mapper.Map>(validVariables); + var variableDtos = _mapper.Map>(validVariables); var result = await _variableManagementService.UpdateVariablesAsync(variableDtos); if (result > 0) @@ -568,7 +568,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable } // 批量更新数据库中的变量数据 - var variableDtos = _mapper.Map>(validVariables); + var variableDtos = _mapper.Map>(validVariables); var result = await _variableManagementService.UpdateVariablesAsync(variableDtos); if (result > 0) @@ -720,7 +720,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable } // 批量更新数据库中的变量数据 - var variableDtos = _mapper.Map>(validVariables); + var variableDtos = _mapper.Map>(validVariables); var result = await _variableManagementService.UpdateVariablesAsync(variableDtos); if (result > 0) @@ -800,7 +800,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable } // 批量更新数据库中的变量数据 - var variableDtos = _mapper.Map>(validVariables); + var variableDtos = _mapper.Map>(validVariables); var updateResult = await _variableManagementService.UpdateVariablesAsync(variableDtos); @@ -855,7 +855,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable } // 批量更新数据库中的变量数据 - var variableDtos = _mapper.Map>(validVariables); + var variableDtos = _mapper.Map>(validVariables); var updateResult = await _variableManagementService.UpdateVariablesAsync(variableDtos); if (updateResult > 0)