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 remoteDebugProgress(TopicEventsRequest> request, MessageHeaders headers) { String sn = request.getGateway(); BizCodeEnum bizCode = BizCodeEnum.NO_BIZ_CODE; String method = request.getMethod(); // EventsReceiver eventsReceiver = new EventsReceiver() // .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 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().setData(MqttReply.success()); } }