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());
|
}
|
}
|