2
3 1. 在MqttServer和MqttServerDto模型中添加IsConnect属性,用于跟踪连接状态
4 2. 重构MqttManagementService服务,使用事件驱动方式管理服务器状态变化
5 3. 实现MqttServerChangedEventArgs事件参数类,支持区分不同变更类型
6 4. 在IEventService中添加OnMqttServerChanged事件,实现事件通知机制
7 5. 优化数据存储结构,将MqttServers从ObservableCollection改为ObservableDictionary
8 6. 更新MqttServiceManager以正确处理连接状态和事件触发
9 7. 在WPF层更新UI以响应服务器状态变化
10 8. 删除不再需要的Helper类(DataServicesHelper, MessageHelper, SiemensHelper)
11 9. 在NLog配置中添加调试器输出目标以便调试
12 10. 完善VariableHistoryViewModel防止空引用异常
92 lines
2.9 KiB
C#
92 lines
2.9 KiB
C#
using System.Collections.ObjectModel;
|
||
using AutoMapper;
|
||
using CommunityToolkit.Mvvm.ComponentModel;
|
||
using DMS.Application.DTOs;
|
||
using DMS.Application.Interfaces;
|
||
using DMS.Application.Interfaces.Database;
|
||
using DMS.WPF.Interfaces;
|
||
using DMS.WPF.ViewModels.Items;
|
||
|
||
namespace DMS.WPF.Services;
|
||
|
||
/// <summary>
|
||
/// MQTT数据服务类,负责管理MQTT服务器相关的数据和操作。
|
||
/// </summary>
|
||
public class MqttDataService : IMqttDataService
|
||
{
|
||
private readonly IMapper _mapper;
|
||
private readonly IAppDataStorageService _appDataStorageService;
|
||
private readonly IDataStorageService _dataStorageService;
|
||
private readonly IMqttAppService _mqttAppService;
|
||
|
||
|
||
/// <summary>
|
||
/// MqttDataService类的构造函数。
|
||
/// </summary>
|
||
/// <param name="mapper">AutoMapper 实例。</param>
|
||
/// <param name="mqttAppService">MQTT应用服务实例。</param>
|
||
public MqttDataService(IMapper mapper, IAppDataStorageService appDataStorageService, IDataStorageService dataStorageService, IMqttAppService mqttAppService)
|
||
{
|
||
_mapper = mapper;
|
||
_appDataStorageService = appDataStorageService;
|
||
_dataStorageService = dataStorageService;
|
||
_mqttAppService = mqttAppService;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 加载所有MQTT服务器数据。
|
||
/// </summary>
|
||
public async Task LoadMqttServers()
|
||
{
|
||
try
|
||
{
|
||
// 加载MQTT服务器数据
|
||
foreach (var mqttServerDto in _appDataStorageService.MqttServers.Values)
|
||
{
|
||
_dataStorageService.MqttServers.TryAdd(mqttServerDto.Id,_mapper.Map<MqttServerItemViewModel>(mqttServerDto));
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// 记录异常或处理错误
|
||
Console.WriteLine($"加载MQTT服务器数据时发生错误: {ex.Message}");
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 添加MQTT服务器。
|
||
/// </summary>
|
||
public async Task<MqttServerItemViewModel> AddMqttServer(MqttServerItemViewModel mqttServer)
|
||
{
|
||
var dto = _mapper.Map<MqttServerDto>(mqttServer);
|
||
var id = await _mqttAppService.CreateMqttServerAsync(dto);
|
||
dto.Id = id;
|
||
|
||
var mqttServerItem = _mapper.Map<MqttServerItemViewModel>(dto);
|
||
_dataStorageService.MqttServers.Add(mqttServerItem.Id,mqttServerItem);
|
||
|
||
return mqttServerItem;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新MQTT服务器。
|
||
/// </summary>
|
||
public async Task<bool> UpdateMqttServer(MqttServerItemViewModel mqttServer)
|
||
{
|
||
var dto = _mapper.Map<MqttServerDto>(mqttServer);
|
||
await _mqttAppService.UpdateMqttServerAsync(dto);
|
||
return true;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 删除MQTT服务器。
|
||
/// </summary>
|
||
public async Task<bool> DeleteMqttServer(MqttServerItemViewModel mqttServer)
|
||
{
|
||
await _mqttAppService.DeleteMqttServerAsync(mqttServer.Id);
|
||
_dataStorageService.MqttServers.Remove(mqttServer.Id);
|
||
return true;
|
||
}
|
||
} |