Explorar o código

摄像头信息存库检索 上游系统报错修改

S0025136190 hai 1 ano
pai
achega
ca63c38cc1

+ 15 - 0
Backend/sample/src/main/java/com/dji/sample/manage/dao/IDeviceCameraMapper.java

@@ -0,0 +1,15 @@
+package com.dji.sample.manage.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dji.sample.manage.model.entity.DeviceCameraEntity;
+
+
+/**
+ *
+ * @author huiqing.jiang
+ * @date 2024/11/22
+ * @version 0.1
+ */
+public interface IDeviceCameraMapper extends BaseMapper<DeviceCameraEntity> {
+
+}

+ 43 - 0
Backend/sample/src/main/java/com/dji/sample/manage/model/entity/DeviceCameraEntity.java

@@ -0,0 +1,43 @@
+package com.dji.sample.manage.model.entity;
+
+import cn.hutool.json.JSON;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.v3.core.util.Json;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * The entity class of the device camera
+ *
+ * @author huiqing.jiang
+ * @version 0.1
+ * @date 2024/11/22
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName(value = "manage_device_camera")
+public class DeviceCameraEntity implements Serializable {
+
+
+    private String id;
+
+    @TableField(value = "device_sn")
+    private String deviceSn;
+
+    private String name;
+
+    private String type;
+
+    @TableField(value = "camera_index")
+    private String cameraIndex;
+
+    @TableField(value = "video_list")
+    private String videoList;
+
+}

+ 23 - 0
Backend/sample/src/main/java/com/dji/sample/manage/service/IDeviceCameraService.java

@@ -0,0 +1,23 @@
+package com.dji.sample.manage.service;
+
+
+import com.dji.sample.manage.model.dto.CapacityCameraDTO;
+import com.dji.sample.manage.model.entity.DeviceCameraEntity;
+
+import java.util.List;
+
+/**
+ * @author huiqing.jiang
+ * @date 2024/11/22
+ * @version 0.1
+ */
+public interface IDeviceCameraService {
+
+    void saveDeviceCamera(List<CapacityCameraDTO> list, String deviceSn);
+
+    void save(DeviceCameraEntity entity);
+
+    void delete(String deviceSn);
+
+    List<CapacityCameraDTO> selCameraListByDeviceSn(String deviceSn);
+}

+ 5 - 0
Backend/sample/src/main/java/com/dji/sample/manage/service/impl/CapacityCameraServiceImpl.java

@@ -7,6 +7,7 @@ import com.dji.sample.manage.model.dto.DeviceDictionaryDTO;
 import com.dji.sample.manage.model.receiver.CapacityCameraReceiver;
 import com.dji.sample.manage.service.ICameraVideoService;
 import com.dji.sample.manage.service.ICapacityCameraService;
+import com.dji.sample.manage.service.IDeviceCameraService;
 import com.dji.sample.manage.service.IDeviceDictionaryService;
 import com.dji.sdk.cloudapi.device.DeviceDomainEnum;
 import com.dji.sdk.cloudapi.device.PayloadIndex;
@@ -33,6 +34,9 @@ public class CapacityCameraServiceImpl implements ICapacityCameraService {
     @Autowired
     private IDeviceDictionaryService dictionaryService;
 
+    @Autowired
+    private IDeviceCameraService deviceCameraService;
+
     @Override
     public List<CapacityCameraDTO> getCapacityCameraByDeviceSn(String deviceSn) {
         return (List<CapacityCameraDTO>) RedisOpsUtils.hashGet(RedisConst.LIVE_CAPACITY, deviceSn);
@@ -48,6 +52,7 @@ public class CapacityCameraServiceImpl implements ICapacityCameraService {
         List<CapacityCameraDTO> capacity = capacityCameraReceivers.stream()
                 .map(this::receiver2Dto).collect(Collectors.toList());
         RedisOpsUtils.hashSet(RedisConst.LIVE_CAPACITY, deviceSn, capacity);
+        deviceCameraService.saveDeviceCamera(capacity,deviceSn);
     }
 
     public CapacityCameraDTO receiver2Dto(CapacityCameraReceiver receiver) {

+ 100 - 0
Backend/sample/src/main/java/com/dji/sample/manage/service/impl/DeviceCameraServiceImpl.java

@@ -0,0 +1,100 @@
+package com.dji.sample.manage.service.impl;
+
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.dji.sample.manage.dao.IDeviceCameraMapper;
+import com.dji.sample.manage.model.dto.CapacityCameraDTO;
+import com.dji.sample.manage.model.dto.CapacityVideoDTO;
+import com.dji.sample.manage.model.entity.DeviceCameraEntity;
+import com.dji.sample.manage.service.*;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ *
+ * @author huiqing.jiang
+ * @version 0.1
+ * @date 2024/11/22
+ */
+@Service
+@Slf4j
+@Transactional
+public class DeviceCameraServiceImpl implements IDeviceCameraService {
+
+    @Autowired
+    private IDeviceCameraMapper mapper;
+
+    @Override
+    public void saveDeviceCamera(List<CapacityCameraDTO> list, String deviceSn) {
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+        List<CapacityCameraDTO> veL = selCameraListByDeviceSn(deviceSn);
+        if (!CollectionUtils.isEmpty(veL)) {
+            delete(deviceSn);
+        }
+        for (CapacityCameraDTO dto : list) {
+            dto.setDeviceSn(deviceSn);
+            DeviceCameraEntity entity = dtoToEntity(dto);
+            save(entity);
+        }
+
+    }
+
+    @Override
+    public void save(DeviceCameraEntity entity) {
+        mapper.insert(entity);
+    }
+
+    @Override
+    public void delete(String deviceSn) {
+        LambdaQueryWrapper<DeviceCameraEntity> wrapper = new LambdaQueryWrapper<DeviceCameraEntity>()
+                .eq(DeviceCameraEntity ::getDeviceSn,deviceSn);
+        mapper.delete(wrapper);
+    }
+
+    @Override
+    public List<CapacityCameraDTO> selCameraListByDeviceSn(String deviceSn) {
+        LambdaQueryWrapper<DeviceCameraEntity> wrapper = new LambdaQueryWrapper<DeviceCameraEntity>()
+                .eq(DeviceCameraEntity::getDeviceSn,deviceSn);
+        List<DeviceCameraEntity> entityList = mapper.selectList(wrapper);
+        List<CapacityCameraDTO> dtoList = entityList.stream().map(this::entityToDto).collect(Collectors.toList());
+        return dtoList;
+    }
+
+    private DeviceCameraEntity dtoToEntity(CapacityCameraDTO dto) {
+        DeviceCameraEntity entity = new DeviceCameraEntity();
+        entity.setId(dto.getId());
+        entity.setType(dto.getType());
+        entity.setName(dto.getName());
+        entity.setDeviceSn(dto.getDeviceSn());
+        entity.setCameraIndex(dto.getIndex());
+        if(!CollectionUtils.isEmpty(dto.getVideosList())) {
+            entity.setVideoList(JSONUtil.parse(dto.getVideosList()).toString());
+        }
+
+        return entity;
+    }
+
+    private CapacityCameraDTO entityToDto(DeviceCameraEntity entity) {
+        CapacityCameraDTO dto = new CapacityCameraDTO();
+        dto.setId(entity.getId());
+        dto.setType(entity.getType());
+        dto.setName(entity.getName());
+        dto.setDeviceSn(entity.getDeviceSn());
+        dto.setIndex(entity.getCameraIndex());
+        if(null != entity.getVideoList()) {
+            dto.setVideosList(JSONUtil.toList(entity.getVideoList(), CapacityVideoDTO.class));
+        }
+        return dto;
+    }
+}

+ 3 - 8
Backend/sample/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java

@@ -839,17 +839,12 @@ public class DeviceServiceImpl implements IDeviceService {
                 deviceDTO.setDeviceSn(device.getDeviceSn());
                 getDeviceStatus(deviceDTO);
                 device.setStatusText(deviceDTO.getStatusText());
-                if(status == null) {
-                    if(deviceDTO.getStatusText().equals("离线")) {
-                        device.setStatus(1);
-                    } else {
-                        device.setStatus(2);
-                    }
-                } else if(status == 1  && deviceDTO.getStatusText().equals("离线")) {
+                if(deviceDTO.getStatusText().equals("离线")) {
                     device.setStatus(1);
-                } else if (status == 2  && !deviceDTO.getStatusText().equals("离线")) {
+                } else {
                     device.setStatus(2);
                 }
+
                 List<FlightTaskEntity> flightTask = flightTrackTaskService.getFlightTrack(device.getDeviceSn(),device.getWorkspaceId());
                 device.setFlightCount(flightTask.size());
                 double kilomters = 0;

+ 23 - 5
Backend/sample/src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java

@@ -54,6 +54,9 @@ public class LiveStreamServiceImpl implements ILiveStreamService {
     @Autowired
     private IDeviceDictionaryService deviceDictionaryService;
 
+    @Autowired
+    private IDeviceCameraService deviceCameraService;
+
     @Override
     public List<CapacityDeviceDTO> getLiveCapacity(String workspaceId) {
 
@@ -65,13 +68,28 @@ public class LiveStreamServiceImpl implements ILiveStreamService {
                         .build());
 
         // Query the live capability of each drone.
+//        return devicesList.stream()
+//                .filter(device -> deviceRedisService.checkDeviceOnline(device.getDeviceSn()))
+//                .map(device -> CapacityDeviceDTO.builder()
+//                        .name(Objects.requireNonNullElse(device.getNickname(), device.getDeviceName()))
+//                        .sn(device.getDeviceSn())
+//                        //.camerasList(capacityCameraService.getCapacityCameraByDeviceSn(device.getDeviceSn()) )
+//                        .camerasList(deviceCameraService.selCameraListByDeviceSn(device.getDeviceSn()) )
+//                        .build())
+//                .collect(Collectors.toList());
         return devicesList.stream()
                 .filter(device -> deviceRedisService.checkDeviceOnline(device.getDeviceSn()))
-                .map(device -> CapacityDeviceDTO.builder()
-                        .name(Objects.requireNonNullElse(device.getNickname(), device.getDeviceName()))
-                        .sn(device.getDeviceSn())
-                        .camerasList(capacityCameraService.getCapacityCameraByDeviceSn(device.getDeviceSn()))
-                        .build())
+                .map(device -> {
+                    List<CapacityCameraDTO> cameras = capacityCameraService.getCapacityCameraByDeviceSn(device.getDeviceSn());
+                    if (cameras == null || cameras.isEmpty()) {
+                        cameras = deviceCameraService.selCameraListByDeviceSn(device.getDeviceSn());
+                    }
+                    return CapacityDeviceDTO.builder()
+                            .name(Objects.requireNonNullElse(device.getNickname(), device.getDeviceName()))
+                            .sn(device.getDeviceSn())
+                            .camerasList(cameras)
+                            .build();
+                })
                 .collect(Collectors.toList());
     }