shenyijian
2023-11-21 bee596030bf9f9d395d65fbe17be57c52fa0af04
无人机 -统计飞行、航线列表新增查询条件
9 files modified
39 ■■■■■ changed files
src/main/java/com/dji/sample/component/rabbitmq/config/MqttMsgProxyProducer.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/log/dao/IDroneFlightLogMapper.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/log/dao/IDroneFlightLogMapper.xml 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/component/rabbitmq/config/MqttMsgProxyProducer.java
@@ -46,7 +46,7 @@
    }
    */
/**
    /**
     * 使用json序列化机制,进行消息转换
     * @return -
     *//*
src/main/java/com/dji/sample/log/dao/IDroneFlightLogMapper.java
@@ -16,5 +16,5 @@
 */
public interface IDroneFlightLogMapper extends BaseMapper<DroneFlightLogEntity> {
    List<DroneFlightLogEntity>  patrolStatistics(@Param("workspaceId") String workspaceId, @Param("queryTime") String queryTime);
    List<DroneFlightLogEntity>  patrolStatistics(@Param("workspaceId") String workspaceId, @Param("queryTime") String queryTime, @Param("deviceSn") String deviceSn);
}
src/main/java/com/dji/sample/log/dao/IDroneFlightLogMapper.xml
@@ -11,6 +11,9 @@
        <if test="workspaceId != null and workspaceId != ''">
            and fl.workspace_id = #{workspaceId}
        </if>
        <if test="deviceSn !=null and deviceSn != ''" >
            and fl.device_sn = #{deviceSn}
        </if>
        ORDER BY fl.end_time DESC
    </select>
</mapper>
src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
@@ -204,7 +204,7 @@
    @GetMapping("/{workspace_id}/waylines_list")
    @SysLogAnnotation(operModul = "航线库", operType = "查询", operDesc = "查询当前工作区航线库列表")
    public ResponseResult<List<WaylineListDTO>> waylineList(@PathVariable(name = "workspace_id") String workspaceId) {
        return ResponseResult.success(waylineFileService.waylineList(workspaceId)) ;
    public ResponseResult<List<WaylineListDTO>> waylineList(@PathVariable(name = "workspace_id") String workspaceId,String droneName) {
        return ResponseResult.success(waylineFileService.waylineList(workspaceId,droneName)) ;
    }
}
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
@@ -165,9 +165,9 @@
     * 统计飞行次数
     */
    @PostMapping("/{workspace_id}/patrol_statistics")
    public ResponseResult<WaylineJobCountDTO> patrolStatistics(@PathVariable(name = "workspace_id") String workspaceId,String queryTime) {
    public ResponseResult<WaylineJobCountDTO> patrolStatistics(@PathVariable(name = "workspace_id") String workspaceId,String queryTime,String deviceSn) {
        WaylineJobCountDTO waylineJobCountDTO = waylineJobService.patrolStatistics(workspaceId,queryTime);
        WaylineJobCountDTO waylineJobCountDTO = waylineJobService.patrolStatistics(workspaceId,queryTime,deviceSn);
        return ResponseResult.success(waylineJobCountDTO);
    }
src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
@@ -83,5 +83,5 @@
     */
    void importKmzFile(MultipartFile file, String workspaceId, String creator);
    List<WaylineListDTO> waylineList(String workspaceId);
    List<WaylineListDTO> waylineList(String workspaceId,String droneName);
}
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -164,7 +164,7 @@
     */
    WaylineJobEntity getLatestJob(String workspaceId, WaylineJobQueryParam waylineJobQueryParam);
    WaylineJobCountDTO patrolStatistics(String workspaceId,String queryTime);
    WaylineJobCountDTO patrolStatistics(String workspaceId,String queryTime,String deviceSn);
    void updateJobCollect(WaylineJobEntity waylineJob);
src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
@@ -182,11 +182,15 @@
    }
    @Override
    public List<WaylineListDTO> waylineList(String workspaceId) {
        return new LambdaQueryChainWrapper<>(mapper).eq(WaylineFileEntity::getWorkspaceId, workspaceId)
                .list().stream().map(r -> WaylineListDTO.builder().waylineFileId(r.getWaylineId()).name(r.getName()).build())
                .collect(Collectors.toList());
    public List<WaylineListDTO> waylineList(String workspaceId,String droneName) {
        LambdaQueryChainWrapper<WaylineFileEntity> wrapper =
                new LambdaQueryChainWrapper<>(mapper).eq(WaylineFileEntity::getWorkspaceId, workspaceId);
        if (StringUtils.hasText(droneName)){
            wrapper.like(WaylineFileEntity::getName,droneName);
        }
        return  wrapper.list().stream().map(r -> WaylineListDTO.builder().waylineFileId(r.getWaylineId()).name(r.getName()).build())
                .collect(Collectors.toList());
    }
    private Optional<WaylineFileDTO> validKmzFile(MultipartFile file) {
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -900,18 +900,18 @@
    @Override
    public WaylineJobCountDTO patrolStatistics(String workspaceId, String queryTime) {
    public WaylineJobCountDTO patrolStatistics(String workspaceId, String queryTime,String deviceSn) {
        WaylineJobCountDTO waylineJobCountDTO = new WaylineJobCountDTO();
      List<DroneFlightLogEntity>  list =  flightLogMapper.patrolStatistics(workspaceId,queryTime);
      List<DroneFlightLogEntity>  list =  flightLogMapper.patrolStatistics(workspaceId,queryTime,deviceSn);
        if (!CollectionUtils.isEmpty(list)) {
            waylineJobCountDTO.setTotalNumber(list.size());
            long totalTime = list.stream().filter(task -> task.getEndTime()!= null && task.getStartTime()!= null).mapToLong(s -> s.getEndTime() - s.getStartTime()).sum() / 1000;
            long h = totalTime / 3600;
            long m = (totalTime % 3600) / 60;
            waylineJobCountDTO.setTotalDuration( String.format("%02d h %02d min", h, m));
            List<String> deviceSn = list.stream().map(DroneFlightLogEntity::getDeviceSn).distinct().collect(Collectors.toList());
            List<String> deviceSns = list.stream().map(DroneFlightLogEntity::getDeviceSn).distinct().collect(Collectors.toList());
            double sum = 0.0;
            for (String sn : deviceSn) {
            for (String sn : deviceSns) {
                Double totalFlightDistance = new LambdaQueryChainWrapper<>(flightLogMapper)
                        .eq(DroneFlightLogEntity::getDeviceSn, sn).orderByDesc(DroneFlightLogEntity::getEndTime).last("limit 1").one().getTotalFlightDistance();
               if (totalFlightDistance!= null){