| | |
| | | package com.dji.sample.manage.service.impl; |
| | | |
| | | import com.dji.sample.component.mqtt.model.CommonTopicReceiver; |
| | | import com.dji.sample.component.redis.RedisConst; |
| | | import com.dji.sample.component.redis.RedisOpsUtils; |
| | | import com.dji.sample.component.websocket.config.ConcurrentWebSocketSession; |
| | | import com.dji.sample.component.websocket.model.BizCodeEnum; |
| | | import com.dji.sample.component.websocket.model.CustomWebSocketMessage; |
| | |
| | | import com.dji.sample.manage.model.dto.TelemetryDTO; |
| | | import com.dji.sample.manage.model.enums.DeviceDomainEnum; |
| | | import com.dji.sample.manage.model.receiver.OsdDockReceiver; |
| | | import com.dji.sample.manage.model.receiver.OsdDockTransmissionReceiver; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * @author sean |
| | |
| | | Collection<ConcurrentWebSocketSession> webSessions, |
| | | CustomWebSocketMessage<TelemetryDTO> wsMessage) { |
| | | |
| | | if (DeviceDomainEnum.DOCK.getDesc().equals(device.getDomain())) { |
| | | if (DeviceDomainEnum.DOCK.getVal() == device.getDomain()) { |
| | | wsMessage.setBizCode(BizCodeEnum.DOCK_OSD.getCode()); |
| | | OsdDockReceiver data = mapper.convertValue(receiver.getData(), OsdDockReceiver.class); |
| | | wsMessage.getData().setHost(data); |
| | | if (data.getSubDevice() == null) { |
| | | OsdDockTransmissionReceiver transmission = mapper.convertValue(receiver.getData(), OsdDockTransmissionReceiver.class); |
| | | wsMessage.getData().setHost(transmission); |
| | | } |
| | | sendMessageService.sendBatch(webSessions, wsMessage); |
| | | String key = RedisConst.OSD_PREFIX + device.getDeviceSn(); |
| | | OsdDockReceiver redisData = (OsdDockReceiver) RedisOpsUtils.get(key); |
| | | if (Objects.nonNull(data.getModeCode())) { |
| | | if (Objects.nonNull(redisData)) { |
| | | data.setDrcState(redisData.getDrcState()); |
| | | } |
| | | RedisOpsUtils.setWithExpire(key, data, RedisConst.DEVICE_ALIVE_SECOND); |
| | | return; |
| | | } |
| | | |
| | | if (Objects.nonNull(data.getDrcState()) && Objects.nonNull(redisData)) { |
| | | redisData.setDrcState(data.getDrcState()); |
| | | RedisOpsUtils.setWithExpire(key, redisData, RedisConst.DEVICE_ALIVE_SECOND); |
| | | } |
| | | } |
| | | } |
| | | } |