package com.dy.common.mw.protocol4Mqtt; import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; import com.dy.common.util.Callback; import lombok.Data; /** * @Author: liurunyu * @Date: 2025/6/5 11:44 * @Description */ @Data public class MqttSubMsg { public String commandId ;//命令ID public String mqttResultSendWebUrl ;//Mtt返回命令结果 发向目的地web URL public String deviceId ;//设备ID public String protocol;//协议 public MqttTopic topic ;//消息主题 public String metaData;//MQTT推送来的元数据 public Vo4Up vo4Up;//订阅的消息数据值对象 public MqttSubMsg() { } public MqttSubMsg(MqttTopic subTopic, String msg) { this.deviceId = subTopic.devId ; this.protocol = subTopic.protocol ; this.topic = subTopic ; this.metaData = msg ; } public boolean valid() { if (topic == null || topic.isEmpty()) { return false; } if (metaData == null || metaData.isEmpty()) { return false; } return true; } public boolean subMsgMatchPubMsg(MqttPubMsg pubMsg){ if(this.vo4Up != null && this.vo4Up instanceof ManureVo){ //只要上报的是状态数据,说明设备响应了命令 return true ; } return false ; } public void action(Callback callback){ callback.call(this) ; } public String toString(){ StringBuilder sb = new StringBuilder(); if(commandId != null){ sb.append("commandId:") .append(commandId) .append("\n") ; } sb.append("主题:") .append(topic.longName()) .append("\n") ; if(vo4Up != null){ sb.append("数据:") .append(vo4Up.toString()) .append("\n") ; }else{ sb.append("元数据:") .append(metaData) .append("\n") ; } return sb.toString() ; } }