实现MQTT关联变量的别名问题,实现了,同个变量发给不同的MQTT服务器的名称不同

This commit is contained in:
2025-07-17 17:28:12 +08:00
parent aea7a21d57
commit 6b21c387d5
14 changed files with 238 additions and 130 deletions

View File

@@ -9,6 +9,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
using PMSWPF.Data.Repositories;
namespace PMSWPF.ViewModels
{
@@ -32,7 +33,9 @@ namespace PMSWPF.ViewModels
/// 与当前MQTT服务器关联的变量数据集合。
/// </summary>
[ObservableProperty]
private ObservableCollection<VariableData> _associatedVariables;
private ObservableCollection<VariableMqtt> _associatedVariables;
private readonly VariableMqttAliasRepository _variableMqttAliasRepository;
/// <summary>
/// 构造函数。
@@ -41,19 +44,19 @@ namespace PMSWPF.ViewModels
/// <param name="dataServices">数据服务。</param>
/// <param name="dialogService">对话框服务。</param>
public MqttServerDetailViewModel(ILogger<MqttServerDetailViewModel> logger, DataServices dataServices,
IDialogService dialogService)
IDialogService dialogService, VariableMqttAliasRepository variableMqttAliasRepository)
{
_logger = logger;
_dataServices = dataServices;
_dialogService = dialogService;
AssociatedVariables = new ObservableCollection<VariableData>();
_variableMqttAliasRepository = variableMqttAliasRepository;
}
public override void OnLoaded()
{
if (CurrentMqtt.VariableDatas != null)
if (CurrentMqtt.VariableMqtts != null)
{
AssociatedVariables = new ObservableCollection<VariableData>(CurrentMqtt.VariableDatas);
AssociatedVariables =new ObservableCollection<VariableMqtt>(CurrentMqtt.VariableMqtts) ;
}
}
@@ -108,11 +111,11 @@ namespace PMSWPF.ViewModels
foreach (var variable in variablesList) // 使用ToList()避免在迭代时修改集合
{
// 移除变量与当前MQTT服务器的关联
variable.Mqtts?.Remove(CurrentMqtt);
// 标记变量为已修改,以便保存时更新数据库
variable.IsModified = true;
AssociatedVariables.Remove(variable);
_logger.LogInformation($"Removed variable {variable.Name} from MQTT server {CurrentMqtt.Name}.");
// variable.Mqtts?.Remove(CurrentMqtt);
// // 标记变量为已修改,以便保存时更新数据库
// variable.IsModified = true;
// AssociatedVariables.Remove(variable);
// _logger.LogInformation($"Removed variable {variable.Name} from MQTT server {CurrentMqtt.Name}.");
}
// TODO: 这里需要调用DataServices来更新数据库中VariableData的Mqtt关联