wangmengmeng
2025-04-26 96250617dbbefce55b5966c94880e2b07b6c98df
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.dji.sdk.mqtt.drc;
 
import com.dji.sdk.common.Common;
import com.dji.sdk.mqtt.MqttGatewayPublish;
import com.dji.sdk.mqtt.TopicConst;
import com.dji.sdk.mqtt.services.ServicesReplyData;
import com.dji.sdk.mqtt.services.ServicesReplyReceiver;
import com.dji.sdk.mqtt.services.TopicServicesRequest;
import com.dji.sdk.mqtt.services.TopicServicesResponse;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Component;
 
import javax.annotation.Resource;
import java.util.Objects;
import java.util.UUID;
 
/**
 * @author sean
 * @version 1.7
 * @date 2023/5/24
 */
@Component
public class DrcDownPublish {
 
    @Resource
    private MqttGatewayPublish gatewayPublish;
 
    public static final int DEFAULT_PUBLISH_COUNT = 1;
    public void publish(String sn, String method) {
        this.publish(sn, method, null);
    }
 
    public void publish(String sn, String method, Object data) {
        this.publish(sn, method, data, DEFAULT_PUBLISH_COUNT);
    }
 
    public void publish(String sn, String method, Object data, int publishCount) {
        String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + Objects.requireNonNull(sn) + TopicConst.DRC + TopicConst.DOWN;
        gatewayPublish.publish(topic,
                new TopicDrcRequest<>()
                        .setMethod(method)
                        .setData(Objects.requireNonNullElse(data, "")),
                publishCount);
    }
//    public void publish(String sn, String method) {
//        this.publish(sn, method, null);
//    }
//
//    public void publish(String sn, String method, Object data) {
//        this.publish(sn, method, data, DEFAULT_PUBLISH_COUNT);
//    }
//
//    public void publish(String sn, String method, Object data, int publishCount) {
//        String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + Objects.requireNonNull(sn) + TopicConst.DRC + TopicConst.DOWN;
//        gatewayPublish.publish(topic,
//                new TopicDrcRequest<>()
//                        .setMethod(method)
//                        .setData(Objects.requireNonNullElse(data, "")),
//                publishCount);
//
//    }
 
//    public <T> TopicDrcResponse<T>  publish(TypeReference<T> clazz, String sn, String method, Object data, String bid, int retryCount, long timeout) {
//        retryCount =DEFAULT_PUBLISH_COUNT;
//        timeout=MqttGatewayPublish.DEFAULT_RETRY_TIMEOUT;
//        String topic = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT + Objects.requireNonNull(sn) + TopicConst.DRC + TopicConst.DOWN;
//        TopicDrcResponse response = (TopicDrcResponse) gatewayPublish.publishWithReply(
//                DrcReplyReceiver.class, topic, new TopicDrcResponse<>()
//                        .setTid(UUID.randomUUID().toString())
//                        .setBid(bid)
//                        .setTimestamp(System.currentTimeMillis())
//                        .setMethod(method)
//                        .setData(Objects.requireNonNullElse(data, "")), retryCount, timeout);
//        ServicesReplyReceiver replyReceiver = (ServicesReplyReceiver) response.getData();
//        ServicesReplyData<T> reply = new ServicesReplyData<T>().setResult(replyReceiver.getResult());
//        if (Objects.isNull(clazz)) {
//            reply.setOutput((T) Objects.requireNonNullElse(
//                    replyReceiver.getOutput(), Objects.requireNonNullElse(replyReceiver.getInfo(), "")));
//            return response.setData(reply);
//        }
//        // put together in "output"
//        ObjectMapper mapper = Common.getObjectMapper();
//        if (Objects.nonNull(replyReceiver.getInfo())) {
//            reply.setOutput(mapper.convertValue(replyReceiver.getInfo(), clazz));
//        }
//        if (Objects.nonNull(replyReceiver.getOutput())) {
//            reply.setOutput(mapper.convertValue(replyReceiver.getOutput(), clazz));
//        }
//        return response.setData(reply);
//    }
 
}