给变量添加Mqtt服务器的功能
This commit is contained in:
41
ViewModels/Dialogs/MqttSelectionDialogViewModel.cs
Normal file
41
ViewModels/Dialogs/MqttSelectionDialogViewModel.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using PMSWPF.Models;
|
||||
using PMSWPF.Data.Repositories;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PMSWPF.ViewModels.Dialogs;
|
||||
|
||||
public partial class MqttSelectionDialogViewModel : ObservableObject
|
||||
{
|
||||
private readonly MqttRepository _mqttRepository;
|
||||
|
||||
[ObservableProperty]
|
||||
private ObservableCollection<Mqtt> mqtts;
|
||||
|
||||
[ObservableProperty]
|
||||
private Mqtt? selectedMqtt;
|
||||
|
||||
public MqttSelectionDialogViewModel()
|
||||
{
|
||||
_mqttRepository = new MqttRepository();
|
||||
LoadMqtts();
|
||||
}
|
||||
|
||||
private async void LoadMqtts()
|
||||
{
|
||||
try
|
||||
{
|
||||
var allMqtts = await _mqttRepository.GetAll();
|
||||
Mqtts = new ObservableCollection<Mqtt>(allMqtts);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 这里需要一个日志记录器,但由于ViewModel中没有直接注入ILogger,
|
||||
// 暂时使用Console.WriteLine或NotificationHelper
|
||||
// 更好的做法是注入ILogger或使用静态日志类
|
||||
Console.WriteLine($"加载MQTT服务器列表失败: {ex.Message}");
|
||||
// 或者使用NotificationHelper.ShowMessage("加载MQTT服务器列表失败", NotificationType.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -62,6 +62,7 @@ public partial class MqttsViewModel : ViewModelBase
|
||||
}
|
||||
|
||||
await _mqttRepository.Add(mqtt);
|
||||
MessageHelper.SendLoadMessage(LoadTypes.Mqtts);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
@@ -282,6 +282,48 @@ partial class VariableTableViewModel : ViewModelBase
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public async Task AddMqttServerToVariables(IList<VariableData> variablesToAddMqtt)
|
||||
{
|
||||
if (variablesToAddMqtt == null || !variablesToAddMqtt.Any())
|
||||
{
|
||||
NotificationHelper.ShowMessage("请选择要添加MQTT服务器的变量", NotificationType.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var selectedMqtt = await _dialogService.ShowMqttSelectionDialog();
|
||||
if (selectedMqtt == null)
|
||||
{
|
||||
return; // 用户取消选择
|
||||
}
|
||||
|
||||
foreach (VariableData variable in variablesToAddMqtt)
|
||||
{
|
||||
if (variable.Mqtts == null)
|
||||
{
|
||||
variable.Mqtts = new List<Mqtt>();
|
||||
}
|
||||
// 避免重复添加
|
||||
if (!variable.Mqtts.Any(m => m.Id == selectedMqtt.Id))
|
||||
{
|
||||
variable.Mqtts.Add(selectedMqtt);
|
||||
variable.IsModified = true; // 标记为已修改
|
||||
}
|
||||
}
|
||||
|
||||
// 批量更新数据库
|
||||
await _varDataRepository.UpdateAsync(variablesToAddMqtt.ToList());
|
||||
NotificationHelper.ShowMessage($"已成功为 {variablesToAddMqtt.Count} 个变量添加MQTT服务器: {selectedMqtt.Name}", NotificationType.Success);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error(ex, "添加MQTT服务器到变量时发生错误。");
|
||||
NotificationHelper.ShowMessage($"添加MQTT服务器失败: {ex.Message}", NotificationType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
// [RelayCommand]
|
||||
// private async void ImportFromExcel()
|
||||
// {
|
||||
|
||||
Reference in New Issue
Block a user