2
3 - 修改MQTT发布处理器,使用DisplayValue代替DataValue进行数据发布
4 - 在MqttServiceManager中使用DisplayValue进行消息内容替换
5 - 增加MQTT服务器编辑功能,允许用户修改服务器配置
6 - 添加变量MQTT发布别名修改功能,支持右键菜单修改发布名称
7 - 实现变量值变化事件监听,实时更新UI显示
8 - 优化MQTT服务器详情页面UI,改进变量关联数据显示
9 - 修复变量表关联MQTT服务器时的逻辑问题
10 - 完善导航生命周期事件处理
50 lines
1.7 KiB
C#
50 lines
1.7 KiB
C#
using System.Threading.Tasks;
|
||
using AutoMapper;
|
||
using DMS.Application.Interfaces;
|
||
using DMS.Application.Models;
|
||
using DMS.Core.Interfaces.Services;
|
||
using DMS.Core.Models;
|
||
|
||
namespace DMS.Application.Services.Processors;
|
||
|
||
/// <summary>
|
||
/// 负责将变量数据发布到MQTT的处理器。
|
||
/// </summary>
|
||
public class MqttPublishProcessor : IVariableProcessor
|
||
{
|
||
private readonly IMapper _mapper;
|
||
private readonly IMqttServiceManager _mqttServiceManager;
|
||
|
||
public MqttPublishProcessor(IMapper mapper, IMqttServiceManager mqttServiceManager)
|
||
{
|
||
_mapper = mapper;
|
||
_mqttServiceManager = mqttServiceManager;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 处理单个变量上下文,如果有关联的MQTT配置,则将其推送到发送队列。
|
||
/// </summary>
|
||
/// <param name="context">包含变量及其元数据的上下文对象。</param>
|
||
public async Task ProcessAsync(VariableContext context)
|
||
{
|
||
var variable = context.Data;
|
||
if (variable?.MqttAliases == null || variable.MqttAliases.Count == 0)
|
||
{
|
||
return; // 没有关联的MQTT配置,直接返回
|
||
}
|
||
|
||
// 遍历所有关联的MQTT配置,并将其推入发送队列
|
||
foreach (var variableMqttAliasDto in variable.MqttAliases)
|
||
{
|
||
if (!variableMqttAliasDto.MqttServer.IsActive)
|
||
{
|
||
continue;
|
||
}
|
||
|
||
// 发布变量数据到MQTT服务器
|
||
var variableMqttAlias = _mapper.Map<VariableMqttAlias>(variableMqttAliasDto);
|
||
variableMqttAlias.Variable.DisplayValue=variable.DisplayValue;
|
||
await _mqttServiceManager.PublishVariableDataAsync(variableMqttAlias);
|
||
}
|
||
}
|
||
} |