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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.dji.sample.control.service.impl;
 
import com.dji.sample.component.mqtt.model.EventsReceiver;
import com.dji.sample.component.websocket.model.BizCodeEnum;
import com.dji.sample.component.websocket.service.IWebSocketMessageService;
import com.dji.sample.component.websocketWmm.WebSocketServerPlayBack;
import com.dji.sample.manage.model.dto.DeviceDTO;
import com.dji.sample.manage.model.enums.UserTypeEnum;
import com.dji.sample.manage.service.IDeviceRedisService;
import com.dji.sdk.cloudapi.debug.RemoteDebugProgress;
import com.dji.sdk.cloudapi.debug.api.AbstractDebugService;
import com.dji.sdk.mqtt.MqttReply;
import com.dji.sdk.mqtt.events.EventsDataRequest;
import com.dji.sdk.mqtt.events.TopicEventsRequest;
import com.dji.sdk.mqtt.events.TopicEventsResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.MessageHeaders;
import org.springframework.stereotype.Service;
 
import java.util.Optional;
 
/**
 * @author sean
 * @version 1.7
 * @date 2023/7/4
 */
@Service
@Slf4j
public class SDKRemoteDebug extends AbstractDebugService {
 
    @Autowired
    private IWebSocketMessageService webSocketMessageService;
 
    @Autowired
    private IDeviceRedisService deviceRedisService;
 
    @Override
    public TopicEventsResponse<MqttReply> remoteDebugProgress(TopicEventsRequest<EventsDataRequest<RemoteDebugProgress>> request, MessageHeaders headers) {
        String sn = request.getGateway();
        BizCodeEnum bizCode = BizCodeEnum.NO_BIZ_CODE;
        String method = request.getMethod();
 
//        EventsReceiver<RemoteDebugProgress> eventsReceiver = new EventsReceiver<RemoteDebugProgress>()
//                .setOutput(request.getData().getOutput()).setResult(request.getData().getResult());
//        eventsReceiver.setBid(request.getBid());
//        eventsReceiver.setSn(sn);
//
//        log.info("SN: {}, {} ===> Control progress: {}", sn, request.getMethod(), eventsReceiver.getOutput().getProgress());
//
//        if (!eventsReceiver.getResult().isSuccess()) {
//            log.error("SN: {}, {} ===> Error: {}", sn, request.getMethod(), eventsReceiver.getResult());
//        }
 
        Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(sn);
 
        if (deviceOpt.isEmpty()) {
            throw new RuntimeException("The device is offline.");
        }
        switch (method) {
            case "device_reboot":
                bizCode = BizCodeEnum.DEVICE_REBOOT;
                break;
            case "drone_open":
                bizCode = BizCodeEnum.DRONE_OPEN;
                break;
            case "drone_close":
                bizCode = BizCodeEnum.DRONE_CLOSE;
                break;
            case "drone_format":
                bizCode = BizCodeEnum.DRONE_FORMAT;
                break;
            case "device_format":
                bizCode = BizCodeEnum.DEVICE_FORMAT;
                break;
            case "cover_open":
                bizCode = BizCodeEnum.COVER_OPEN;
                break;
            case "cover_close":
                bizCode = BizCodeEnum.COVER_CLOSE;
                break;
            case "putter_open":
                bizCode = BizCodeEnum.PUTTER_OPEN;
                break;
            case "putter_close":
                bizCode = BizCodeEnum.PUTTER_CLOSE;
                break;
            case "charge_open":
                bizCode = BizCodeEnum.CHARGE_OPEN;
                break;
            case "charge_close":
                bizCode = BizCodeEnum.CHARGE_CLOSE;
                break;
//    case "esim_activate":
//        bizCode = BizCodeEnum.NO_BIZ_CODE;
//        break;
//    case "esim_operator_switch":
//        bizCode = BizCodeEnum.NO_BIZ_CODE;
//        break;
        }
//        DeviceDTO device = deviceOpt.get();
//        webSocketMessageService.sendBatch(device.getWorkspaceId(), UserTypeEnum.WEB.getVal(),
//                request.getMethod(), eventsReceiver);
 
//        WebSocketServerPlayBack.sendInfo(request.toString());
 
        ObjectMapper mapper = new ObjectMapper();
//        mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
        String dockOsd = "";
        try {
 
            dockOsd = mapper.writeValueAsString(request.getData());
        } catch (JsonProcessingException e) {
            throw new RuntimeException("trans json failed.");
        }
        WebSocketServerPlayBack.sendInfo(bizCode, dockOsd);
        return new TopicEventsResponse<MqttReply>().setData(MqttReply.success());
    }
}