diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceRedisController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceRedisController.java new file mode 100644 index 0000000..a37bc0c --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceRedisController.java @@ -0,0 +1,57 @@ +package org.dromara.sample.manage.controller; + + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.sdk.cloudapi.device.OsdDockDrone; +import org.dromara.common.sdk.common.HttpResultResponse; +import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.service.IDeviceRedisService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 无人机redis查询服务 + */ +@RestController +@Slf4j +@RequestMapping("${url.manage.prefix}${url.manage.version}/redis") +@Tag(name = "无人机redis查询服务") +public class DeviceRedisController { + + + @Autowired + private IDeviceRedisService deviceRedisService; + + + /** + * 获取设备的基本信息 + * + * @return + */ + @PostMapping("/device/info") + @Operation(summary = "获取设备的基本信息", description = "获取设备的基本信息") + public HttpResultResponse> getDevicesInfo(@RequestBody List snList) { + return HttpResultResponse.success(deviceRedisService.getDevicesInfo(snList)); + } + + + /** + * 获取设备osd实时数据 + * sudo systemctl restart docker + * sudo systemctl daemon-reload + * @return + */ + @PostMapping("/device/osd/info") + @Operation(summary = "获取设备osd实时数据", description = "获取设备osd实时数据") + public HttpResultResponse> getDevicesOsdInfo(@RequestBody List snList) { + return HttpResultResponse.success(deviceRedisService.getDevicesOsdInfo(snList)); + } + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceRedisService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceRedisService.java index d9c4ccd..601a862 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceRedisService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceRedisService.java @@ -1,9 +1,11 @@ package org.dromara.sample.manage.service; +import org.dromara.common.sdk.cloudapi.device.OsdDockDrone; import org.dromara.common.sdk.cloudapi.firmware.OtaProgress; import org.dromara.sample.component.mqtt.model.EventsReceiver; import org.dromara.sample.manage.model.dto.DeviceDTO; +import java.util.List; import java.util.Optional; import java.util.Set; @@ -109,4 +111,19 @@ public interface IDeviceRedisService { void gatewayOffline(String gatewaySn); void subDeviceOffline(String deviceSn); + + /** + * 获取设备的基本信息 + * @param snList + * @return + */ + List getDevicesInfo(List snList); + + /** + * 获取设备osd实时数据 + * @param snList + * @return + */ + List getDevicesOsdInfo(List snList); + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceRedisServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceRedisServiceImpl.java index ddbb044..2892e1d 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceRedisServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceRedisServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.sample.manage.service.impl; import org.dromara.common.redis.config.RedisConst; import org.dromara.common.redis.utils.RedisOpsUtils; +import org.dromara.common.sdk.cloudapi.device.OsdDockDrone; import org.dromara.common.sdk.cloudapi.firmware.OtaProgress; import org.dromara.sample.component.mqtt.model.EventsReceiver; import org.dromara.sample.manage.model.dto.DeviceDTO; @@ -10,6 +11,8 @@ import org.dromara.sample.manage.service.IDeviceRedisService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -106,4 +109,28 @@ public class DeviceRedisServiceImpl implements IDeviceRedisService { delHmsKeysBySn(deviceSn); capacityCameraService.deleteCapacityCameraByDeviceSn(deviceSn); } + + @Override + public List getDevicesInfo(List snList) { + List resultList = new ArrayList<>(); + snList.forEach(sn->{ + if (Optional.ofNullable(RedisOpsUtils.get(RedisConst.DEVICE_ONLINE_PREFIX + sn)).isPresent()) { + resultList.add((DeviceDTO)RedisOpsUtils.get(RedisConst.DEVICE_ONLINE_PREFIX + sn)); + } + }); + + return resultList; + } + + @Override + public List getDevicesOsdInfo(List snList) { + List resultList = new ArrayList<>(); + snList.forEach(sn->{ + if (Optional.ofNullable(RedisOpsUtils.get(RedisConst.OSD_PREFIX + sn)).isPresent()) { + resultList.add((OsdDockDrone)RedisOpsUtils.get(RedisConst.OSD_PREFIX + sn)); + } + }); + + return resultList; + } }