rain
2024-06-14 8d9a2d656e4ae007590c622e5f7c228adacdca49
src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
@@ -26,6 +26,9 @@
import com.dji.sample.manage.model.param.DeviceQueryParam;
import com.dji.sample.manage.model.receiver.*;
import com.dji.sample.manage.service.*;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import com.dji.sample.wayline.service.IWaylineJobService;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -97,6 +100,9 @@
    @Autowired
    private IDeviceRedisService deviceRedisService;
    @Autowired
    private IWaylineJobService waylineJobService;
    @Autowired
    @Qualifier("gatewayOSDServiceImpl")
@@ -298,6 +304,7 @@
                        .eq(StringUtils.hasText(param.getWorkspaceId()),
                                DeviceEntity::getWorkspaceId, param.getWorkspaceId())
                        .eq(param.getBoundStatus() != null, DeviceEntity::getBoundStatus, param.getBoundStatus())
                        .eq(param.getReserveId() != null, DeviceEntity::getReserveId, param.getReserveId())
                        .orderBy(param.isOrderBy(),
                                param.isAsc(), DeviceEntity::getId))
                .stream()
@@ -306,10 +313,11 @@
    }
    @Override
    public List<DeviceDTO> getDevicesTopoForWeb(String workspaceId) {
    public List<DeviceDTO> getDevicesTopoForWeb(String workspaceId, String reserveId) {
        List<DeviceDTO> devicesList = this.getDevicesByParams(
                DeviceQueryParam.builder()
                        .workspaceId(workspaceId)
                        .reserveId(reserveId)
                        .domains(List.of(DeviceDomainEnum.GATEWAY.getVal(), DeviceDomainEnum.DOCK.getVal()))
                        .build());
@@ -317,6 +325,17 @@
                .filter(gateway -> DeviceDomainEnum.DOCK.getVal() == gateway.getDomain() ||
                        deviceRedisService.checkDeviceOnline(gateway.getDeviceSn()))
                .forEach(this::spliceDeviceTopo);
        devicesList.forEach(deviceDTO -> {
            WaylineJobQueryParam waylineJobQueryParam = new WaylineJobQueryParam();
            waylineJobQueryParam.setDockSn(deviceDTO.getDeviceSn());
            WaylineJobEntity latestJob = waylineJobService.getLatestJob(workspaceId, waylineJobQueryParam);
            deviceDTO.setLatestWaylineJob(latestJob);
            deviceDTO.setOnlineStatus(true);
            OsdDockReceiver osdDockReceiver = (OsdDockReceiver) RedisOpsUtils.get("osd:" + deviceDTO.getDeviceSn());
            deviceDTO.setLatitude(osdDockReceiver!=null? osdDockReceiver.getLatitude():null);
            deviceDTO.setLongitude(osdDockReceiver!=null? osdDockReceiver.getLongitude():null);
        });
        return devicesList;
    }
@@ -438,7 +457,7 @@
            if (deviceOpt.isEmpty()) {
                deviceOpt = this.getDeviceBySn(from);
                if (deviceOpt.isEmpty()) {
                    log.error("Please restart the drone.");
                    log.error("请重新启动无人机.");
                    return;
                }