Browse Source

降落不结束任务问题修改 获取航线列表 获取在线机场设备列表

S0025136190 1 year ago
parent
commit
30b2f510ab

+ 8 - 0
Backend/sample/src/main/java/com/dji/sample/manage/controller/DeviceController.java

@@ -192,4 +192,12 @@ public class DeviceController {
         List<DeviceTypeDTO> resultList = deviceDictionaryService.getDeviceType(flg);
         return HttpResultResponse.success(resultList);
     }
+
+    @GetMapping("/{workspace_id}/getOnlineDevices")
+    public HttpResultResponse<List<DeviceDTO>> getOnlineDevices(
+            @PathVariable("workspace_id") String workspaceId) {
+        List<DeviceDTO> devices = deviceService.getOnlineDevices(workspaceId);
+
+        return HttpResultResponse.success(devices);
+    }
 }

+ 2 - 0
Backend/sample/src/main/java/com/dji/sample/manage/service/IDeviceService.java

@@ -216,4 +216,6 @@ public interface IDeviceService {
     List<UpstreamDeviceDTO> selUpstreamDeviceList(String searchInfo, Integer status,String workspaceId);
 
     List<UpstreamDeviceDetailDTO> selUpstreamDeviceDetailList(String searchInfo, Integer status,String workspaceId);
+
+    List<DeviceDTO> getOnlineDevices(String workspaceId);
 }

+ 21 - 0
Backend/sample/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java

@@ -873,6 +873,27 @@ public class DeviceServiceImpl implements IDeviceService {
         return resultList;
     }
 
+    @Override
+    public List<DeviceDTO> getOnlineDevices(String workspaceId) {
+        List<DeviceDTO> result = new ArrayList<>();
+        LambdaQueryWrapper<DeviceEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq( DeviceEntity::getWorkspaceId, workspaceId)
+                .eq(DeviceEntity::getDomain,DeviceDomainEnum.DOCK);
+        List<DeviceEntity> list = mapper.selectList(wrapper);
+        if(list.size() > 0) {
+            for(DeviceEntity device : list) {
+                boolean parentFlg = deviceRedisService.checkDeviceOnline(device.getDeviceSn());
+                if(parentFlg) {
+                    if(deviceRedisService.checkDeviceOnline(device.getChildSn())){
+                        Optional<DeviceDTO> deviceDTO = getDeviceBySn(device.getDeviceSn());
+                        result.add(deviceDTO.get());
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
     /**
      * Convert device data transfer object into database entity object.
      * @param dto

+ 11 - 1
Backend/sample/src/main/java/com/dji/sample/manage/service/impl/SDKDeviceService.java

@@ -376,6 +376,13 @@ public class SDKDeviceService extends AbstractDeviceService {
                             + ",飞行器状态:" + data.getModeCode().name() + ",经度:" + data.getLongitude() + ",维度:" + data.getLatitude()
                             + "高度:" + data.getHeight());
                 }
+                if(data.getModeCode().getCode() == 10) {
+                    isAdd = true;
+                    log.info("添加结束飞行轨迹: workspaceID:" + device.getWorkspaceId() + ",sn:" + device.getDeviceSn()
+                            + ",间隔时间(毫秒):" + btwTime + ",采集频率(秒)" + CustomConfiguration.frequency
+                            + ",飞行器状态:" + data.getModeCode().name() + ",经度:" + data.getLongitude() + ",维度:" + data.getLatitude()
+                            + "高度:" + data.getHeight());
+                }
                 if(isSamePoint(data,lastPoint.get())) {
                     log.info("添加飞行轨迹:workspaceID:" + device.getWorkspaceId() + ",sn:" + device.getDeviceSn() +
                             "相同坐标,不做记录" + data.toString());
@@ -396,13 +403,15 @@ public class SDKDeviceService extends AbstractDeviceService {
                                 .type(FlightPointTypeEnum.HOME.getType())
                                 .createTime(System.currentTimeMillis()).build();
                         flightTaskService.addHomePoint(flightTrackEntity);
+                        //记录添加时间
+                        deviceRedisService.setLastDroneTrack(device.getDeviceSn(), flightTrackEntity);
                     }
                 }
                 if(!lastPoint.isPresent()) {
                     return null;
                 }
                 long btwTime = System.currentTimeMillis() - lastPoint.get().getCreateTime();
-                if(btwTime >= CustomConfiguration.frequency * 1000) {
+                if(btwTime >= CustomConfiguration.frequency * 1000 || 10 == data.getModeCode().getCode()) {
                     //添加轨迹信息
                     FlightTrackEntity flightTrackEntity = FlightTrackEntity.builder()
                             .taskId(task.getId())
@@ -426,6 +435,7 @@ public class SDKDeviceService extends AbstractDeviceService {
     }
 
     private boolean isSamePoint(OsdRcDrone data,FlightTrackEntity lastPoint) {
+
         return data.getLongitude().doubleValue() == lastPoint.getLongitude()
                 && data.getLatitude().doubleValue() == lastPoint.getLatitude()
                 && data.getHeight().doubleValue() == lastPoint.getAltitude()

+ 12 - 4
Backend/sample/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java

@@ -9,10 +9,7 @@ import com.dji.sdk.cloudapi.wayline.api.IHttpWaylineService;
 import com.dji.sdk.common.HttpResultResponse;
 import com.dji.sdk.common.PaginationData;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
@@ -168,4 +165,15 @@ public class WaylineFileController implements IHttpWaylineService {
 
         return isMark ? HttpResultResponse.success() : HttpResultResponse.error();
     }
+
+    /**
+     * Delete the wayline file in the workspace according to the wayline id.
+     * @param workspaceId
+     * @return
+     */
+    @GetMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/{workspace_id}/getWaylines")
+    public HttpResultResponse getWaylines(@PathVariable(name = "workspace_id") String workspaceId) {
+        List<GetWaylineListResponse> data = waylineFileService.getWaylines(workspaceId);
+        return HttpResultResponse.success(data);
+    }
 }

+ 2 - 0
Backend/sample/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java

@@ -84,4 +84,6 @@ public interface IWaylineFileService {
      * @return
      */
     void importKmzFile(MultipartFile file, String workspaceId, String creator);
+
+    List<GetWaylineListResponse> getWaylines(String workspaceId);
 }

+ 15 - 0
Backend/sample/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java

@@ -223,6 +223,21 @@ public class WaylineFileServiceImpl implements IWaylineFileService {
         }
     }
 
+    @Override
+    public List<GetWaylineListResponse> getWaylines(String workspaceId) {
+        List<GetWaylineListResponse> resultList = new ArrayList<>();
+        List<WaylineFileEntity> list = mapper.selectList(
+                new LambdaQueryWrapper<WaylineFileEntity>()
+                        .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+                        );
+        resultList = list
+                .stream()
+                .map(this::entityConvertToDTO)
+                .collect(Collectors.toList());
+        return resultList;
+    }
+
+
     private Optional<WaylineFileDTO> validKmzFile(InputStream fileInputStream) {
         WaylineFileDTO waylineFileDTO = new WaylineFileDTO();
         try (ZipInputStream unzipFile = new ZipInputStream(fileInputStream)) {