refactor: 将VariableMqttAlias改为MqttAlias,将VariableMqttAliasItemViewModel改为MqttAliasItem

This commit is contained in:
2025-10-06 17:39:03 +08:00
parent a3af5dd0cc
commit 6cff70cd87
26 changed files with 50 additions and 56 deletions

View File

@@ -27,5 +27,5 @@ public class MqttServerDto
public string MessageHeader { get; set; }
public string MessageContent { get; set; }
public string MessageFooter { get; set; }
public List<VariableMqttAlias> VariableAliases { get; set; } = new();
public List<MqttAlias> VariableAliases { get; set; } = new();
}

View File

@@ -17,7 +17,7 @@ public class VariableDto
public double NumericValue { get; set; }
public string DisplayValue { get; set; }
public VariableTableDto? VariableTable { get; set; }
public List<VariableMqttAlias>? MqttAliases { get; set; } = new List<VariableMqttAlias>();
public List<MqttAlias>? MqttAliases { get; set; } = new List<MqttAlias>();
public SignalType SignalType { get; set; }
public int PollingInterval { get; set; }
public bool IsActive { get; set; }

View File

@@ -12,7 +12,7 @@ public interface IMqttAliasAppService
/// <summary>
/// 异步获取指定变量的所有MQTT别名关联。
/// </summary>
Task<List<VariableMqttAlias>> GetAliasesForVariableAsync(int variableId);
Task<List<MqttAlias>> GetAliasesForVariableAsync(int variableId);
/// <summary>
/// 异步为变量分配或更新一个MQTT别名。

View File

@@ -44,7 +44,7 @@ public interface IAppDataStorageService
/// <summary>
/// 安全字典用于存储所有MQTT变量别名的数据
/// </summary>
ConcurrentDictionary<int, VariableMqttAlias> VariableMqttAliases { get; }
ConcurrentDictionary<int, MqttAlias> VariableMqttAliases { get; }
/// <summary>
/// 安全字典,用于存储所有触发器定义数据

View File

@@ -41,7 +41,7 @@ public class AppDataStorageService : IAppDataStorageService
/// <summary>
/// 安全字典用于存储所有MQTT变量别名的数据
/// </summary>
public ConcurrentDictionary<int, VariableMqttAlias> VariableMqttAliases { get; } = new();
public ConcurrentDictionary<int, MqttAlias> VariableMqttAliases { get; } = new();

View File

@@ -29,7 +29,7 @@ public class MqttAliasAppService : IMqttAliasAppService
/// <summary>
/// 异步获取指定变量的所有MQTT别名关联。
/// </summary>
public async Task<List<VariableMqttAlias>> GetAliasesForVariableAsync(int variableId)
public async Task<List<MqttAlias>> GetAliasesForVariableAsync(int variableId)
{
// 从仓储获取别名并确保加载了关联的MqttServer信息
var aliases = await _repoManager.VariableMqttAliases.GetAliasesForVariableAsync(variableId);
@@ -61,7 +61,7 @@ public class MqttAliasAppService : IMqttAliasAppService
var variable = await _repoManager.Variables.GetByIdAsync(variableId);
var mqttServer = await _repoManager.MqttServers.GetByIdAsync(mqttServerId);
var newAlias = new VariableMqttAlias
var newAlias = new MqttAlias
{
VariableId = variableId,
MqttServerId = mqttServerId,

View File

@@ -156,7 +156,7 @@ namespace DMS.Application.Services.Database
await _repositoryManager.Variables.DeleteByVariableTableIdAsync(id);
// 删除关联的MQTT别名
// await _repositoryManager.VariableMqttAlias.DeleteByVariableTableIdAsync(id);
// await _repositoryManager.MqttAlias.DeleteByVariableTableIdAsync(id);
// 删除关联的菜单树
await _repositoryManager.Menus.DeleteMenuTreeByTargetIdAsync(MenuType.VariableTableMenu, id);

View File

@@ -4,22 +4,22 @@ using System.Threading.Tasks;
namespace DMS.Core.Interfaces.Repositories
{
public interface IVariableMqttAliasRepository : IBaseRepository<VariableMqttAlias>
public interface IVariableMqttAliasRepository : IBaseRepository<MqttAlias>
{
/// <summary>
/// 异步获取指定变量的所有MQTT别名关联。
/// </summary>
Task<List<VariableMqttAlias>> GetAliasesForVariableAsync(int variableId);
Task<List<MqttAlias>> GetAliasesForVariableAsync(int variableId);
/// <summary>
/// 异步根据变量和服务器获取别名关联。
/// </summary>
Task<VariableMqttAlias> GetByVariableAndServerAsync(int variableId, int mqttServerId);
Task<MqttAlias> GetByVariableAndServerAsync(int variableId, int mqttServerId);
/// <summary>
/// 异步获取所有变量与MQTT别名关联。
/// </summary>
/// <returns>包含所有变量与MQTT别名关联实体的列表。</returns>
Task<List<VariableMqttAlias>> GetAllAsync();
Task<List<MqttAlias>> GetAllAsync();
}
}

View File

@@ -25,7 +25,7 @@ namespace DMS.Core.Interfaces.Services
/// <summary>
/// 更新MQTT服务器变量别名
/// </summary>
void UpdateVariableMqttAliases(int mqttServerId, List<VariableMqttAlias> variableMqttAliases);
void UpdateVariableMqttAliases(int mqttServerId, List<MqttAlias> variableMqttAliases);
/// <summary>
/// 获取MQTT服务器连接状态
@@ -55,7 +55,7 @@ namespace DMS.Core.Interfaces.Services
/// <summary>
/// 发布变量数据到MQTT服务器
/// </summary>
Task PublishVariableDataAsync(VariableMqttAlias variableMqtt, CancellationToken cancellationToken = default);
Task PublishVariableDataAsync(MqttAlias variableMqtt, CancellationToken cancellationToken = default);
/// <summary>
/// 发布批量变量数据到MQTT服务器

View File

@@ -4,7 +4,7 @@ using DMS.Core.Models;
/// 领域模型代表一个变量到一个MQTT服务器的特定关联包含专属别名。
/// 这是一个关联实体,用于解决多对多关系中需要额外属性(别名)的问题。
/// </summary>
public class VariableMqttAlias
public class MqttAlias
{
/// <summary>
/// 唯一标识符。

View File

@@ -68,5 +68,5 @@ public class MqttServer
/// <summary>
/// 与此服务器关联的所有变量别名。通过此集合可以反向查找关联的变量。
/// </summary>
public List<VariableMqttAlias> VariableAliases { get; set; } = new();
public List<MqttAlias> VariableAliases { get; set; } = new();
}

View File

@@ -57,7 +57,7 @@ public class Variable
/// <summary>
/// 此变量的所有MQTT发布别名关联。一个变量可以关联多个MQTT服务器每个关联可以有独立的别名。
/// </summary>
public List<VariableMqttAlias> MqttAliases { get; set; } = new();
public List<MqttAlias> MqttAliases { get; set; } = new();
/// <summary>
/// OPC UA NodeId (仅当 Protocol 为 OpcUa 时有效)。

View File

@@ -44,7 +44,7 @@ namespace DMS.Infrastructure.Interfaces.Services
/// <summary>
/// 发布变量数据到MQTT服务器
/// </summary>
Task PublishVariableDataAsync(VariableMqttAlias variableMqtt, CancellationToken cancellationToken = default);
Task PublishVariableDataAsync(MqttAlias variableMqtt, CancellationToken cancellationToken = default);
/// <summary>
/// 发布批量变量数据到MQTT服务器

View File

@@ -30,7 +30,7 @@ public class MappingProfile : Profile
CreateMap<DbMqttServer, MqttServer>()
.ForMember(dest => dest.VariableAliases, opt => opt.Ignore())
.ReverseMap();
CreateMap<DbVariableMqttAlias, VariableMqttAlias>()
CreateMap<DbVariableMqttAlias, MqttAlias>()
.ReverseMap();
CreateMap<DbMenu, MenuBean>().ReverseMap();

View File

@@ -36,20 +36,20 @@ public class VariableMqttAliasRepository : BaseRepository<DbVariableMqttAlias>,
/// </summary>
/// <param name="id">变量与MQTT别名关联的唯一标识符。</param>
/// <returns>对应的变量与MQTT别名关联实体如果不存在则为null。</returns>
public async Task<VariableMqttAlias> GetByIdAsync(int id)
public async Task<MqttAlias> GetByIdAsync(int id)
{
var dbVariableMqttAlias = await base.GetByIdAsync(id);
return _mapper.Map<VariableMqttAlias>(dbVariableMqttAlias);
return _mapper.Map<MqttAlias>(dbVariableMqttAlias);
}
/// <summary>
/// 异步获取所有变量与MQTT别名关联。
/// </summary>
/// <returns>包含所有变量与MQTT别名关联实体的列表。</returns>
public async Task<List<VariableMqttAlias>> GetAllAsync()
public async Task<List<MqttAlias>> GetAllAsync()
{
var dbList = await base.GetAllAsync();
return _mapper.Map<List<VariableMqttAlias>>(dbList);
return _mapper.Map<List<MqttAlias>>(dbList);
}
/// <summary>
@@ -57,7 +57,7 @@ public class VariableMqttAliasRepository : BaseRepository<DbVariableMqttAlias>,
/// </summary>
/// <param name="entity">要添加的变量与MQTT别名关联实体。</param>
/// <returns>添加成功后的变量与MQTT别名关联实体包含数据库生成的ID等信息。</returns>
public async Task<VariableMqttAlias> AddAsync(VariableMqttAlias entity)
public async Task<MqttAlias> AddAsync(MqttAlias entity)
{
var dbVariableMqttAlias = await base.AddAsync(_mapper.Map<DbVariableMqttAlias>(entity));
return _mapper.Map(dbVariableMqttAlias, entity);
@@ -68,14 +68,14 @@ public class VariableMqttAliasRepository : BaseRepository<DbVariableMqttAlias>,
/// </summary>
/// <param name="entity">要更新的变量与MQTT别名关联实体。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> UpdateAsync(VariableMqttAlias entity) => await base.UpdateAsync(_mapper.Map<DbVariableMqttAlias>(entity));
public async Task<int> UpdateAsync(MqttAlias entity) => await base.UpdateAsync(_mapper.Map<DbVariableMqttAlias>(entity));
/// <summary>
/// 异步删除变量与MQTT别名关联。
/// </summary>
/// <param name="entity">要删除的变量与MQTT别名关联实体。</param>
/// <returns>受影响的行数。</returns>
public async Task<int> DeleteAsync(VariableMqttAlias entity) => await base.DeleteAsync(_mapper.Map<DbVariableMqttAlias>(entity));
public async Task<int> DeleteAsync(MqttAlias entity) => await base.DeleteAsync(_mapper.Map<DbVariableMqttAlias>(entity));
/// <summary>
/// 异步根据ID删除变量与MQTT别名关联。
@@ -98,24 +98,24 @@ public class VariableMqttAliasRepository : BaseRepository<DbVariableMqttAlias>,
/// </summary>
/// <param name="number">要获取的变量与MQTT别名关联数量。</param>
/// <returns>包含指定数量变量与MQTT别名关联实体的列表。</returns>
public new async Task<List<VariableMqttAlias>> TakeAsync(int number)
public new async Task<List<MqttAlias>> TakeAsync(int number)
{
var dbList = await base.TakeAsync(number);
return _mapper.Map<List<VariableMqttAlias>>(dbList);
return _mapper.Map<List<MqttAlias>>(dbList);
}
public async Task<List<VariableMqttAlias>> AddBatchAsync(List<VariableMqttAlias> entities)
public async Task<List<MqttAlias>> AddBatchAsync(List<MqttAlias> entities)
{
var dbEntities = _mapper.Map<List<DbVariableMqttAlias>>(entities);
var addedEntities = await base.AddBatchAsync(dbEntities);
return _mapper.Map<List<VariableMqttAlias>>(addedEntities);
return _mapper.Map<List<MqttAlias>>(addedEntities);
}
/// <summary>
/// 异步获取指定变量的所有MQTT别名关联。
/// </summary>
public async Task<List<VariableMqttAlias>> GetAliasesForVariableAsync(int variableId)
public async Task<List<MqttAlias>> GetAliasesForVariableAsync(int variableId)
{
// 查询别名关联并包含关联的Variable和MqttServer信息
var dbList = await _dbContext.GetInstance().Queryable<DbVariableMqttAlias>()
@@ -139,7 +139,7 @@ public class VariableMqttAliasRepository : BaseRepository<DbVariableMqttAlias>,
var mqttServerDict = mqttServers.ToDictionary(m => m.Id, m => _mapper.Map<MqttServer>(m));
// 映射主实体并设置导航属性
var result = _mapper.Map<List<VariableMqttAlias>>(dbList);
var result = _mapper.Map<List<MqttAlias>>(dbList);
foreach (var alias in result)
{
if (variableDict.TryGetValue(alias.VariableId, out var variable))
@@ -159,7 +159,7 @@ public class VariableMqttAliasRepository : BaseRepository<DbVariableMqttAlias>,
/// <summary>
/// 异步根据变量和服务器获取别名关联。
/// </summary>
public async Task<VariableMqttAlias> GetByVariableAndServerAsync(int variableId, int mqttServerId)
public async Task<MqttAlias> GetByVariableAndServerAsync(int variableId, int mqttServerId)
{
var dbAlias = await _dbContext.GetInstance().Queryable<DbVariableMqttAlias>()
.Where(x => x.VariableId == variableId && x.MqttServerId == mqttServerId)
@@ -178,7 +178,7 @@ public class VariableMqttAliasRepository : BaseRepository<DbVariableMqttAlias>,
.FirstAsync();
// 映射主实体并设置导航属性
var result = _mapper.Map<VariableMqttAlias>(dbAlias);
var result = _mapper.Map<MqttAlias>(dbAlias);
result.Variable = _mapper.Map<Variable>(variable);
result.MqttServer = _mapper.Map<MqttServer>(mqttServer);

View File

@@ -115,7 +115,7 @@ namespace DMS.Infrastructure.Services.Mqtt
/// <summary>
/// 发布变量数据到MQTT服务器
/// </summary>
public async Task PublishVariableDataAsync(VariableMqttAlias variableMqtt, CancellationToken cancellationToken = default)
public async Task PublishVariableDataAsync(MqttAlias variableMqtt, CancellationToken cancellationToken = default)
{
await _mqttServiceManager.PublishVariableDataAsync(variableMqtt, cancellationToken);
}

View File

@@ -28,14 +28,14 @@ namespace DMS.Infrastructure.Services.Mqtt
/// <summary>
/// 与该MQTT服务器关联的所有变量MQTT别名
/// </summary>
public ConcurrentDictionary<int, VariableMqttAlias> VariableMqttAliases { get; set; }
public ConcurrentDictionary<int, MqttAlias> VariableMqttAliases { get; set; }
/// <summary>
/// 构造函数
/// </summary>
public MqttDeviceContext()
{
VariableMqttAliases = new ConcurrentDictionary<int, VariableMqttAlias>();
VariableMqttAliases = new ConcurrentDictionary<int, MqttAlias>();
ReconnectAttempts = 0;
}
}

View File

@@ -94,7 +94,7 @@ namespace DMS.Infrastructure.Services.Mqtt
/// <summary>
/// 更新MQTT服务器变量别名
/// </summary>
public void UpdateVariableMqttAliases(int mqttServerId, List<VariableMqttAlias> variableMqttAliases)
public void UpdateVariableMqttAliases(int mqttServerId, List<MqttAlias> variableMqttAliases)
{
if (_mqttContexts.TryGetValue(mqttServerId, out var context))
{
@@ -232,7 +232,7 @@ namespace DMS.Infrastructure.Services.Mqtt
/// <summary>
/// 发布变量数据到MQTT服务器
/// </summary>
public async Task PublishVariableDataAsync(VariableMqttAlias variableMqtt, CancellationToken cancellationToken = default)
public async Task PublishVariableDataAsync(MqttAlias variableMqtt, CancellationToken cancellationToken = default)
{
if (variableMqtt?.MqttServer == null || variableMqtt.Variable == null)
{
@@ -269,7 +269,7 @@ namespace DMS.Infrastructure.Services.Mqtt
}
}
private string BuildSendMessage(VariableMqttAlias variableMqtt)
private string BuildSendMessage(MqttAlias variableMqtt)
{
StringBuilder sb = new StringBuilder();
var now = DateTime.Now;

View File

@@ -181,12 +181,6 @@
<ItemGroup>
<Folder Include="ViewModels\Items\" />
</ItemGroup>
<ItemGroup>
<None Update="Configurations\nlog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>

View File

@@ -17,7 +17,7 @@ namespace DMS.WPF.Profiles
CreateMap<OpcUaNode, OpcUaNodeItemViewModel>()
.ReverseMap();
CreateMap<VariableItemViewModel, VariableItemViewModel>();
CreateMap<VariableMqttAlias, VariableMqttAliasItemViewModel>().ReverseMap();
CreateMap<MqttAlias, MqttAliasItem>().ReverseMap();
CreateMap<MenuBeanDto, MenuItemViewModel>()

View File

@@ -13,10 +13,10 @@ namespace DMS.WPF.ViewModels.Dialogs
/// <summary>
/// MQTT别名批量编辑对话框的视图模型
/// </summary>
public partial class MqttAliasBatchEditDialogViewModel : DialogViewModelBase<List<VariableMqttAliasItemViewModel>>
public partial class MqttAliasBatchEditDialogViewModel : DialogViewModelBase<List<MqttAliasItem>>
{
[ObservableProperty]
private ObservableCollection<VariableMqttAliasItemViewModel> _variableMqttAliases = new();
private ObservableCollection<MqttAliasItem> _variableMqttAliases = new();
[ObservableProperty]
private MqttServerItemViewModel _selectedMqttServer;
@@ -41,7 +41,7 @@ namespace DMS.WPF.ViewModels.Dialogs
// 检查该变量是否已经有针对此MQTT服务器的别名
var existingAlias = variable.MqttAliases?.FirstOrDefault(ma => ma.MqttServerId == SelectedMqttServer.Id);
var variableMqttAlias = new VariableMqttAliasItemViewModel
var variableMqttAlias = new MqttAliasItem
{
VariableId = variable.Id,
MqttServerId = SelectedMqttServer.Id,

View File

@@ -3,7 +3,7 @@ using DMS.Application.DTOs;
namespace DMS.WPF.ViewModels.Items;
public partial class VariableMqttAliasItemViewModel : ObservableObject
public partial class MqttAliasItem : ObservableObject
{
public int Id { get; set; }

View File

@@ -62,7 +62,7 @@ public partial class MqttServerItemViewModel : ObservableObject
private string _messageFooter;
[ObservableProperty]
private ObservableCollection<VariableMqttAliasItemViewModel> _variableAliases = new();
private ObservableCollection<MqttAliasItem> _variableAliases = new();
}

View File

@@ -105,7 +105,7 @@ public partial class VariableItemViewModel : ObservableObject
/// 一个变量可以有多个MQTT别名。
/// </summary>
[ObservableProperty]
private List<VariableMqttAliasItemViewModel>? _mqttAliases=new List<VariableMqttAliasItemViewModel>();
private List<MqttAliasItem>? _mqttAliases=new List<MqttAliasItem>();
/// <summary>
/// 获取或设置变量的信号类型 (如AI, DI, AO, DO)。

View File

@@ -37,7 +37,7 @@ namespace DMS.WPF.ViewModels
/// 与当前MQTT服务器关联的变量数据集合。
/// </summary>
[ObservableProperty]
private ObservableCollection<VariableMqttAlias> _associatedVariables;
private ObservableCollection<MqttAlias> _associatedVariables;
/// <summary>
@@ -198,7 +198,7 @@ namespace DMS.WPF.ViewModels
/// 修改变量的MQTT发送名称
/// </summary>
[RelayCommand]
private async Task ModifyAlias(VariableMqttAlias variableAlias)
private async Task ModifyAlias(MqttAlias variableAlias)
{
if (variableAlias == null)
{

View File

@@ -653,7 +653,7 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
if (existingVariableMqtt == null)
{
// 如果不存在,则添加新的关联
var variableMqtt = new VariableMqttAliasItemViewModel
var variableMqtt = new MqttAliasItem
{
VariableId = originalVariable.Id,
MqttServerId = selectedMqtt.Id,