From 473b5351fbbfd4e5fa4b0f87356253776bfa6da6 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Mon, 02 Mar 2026 08:25:41 +0800
Subject: [PATCH] 2026-03-02 优化媒体文件查询列表,新增任务名称

---
 ard-sample/src/main/java/com/ard/sample/media/model/MediaFileDTO.java           |    2 ++
 ard-sample/src/main/java/com/ard/sample/media/service/IFileService.java         |    2 +-
 ard-sample/src/main/java/com/ard/sample/media/mapper/IFileMapper.java           |   10 ++++++++++
 ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java |   24 ++++++++++++++++++++----
 ard-admin/src/main/java/com/ard/web/controller/sample/media/FileController.java |   10 ++++++++--
 ard-sample/src/main/java/com/ard/sample/media/model/MediaFileEntity.java        |    3 +++
 6 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/ard-admin/src/main/java/com/ard/web/controller/sample/media/FileController.java b/ard-admin/src/main/java/com/ard/web/controller/sample/media/FileController.java
index 860cd75..9ef6638 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/sample/media/FileController.java
+++ b/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);
     }
 
diff --git a/ard-sample/src/main/java/com/ard/sample/media/mapper/IFileMapper.java b/ard-sample/src/main/java/com/ard/sample/media/mapper/IFileMapper.java
index a4c8219..7d4cc6e 100644
--- a/ard-sample/src/main/java/com/ard/sample/media/mapper/IFileMapper.java
+++ b/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);
 }
diff --git a/ard-sample/src/main/java/com/ard/sample/media/model/MediaFileDTO.java b/ard-sample/src/main/java/com/ard/sample/media/model/MediaFileDTO.java
index 57d61a3..13eb7f4 100644
--- a/ard-sample/src/main/java/com/ard/sample/media/model/MediaFileDTO.java
+++ b/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;
 }
diff --git a/ard-sample/src/main/java/com/ard/sample/media/model/MediaFileEntity.java b/ard-sample/src/main/java/com/ard/sample/media/model/MediaFileEntity.java
index 5e3d6d4..e631b08 100644
--- a/ard-sample/src/main/java/com/ard/sample/media/model/MediaFileEntity.java
+++ b/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;
 
diff --git a/ard-sample/src/main/java/com/ard/sample/media/service/IFileService.java b/ard-sample/src/main/java/com/ard/sample/media/service/IFileService.java
index de08a9b..6360d6a 100644
--- a/ard-sample/src/main/java/com/ard/sample/media/service/IFileService.java
+++ b/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.
diff --git a/ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java
index f177c56..ebf91a4 100644
--- a/ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java
+++ b/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());
 
         }
 

--
Gitblit v1.9.3