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<ConcurrentWebSocketSession> sessions,
|
CustomWebSocketMessage<TelemetryDTO> message, Object Object) {
|
|
}
|
|
@Override
|
public void handleOSD(CommonTopicReceiver receiver, DeviceDTO device,
|
Collection<ConcurrentWebSocketSession> webSessions,
|
CustomWebSocketMessage<TelemetryDTO> 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);
|
}
|
}
|
}
|