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; /// /// 负责将变量数据发布到MQTT的处理器。 /// public class MqttPublishProcessor : IVariableProcessor { private readonly IMapper _mapper; private readonly IMqttServiceManager _mqttServiceManager; public MqttPublishProcessor(IMapper mapper, IMqttServiceManager mqttServiceManager) { _mapper = mapper; _mqttServiceManager = mqttServiceManager; } /// /// 处理单个变量上下文,如果有关联的MQTT配置,则将其推送到发送队列。 /// /// 包含变量及其元数据的上下文对象。 public async Task ProcessAsync(VariableContext context) { var variable = context.Data; if (variable?.MqttAliases == null || variable.MqttAliases.Count == 0) { return; // 没有关联的MQTT配置,直接返回 } // 遍历所有关联的MQTT配置,并将其推入发送队列 foreach (var variableMqttAlias in variable.MqttAliases) { if (!variableMqttAlias.MqttServer.IsActive) { continue; } // 发布变量数据到MQTT服务器 variableMqttAlias.Variable.DisplayValue=variable.DisplayValue; await _mqttServiceManager.PublishVariableDataAsync(variableMqttAlias); } } }