refactor: 移除 VariableMqttAliasDto 并替换为 VariableMqttAlias

本次重构移除了 VariableMqttAliasDto,并将其所有用法替换为 VariableMqttAlias 模型。

  主要变更:
  - 在 DTO、服务和接口中将 VariableMqttAliasDto 替换为 VariableMqttAlias。
  - 删除了 VariableMqttAliasDto 的 AutoMapper 映射。
  - 删除了 VariableMqttAliasDto.cs 文件。
This commit is contained in:
2025-10-06 17:25:05 +08:00
parent 0965aa1289
commit a3af5dd0cc
11 changed files with 37 additions and 64 deletions

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using DMS.Core.Models;
namespace DMS.Application.DTOs; namespace DMS.Application.DTOs;
@@ -26,5 +27,5 @@ public class MqttServerDto
public string MessageHeader { get; set; } public string MessageHeader { get; set; }
public string MessageContent { get; set; } public string MessageContent { get; set; }
public string MessageFooter { get; set; } public string MessageFooter { get; set; }
public List<VariableMqttAliasDto> VariableAliases { get; set; } = new(); public List<VariableMqttAlias> VariableAliases { get; set; } = new();
} }

View File

@@ -1,5 +1,7 @@
using DMS.Core.Enums; using DMS.Core.Enums;
using DMS.Core.Models;
using System; using System;
using System.Collections.Generic;
namespace DMS.Application.DTOs; namespace DMS.Application.DTOs;
@@ -15,7 +17,7 @@ public class VariableDto
public double NumericValue { get; set; } public double NumericValue { get; set; }
public string DisplayValue { get; set; } public string DisplayValue { get; set; }
public VariableTableDto? VariableTable { get; set; } public VariableTableDto? VariableTable { get; set; }
public List<VariableMqttAliasDto>? MqttAliases { get; set; } = new List<VariableMqttAliasDto>(); public List<VariableMqttAlias>? MqttAliases { get; set; } = new List<VariableMqttAlias>();
public SignalType SignalType { get; set; } public SignalType SignalType { get; set; }
public int PollingInterval { get; set; } public int PollingInterval { get; set; }
public bool IsActive { get; set; } public bool IsActive { get; set; }

View File

@@ -1,25 +0,0 @@
using DMS.Core.Models;
namespace DMS.Application.DTOs;
/// <summary>
/// 用于在UI上显示和管理变量与MQTT服务器关联别名的DTO。
/// </summary>
public class VariableMqttAliasDto
{
public int Id { get; set; }
public int VariableId { get; set; }
public int MqttServerId { get; set; }
public string MqttServerName { get; set; } // 用于UI显示关联的服务器名称
public string Alias { get; set; }
/// <summary>
/// 关联的变量对象。
/// </summary>
public Variable Variable { get; set; }
/// <summary>
/// 关联的MQTT服务器对象。
/// </summary>
public MqttServer MqttServer { get; set; }
}

View File

@@ -1,4 +1,6 @@
using DMS.Application.DTOs; using DMS.Core.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace DMS.Application.Interfaces.Database; namespace DMS.Application.Interfaces.Database;
@@ -10,7 +12,7 @@ public interface IMqttAliasAppService
/// <summary> /// <summary>
/// 异步获取指定变量的所有MQTT别名关联。 /// 异步获取指定变量的所有MQTT别名关联。
/// </summary> /// </summary>
Task<List<VariableMqttAliasDto>> GetAliasesForVariableAsync(int variableId); Task<List<VariableMqttAlias>> GetAliasesForVariableAsync(int variableId);
/// <summary> /// <summary>
/// 异步为变量分配或更新一个MQTT别名。 /// 异步为变量分配或更新一个MQTT别名。

View File

@@ -1,5 +1,6 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using DMS.Application.DTOs; using DMS.Application.DTOs;
using DMS.Core.Models;
namespace DMS.Application.Interfaces; namespace DMS.Application.Interfaces;
@@ -43,7 +44,7 @@ public interface IAppDataStorageService
/// <summary> /// <summary>
/// 安全字典用于存储所有MQTT变量别名的数据 /// 安全字典用于存储所有MQTT变量别名的数据
/// </summary> /// </summary>
ConcurrentDictionary<int, VariableMqttAliasDto> VariableMqttAliases { get; } ConcurrentDictionary<int, VariableMqttAlias> VariableMqttAliases { get; }
/// <summary> /// <summary>
/// 安全字典,用于存储所有触发器定义数据 /// 安全字典,用于存储所有触发器定义数据

View File

@@ -31,11 +31,6 @@ public class MappingProfile : Profile
CreateMap<MqttServer, MqttServerDto>().ReverseMap(); CreateMap<MqttServer, MqttServerDto>().ReverseMap();
CreateMap<MqttServerDto, MqttServerDto>().ReverseMap(); CreateMap<MqttServerDto, MqttServerDto>().ReverseMap();
// VariableMqttAlias 映射
CreateMap<VariableMqttAlias, VariableMqttAliasDto>()
.ForMember(dest => dest.MqttServerName, opt => opt.MapFrom(src => src.MqttServer.ServerName))
.ReverseMap();
// VariableHistory 映射 // VariableHistory 映射
CreateMap<VariableHistory, VariableHistoryDto>() CreateMap<VariableHistory, VariableHistoryDto>()
.ForMember(dest => dest.VariableName, opt => opt.MapFrom(src => src.Variable.Name)) .ForMember(dest => dest.VariableName, opt => opt.MapFrom(src => src.Variable.Name))

View File

@@ -1,6 +1,7 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using DMS.Application.DTOs; using DMS.Application.DTOs;
using DMS.Application.Interfaces; using DMS.Application.Interfaces;
using DMS.Core.Models;
namespace DMS.Application.Services; namespace DMS.Application.Services;
@@ -40,7 +41,7 @@ public class AppDataStorageService : IAppDataStorageService
/// <summary> /// <summary>
/// 安全字典用于存储所有MQTT变量别名的数据 /// 安全字典用于存储所有MQTT变量别名的数据
/// </summary> /// </summary>
public ConcurrentDictionary<int, VariableMqttAliasDto> VariableMqttAliases { get; } = new(); public ConcurrentDictionary<int, VariableMqttAlias> VariableMqttAliases { get; } = new();

View File

@@ -105,27 +105,23 @@ public class DataLoaderService : IDataLoaderService
private async Task LoadAllVariableMqttAliases() private async Task LoadAllVariableMqttAliases()
{ {
var variableMqttAliases = await _repositoryManager.VariableMqttAliases.GetAllAsync();
var variableMqttAliasDtos = _mapper.Map<IEnumerable<VariableMqttAliasDto>>(variableMqttAliases);
foreach (var variableMqttAliasDto in variableMqttAliasDtos)
{
_appDataStorageService.VariableMqttAliases.TryAdd(variableMqttAliasDto.Id, variableMqttAliasDto);
if (_appDataStorageService.Variables.TryGetValue(variableMqttAliasDto.VariableId, out var variable))
{
variableMqttAliasDto.Variable = _mapper.Map<Variable>(variable);
variable.MqttAliases?.Add(variableMqttAliasDto);
}
if (_appDataStorageService.MqttServers.TryGetValue(variableMqttAliasDto.MqttServerId, out var mqttServer)) var variableMqttAliases = await _repositoryManager.VariableMqttAliases.GetAllAsync();
{ foreach (var variableMqttAlias in variableMqttAliases)
variableMqttAliasDto.MqttServer = _mapper.Map<MqttServer>(mqttServer); {
variableMqttAliasDto.MqttServerName = variableMqttAliasDto.MqttServer.ServerName; _appDataStorageService.VariableMqttAliases.TryAdd(variableMqttAlias.Id, variableMqttAlias);
mqttServer.VariableAliases?.Add(variableMqttAliasDto); if (_appDataStorageService.Variables.TryGetValue(variableMqttAlias.VariableId, out var variable))
} {
variableMqttAlias.Variable = _mapper.Map<Variable>(variable);
variable.MqttAliases?.Add(variableMqttAlias);
} }
if (_appDataStorageService.MqttServers.TryGetValue(variableMqttAlias.MqttServerId, out var mqttServer))
{
variableMqttAlias.MqttServer = _mapper.Map<MqttServer>(mqttServer);
mqttServer.VariableAliases?.Add(variableMqttAlias);
}
}
} }
/// <summary> /// <summary>

View File

@@ -1,8 +1,11 @@
using AutoMapper; using AutoMapper;
using DMS.Application.DTOs;
using DMS.Application.Interfaces; using DMS.Application.Interfaces;
using DMS.Application.Interfaces.Database; using DMS.Application.Interfaces.Database;
using DMS.Core.Interfaces; using DMS.Core.Interfaces;
using DMS.Core.Models;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace DMS.Application.Services.Database; namespace DMS.Application.Services.Database;
@@ -26,11 +29,11 @@ public class MqttAliasAppService : IMqttAliasAppService
/// <summary> /// <summary>
/// 异步获取指定变量的所有MQTT别名关联。 /// 异步获取指定变量的所有MQTT别名关联。
/// </summary> /// </summary>
public async Task<List<VariableMqttAliasDto>> GetAliasesForVariableAsync(int variableId) public async Task<List<VariableMqttAlias>> GetAliasesForVariableAsync(int variableId)
{ {
// 从仓储获取别名并确保加载了关联的MqttServer信息 // 从仓储获取别名并确保加载了关联的MqttServer信息
var aliases = await _repoManager.VariableMqttAliases.GetAliasesForVariableAsync(variableId); var aliases = await _repoManager.VariableMqttAliases.GetAliasesForVariableAsync(variableId);
return _mapper.Map<List<VariableMqttAliasDto>>(aliases); return aliases.ToList();
} }
/// <summary> /// <summary>

View File

@@ -34,15 +34,14 @@ public class MqttPublishProcessor : IVariableProcessor
} }
// 遍历所有关联的MQTT配置并将其推入发送队列 // 遍历所有关联的MQTT配置并将其推入发送队列
foreach (var variableMqttAliasDto in variable.MqttAliases) foreach (var variableMqttAlias in variable.MqttAliases)
{ {
if (!variableMqttAliasDto.MqttServer.IsActive) if (!variableMqttAlias.MqttServer.IsActive)
{ {
continue; continue;
} }
// 发布变量数据到MQTT服务器 // 发布变量数据到MQTT服务器
var variableMqttAlias = _mapper.Map<VariableMqttAlias>(variableMqttAliasDto);
variableMqttAlias.Variable.DisplayValue=variable.DisplayValue; variableMqttAlias.Variable.DisplayValue=variable.DisplayValue;
await _mqttServiceManager.PublishVariableDataAsync(variableMqttAlias); await _mqttServiceManager.PublishVariableDataAsync(variableMqttAlias);
} }

View File

@@ -17,7 +17,6 @@ namespace DMS.WPF.Profiles
CreateMap<OpcUaNode, OpcUaNodeItemViewModel>() CreateMap<OpcUaNode, OpcUaNodeItemViewModel>()
.ReverseMap(); .ReverseMap();
CreateMap<VariableItemViewModel, VariableItemViewModel>(); CreateMap<VariableItemViewModel, VariableItemViewModel>();
CreateMap<VariableMqttAliasDto, VariableMqttAliasItemViewModel>().ReverseMap();
CreateMap<VariableMqttAlias, VariableMqttAliasItemViewModel>().ReverseMap(); CreateMap<VariableMqttAlias, VariableMqttAliasItemViewModel>().ReverseMap();
@@ -32,7 +31,6 @@ namespace DMS.WPF.Profiles
CreateMap<VariableHistoryDto, VariableHistoryItemViewModel>().ReverseMap(); CreateMap<VariableHistoryDto, VariableHistoryItemViewModel>().ReverseMap();
CreateMap<VariableDto, VariableItemViewModel>() CreateMap<VariableDto, VariableItemViewModel>()
.ReverseMap(); .ReverseMap();
CreateMap<VariableMqttAliasDto, VariableMqttAliasItemViewModel>().ReverseMap();
CreateMap<VariableTableDto, VariableTableItemViewModel>().ReverseMap(); CreateMap<VariableTableDto, VariableTableItemViewModel>().ReverseMap();
CreateMap<NlogDto, NlogItemViewModel>().ReverseMap(); CreateMap<NlogDto, NlogItemViewModel>().ReverseMap();
} }