pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttSubMsg.java
@@ -1,26 +1,77 @@
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 topic ;//消息主题
    public String msg ;//消息
    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() ;
    }
}