package com.ard.sample.manage.service.impl; import com.ard.sample.component.mqtt.model.CommonTopicReceiver; import com.ard.sample.component.websocket.config.ConcurrentWebSocketSession; import com.ard.sample.component.websocket.model.BizCodeEnum; import com.ard.sample.component.websocket.model.CustomWebSocketMessage; import com.ard.sample.component.websocket.service.impl.WebSocketDockServer; import com.ard.sample.manage.model.dto.DeviceDTO; import com.ard.sample.manage.model.dto.TelemetryDTO; import com.ard.sample.manage.model.enums.DeviceDomainEnum; import com.ard.sample.manage.model.receiver.OsdDockReceiver; import com.ard.sample.manage.service.IDeviceService; import com.fasterxml.jackson.databind.JsonNode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Collection; /** * @author sean * @version 1.0 * @date 2022/5/11 */ @Service public class DockOSDServiceImpl extends AbstractTSAService { @Autowired WebSocketDockServer _websocketdockserver;// = new WebSocketDockServer(); @Autowired private IDeviceService _deviceService; public DockOSDServiceImpl() { super(null); } @Override public void pushTelemetryData(Collection sessions, CustomWebSocketMessage message, Object Object) { } @Override public void handleOSD(CommonTopicReceiver receiver, DeviceDTO device, Collection webSessions, CustomWebSocketMessage wsMessage) { if (DeviceDomainEnum.DOCK.getVal() == device.getDomain()) { wsMessage.setBizCode(BizCodeEnum.DOCK_OSD.getCode()); OsdDockReceiver data = mapper.convertValue(receiver.getData(), OsdDockReceiver.class); String dockOsd=""; try{ dockOsd=mapper.writeValueAsString(receiver.getData()); if (dockOsd.contains("flighttask_step_code")) { JsonNode jsonNode = mapper.readTree(dockOsd); if (jsonNode.has("flighttask_step_code")) { String deviceSn = device.getDeviceSn(); Long code = jsonNode.get("flighttask_step_code").asLong(); _deviceService.updateWorkType(deviceSn,code); } } else if (dockOsd.contains("network_state")) { JsonNode jsonNode = mapper.readTree(dockOsd); if (jsonNode.has("drone_in_dock")) { String childDeviceSn=jsonNode.get("sub_device").get("device_sn").asText(); Long inDock=jsonNode.get("drone_in_dock").asLong(); _deviceService.updateWorkType(childDeviceSn,inDock); } } else if (dockOsd.contains("job_number")) { } }catch (Exception e){ e.printStackTrace(); } wsMessage.getData().setHost(data); sendMessageService.sendBatch(webSessions, wsMessage); _websocketdockserver.sendToAll(dockOsd); } } }