ard-admin/src/main/java/com/ard/web/controller/sample/media/FileController.java
@@ -34,8 +34,14 @@ @ApiOperation("获取所有媒体文件列表") @GetMapping("/files") public ResponseResult<PaginationData<MediaFileDTO>> getFilesList(@RequestParam(defaultValue = "1") Long page, @RequestParam(name = "page_size", defaultValue = "10") Long pageSize) { PaginationData<MediaFileDTO> filesList = fileService.getMediaFilesPagination(page, pageSize); @RequestParam(name = "page_size", defaultValue = "10") Long pageSize, @ApiParam(value = "任务ID,筛选指定任务下的文件", required = false) @RequestParam(name = "job_id", required = false) String jobId, @ApiParam(value = "开始时间", required = false) @RequestParam(name = "start_time", required = false) Long startTime, @ApiParam(value = "结束时间", required = false) @RequestParam(name = "end_time", required = false) Long endTime) { PaginationData<MediaFileDTO> filesList = fileService.getMediaFilesPagination(page, pageSize, jobId, startTime, endTime); return ResponseResult.success(filesList); } ard-sample/src/main/java/com/ard/sample/media/mapper/IFileMapper.java
@@ -1,7 +1,11 @@ package com.ard.sample.media.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ard.sample.media.model.MediaFileEntity; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; /** * @author sean @@ -9,4 +13,10 @@ * @date 2021/12/9 */ public interface IFileMapper extends BaseMapper<MediaFileEntity> { @Select("SELECT m.* ,j.name as 'job_name'" + "FROM media_file m " + "left join wayline_job j on j.job_id = m.job_id " + "${ew.customSqlSegment.replace('job_id', 'm.job_id')}") <P extends IPage<MediaFileEntity>> P selectPage(P page, @Param("ew") Wrapper<MediaFileEntity> queryWrapper); } ard-sample/src/main/java/com/ard/sample/media/model/MediaFileDTO.java
@@ -49,4 +49,6 @@ private double duration; private String jobId; private String jobName; } ard-sample/src/main/java/com/ard/sample/media/model/MediaFileEntity.java
@@ -60,6 +60,9 @@ @TableField("job_id") private String jobId; @TableField(exist = false) private String jobName; @TableField(value = "create_time", fill = FieldFill.INSERT) private Long createTime; ard-sample/src/main/java/com/ard/sample/media/service/IFileService.java
@@ -47,7 +47,7 @@ * @param pageSize * @return */ PaginationData<MediaFileDTO> getMediaFilesPagination(long page, long pageSize); PaginationData<MediaFileDTO> getMediaFilesPagination(long page, long pageSize, String jobId, Long startTime, Long endTime); /** * Get the download address of the file. ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java
@@ -4,6 +4,8 @@ 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; @@ -48,6 +50,9 @@ @Autowired private IDeviceDictionaryService deviceDictionaryService; @Autowired private IWaylineJobService _waylineJobService; @Autowired private OssServiceContext ossService; @@ -129,11 +134,21 @@ 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() @@ -162,7 +177,7 @@ } /** * Convert the received file object into a database entity object. * 将接收到的文件对象转换为数据库实体对象。 * @param file * @return */ @@ -198,7 +213,7 @@ } /** * Convert database entity objects into file data transfer object. * 将数据库实体对象转换为文件数据传输对象。 * @param entity * @return */ @@ -224,7 +239,8 @@ 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()); }