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.Collections.Generic;
using DMS.Core.Models;
namespace DMS.Application.DTOs;
@@ -26,5 +27,5 @@ public class MqttServerDto
public string MessageHeader { get; set; }
public string MessageContent { 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.Models;
using System;
using System.Collections.Generic;
namespace DMS.Application.DTOs;
@@ -15,7 +17,7 @@ public class VariableDto
public double NumericValue { get; set; }
public string DisplayValue { 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 int PollingInterval { 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;
@@ -10,7 +12,7 @@ public interface IMqttAliasAppService
/// <summary>
/// 异步获取指定变量的所有MQTT别名关联。
/// </summary>
Task<List<VariableMqttAliasDto>> GetAliasesForVariableAsync(int variableId);
Task<List<VariableMqttAlias>> GetAliasesForVariableAsync(int variableId);
/// <summary>
/// 异步为变量分配或更新一个MQTT别名。

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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