| | |
| | | import com.ard.oss.service.impl.OssServiceContext; |
| | | import com.ard.sample.utils.TimestampUtils; |
| | | import com.ard.sample.utils.VideoDurationUtilFFmpeg; |
| | | import com.ard.sample.wayline.model.dto.WaylineJobDTO; |
| | | import com.ard.sample.wayline.service.IWaylineJobService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ard.sample.common.model.Pagination; |
| | |
| | | |
| | | @Autowired |
| | | private IDeviceDictionaryService deviceDictionaryService; |
| | | |
| | | @Autowired |
| | | private IWaylineJobService _waylineJobService; |
| | | |
| | | @Autowired |
| | | private OssServiceContext ossService; |
| | |
| | | */ |
| | | @Override |
| | | public PaginationData<MediaFileDTO> getJobFiles(long page, long pageSize,String jobId, String isType) { |
| | | Page<MediaFileEntity> pageData = mapper.selectPage( |
| | | new Page<MediaFileEntity>(page, pageSize), |
| | | new LambdaQueryWrapper<MediaFileEntity>() |
| | | .eq(Objects.nonNull(jobId), MediaFileEntity::getJobId, jobId) |
| | | // .orderByDesc(MediaFileEntity::getId)); |
| | | // isType=1 时匹配 V.jpeg |
| | | .like("1".equals(isType), MediaFileEntity::getFileName, "V.jpeg") |
| | | // isType=0 时匹配 V.mp4 |
| | | .like("0".equals(isType), MediaFileEntity::getFileName, "V.mp4") |
| | | // 排序修改:按start_time正序(升序)排列 |
| | | .orderByAsc(MediaFileEntity::getStartTime)); // 关键改动1:替换排序方式 |
| | | LambdaQueryWrapper<MediaFileEntity> queryWrapper = new LambdaQueryWrapper<MediaFileEntity>() |
| | | .eq(Objects.nonNull(jobId), MediaFileEntity::getJobId, jobId); |
| | | // 按文件扩展名区分图片/视频,不再写死镜头前缀: |
| | | // Dock2 可见光文件名为 _V.jpeg/_V.mp4;机场1(M30T)三光相机为 _W/_Z/_T.jpeg(广角/变焦/红外)及 _W.mp4。 |
| | | // 原实现写死 V.jpeg/V.mp4,导致机场1的媒体文件在计划库中查询不到。 |
| | | if ("1".equals(isType)) { |
| | | queryWrapper.and(w -> w.like(MediaFileEntity::getFileName, ".jpeg") |
| | | .or().like(MediaFileEntity::getFileName, ".jpg")); |
| | | } else if ("0".equals(isType)) { |
| | | queryWrapper.like(MediaFileEntity::getFileName, ".mp4"); |
| | | } |
| | | // 排序:按 start_time 正序(升序)排列 |
| | | queryWrapper.orderByAsc(MediaFileEntity::getStartTime); |
| | | |
| | | Page<MediaFileEntity> pageData = mapper.selectPage(new Page<MediaFileEntity>(page, pageSize), queryWrapper); |
| | | |
| | | List<MediaFileDTO> records = pageData.getRecords() |
| | | .stream() |
| | |
| | | return new PaginationData<MediaFileDTO>(records, new Pagination(pageData)); |
| | | } |
| | | |
| | | /** |
| | | * 分页获取媒体文件列表 |
| | | * 增加筛选条件 |
| | | * @param page 当前页码 |
| | | * @param pageSize 每页大小 |
| | | * @return 分页数据对象,包含媒体文件列表和分页信息 |
| | | */ |
| | | @Override |
| | | public PaginationData<MediaFileDTO> getMediaFilesPagination(long page, long pageSize) { |
| | | public PaginationData<MediaFileDTO> getMediaFilesPagination(long page, long pageSize, String jobId, Long startTime, Long endTime) { |
| | | Page<MediaFileEntity> pageData = mapper.selectPage( |
| | | new Page<MediaFileEntity>(page, pageSize), |
| | | new LambdaQueryWrapper<MediaFileEntity>() |
| | | .eq(jobId != null, MediaFileEntity::getJobId, jobId) |
| | | .ge(startTime != null, MediaFileEntity::getStartTime, startTime) |
| | | .le(endTime != null, MediaFileEntity::getStartTime, endTime) |
| | | .orderByDesc(MediaFileEntity::getId)); |
| | | List<MediaFileDTO> records = pageData.getRecords() |
| | | .stream() |
| | |
| | | } |
| | | |
| | | /** |
| | | * Convert the received file object into a database entity object. |
| | | * 将接收到的文件对象转换为数据库实体对象。 |
| | | * @param file |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * Convert database entity objects into file data transfer object. |
| | | * 将数据库实体对象转换为文件数据传输对象。 |
| | | * @param entity |
| | | * @return |
| | | */ |
| | |
| | | Instant.ofEpochMilli(entity.getEndTime()), ZoneId.systemDefault()).format(DATE_TIME_FORMATTER)) |
| | | .duration(entity.getDuration()) |
| | | .drone(entity.getDrone()) |
| | | .jobId(entity.getJobId()); |
| | | .jobId(entity.getJobId()) |
| | | .jobName(entity.getJobName()); |
| | | |
| | | } |
| | | |