|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public abstract class MqttSubMsg { | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | public class MqttSubMsg { | 
|---|
|  |  |  | public String commandId ;//命令ID | 
|---|
|  |  |  | public String mqttResultSendWebUrl ;//Mtt返回命令结果 发向目的地web URL | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public String deviceId ;//设备ID | 
|---|
|  |  |  | public String protocol;//协议 | 
|---|
|  |  |  | public String deviceId ;//设备ID(FBox序列号) | 
|---|
|  |  |  | public String protocol;//协议(名称+版本) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public MqttTopic topic ;//消息主题 | 
|---|
|  |  |  | public String metaData;//MQTT推送来的元数据 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public abstract boolean valid(); | 
|---|
|  |  |  | 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 abstract boolean subMsgMatchPubMsg(MqttPubMsg pubMsg); | 
|---|
|  |  |  | public boolean valid() { | 
|---|
|  |  |  | if (topic == null || topic.isEmpty()) { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (metaData == null || metaData.isEmpty()) { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public abstract void action(Callback callback); | 
|---|
|  |  |  | 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() ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|