From fadbcd1f76ec12d760b059018b8a37aaa64303de Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Wed, 19 Nov 2025 10:18:58 +0800
Subject: [PATCH] 优化
---
ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceServiceImpl.java | 264 ++++++++++++++++----------------
ard-work/src/main/resources/mapper/ArdFlightTaskMapper.xml | 2
ard-work/src/main/java/com/ard/work/domain/entity/ArdFlightTask.java | 8
ard-work/src/main/java/com/ard/work/domain/entity/ArdMedia.java | 15 +
ard-work/src/main/resources/mapper/ArdMediaMapper.xml | 143 +++++++++++------
ard-work/src/main/java/com/ard/work/service/impl/ArdMediaServiceImpl.java | 2
6 files changed, 248 insertions(+), 186 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/work/domain/entity/ArdFlightTask.java b/ard-work/src/main/java/com/ard/work/domain/entity/ArdFlightTask.java
index 6bf1021..aa4096b 100644
--- a/ard-work/src/main/java/com/ard/work/domain/entity/ArdFlightTask.java
+++ b/ard-work/src/main/java/com/ard/work/domain/entity/ArdFlightTask.java
@@ -2,12 +2,17 @@
import com.ard.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.util.Date;
-import java.util.List;
@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
public class ArdFlightTask extends BaseEntity {
private Integer taskId; // 任务ID
@@ -23,7 +28,6 @@
private Date endTime; // 任务结束时间
private Long duration; // 持续时长(单位:秒)
private String serverId; // 服务器ID
-
// 计算持续时长,单位:秒
public Long getDuration() {
diff --git a/ard-work/src/main/java/com/ard/work/domain/entity/ArdMedia.java b/ard-work/src/main/java/com/ard/work/domain/entity/ArdMedia.java
index a29e680..98efa88 100644
--- a/ard-work/src/main/java/com/ard/work/domain/entity/ArdMedia.java
+++ b/ard-work/src/main/java/com/ard/work/domain/entity/ArdMedia.java
@@ -1,9 +1,18 @@
package com.ard.work.domain.entity;
import com.ard.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
public class ArdMedia extends BaseEntity {
private String id; // 媒体ID
@@ -13,4 +22,10 @@
private String fileMd5; // 文件MD5值
private String mediaUrl; // 地址
private String sourceUrl; // 源地址
+ private Long photoId; // 图片ID
+ private Double longitude; // 经度
+ private Double latitude; // 纬度
+ private Double height; // 高度
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date captureTime; // 抓拍时间
}
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceServiceImpl.java
index 2e19dc8..38f4c77 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceServiceImpl.java
@@ -24,6 +24,7 @@
import javax.annotation.Resource;
import javax.net.ssl.*;
import java.io.InputStream;
+import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
@@ -45,16 +46,24 @@
private TyClient tyClient;
@Resource
private OssServiceContext ossServiceContext;
-
@Resource
private ThreadPoolTaskExecutor threadPoolTaskExecutor; // 使用线程池执行异步任务
+ /**
+ * 查询飞行架次列表
+ *
+ * @param ardFlightTask 飞行架次
+ * @return 飞行架次集合
+ */
@Override
public List<ArdFlightTask> selectArdFlightTask(ArdFlightTask ardFlightTask) {
return ardFlightTaskMapper.selectArdFlightTask(ardFlightTask);
}
- // 同步所有服务的飞行历史
+ /**
+ * 同步所有服务的飞行历史
+ *
+ */
@Scheduled(fixedDelay = 10000)
public void syncAllFlightHistory() {
List<String> serverIds = ardServerInfoService.getServerIdsList();
@@ -72,12 +81,12 @@
return maxStartTime != null ? maxStartTime : new Date(0); // 如果没有数据,返回 Unix 纪元时间作为起点
}
- // 调用接口获取飞行历史数据
// 根据上次同步时间同步飞行历史
- public void syncFlightHistory(String serverId, Date lastSyncTime) {
+ public void syncFlightHistory(String serverId, Date startTime) {
// 创建查询条件 BoxHistoryDTO,并设置 startTime 作为过滤条件
- BoxHistoryDTO boxHistoryDTO = new BoxHistoryDTO();
- boxHistoryDTO.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, lastSyncTime)); // 传递 lastSyncTime 参数
+ BoxHistoryDTO boxHistoryDTO = BoxHistoryDTO.builder()
+ .startTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, startTime))
+ .build();
// 获取飞行历史
List<BoxHistoryReceiver> historyList = getBoxHistory(serverId, boxHistoryDTO);
@@ -90,44 +99,28 @@
}
}
- // 调用接口获取飞行历史数据
- private List<BoxHistoryReceiver> getBoxHistory(String serverId, BoxHistoryDTO boxHistoryDTO) {
- TyHttpCommonReceiver<List<BoxHistoryReceiver>> boxHistory = tyClient.getBoxHistory(serverId, boxHistoryDTO);
- return boxHistory.getContent();
- }
-
// 将数据同步到本地数据库
private void syncToLocalDatabase(String serverId, BoxHistoryReceiver boxHistoryReceiver) {
- // 创建FlightTask实体对象并填充数据
- ArdFlightTask flightTask = new ArdFlightTask();
- flightTask.setTaskId(boxHistoryReceiver.getTaskId());
- flightTask.setBoxSn(boxHistoryReceiver.getBoxSn());
- flightTask.setBoxName(boxHistoryReceiver.getBoxName());
- flightTask.setTaskName(boxHistoryReceiver.getTaskName());
-
- Integer photoCount = Integer.parseInt(boxHistoryReceiver.getPhotoCount());
- flightTask.setPhotoCount(photoCount);
-
- Integer videoCount = (boxHistoryReceiver.getVideoPathList() != null) ?
- boxHistoryReceiver.getVideoPathList().size() : 0;
- flightTask.setVideoCount(videoCount);
-
- flightTask.setVideoPath(boxHistoryReceiver.getVideoPath());
- flightTask.setServerId(serverId);
-
- Date startTime = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, boxHistoryReceiver.getStartTime());
- flightTask.setStartTime(startTime);
-
- Date endTime = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, boxHistoryReceiver.getEndTime());
- flightTask.setEndTime(endTime);
-
- flightTask.setCreateTime(DateUtils.getNowDate());
-
// 检查是否已经存在相同任务ID的记录
- ArdFlightTask ardFlightTask = ardFlightTaskMapper.getArdFlightTaskById(flightTask.getTaskId());
+ ArdFlightTask ardFlightTask = ardFlightTaskMapper.getArdFlightTaskById(boxHistoryReceiver.getTaskId());
if (ardFlightTask == null) {
// 如果不存在,则插入新记录
- log.info("Syncing task {}", boxHistoryReceiver.getTaskId());
+ log.debug("insert task {}", boxHistoryReceiver.getTaskId());
+ // 创建FlightTask实体对象并填充数据
+ ArdFlightTask flightTask = ArdFlightTask.builder()
+ .taskId(boxHistoryReceiver.getTaskId())
+ .boxSn(boxHistoryReceiver.getBoxSn())
+ .boxName(boxHistoryReceiver.getBoxName())
+ .taskName(boxHistoryReceiver.getTaskName())
+ .photoCount(Integer.parseInt(boxHistoryReceiver.getPhotoCount()))
+ .videoCount((boxHistoryReceiver.getVideoPathList() != null) ?
+ boxHistoryReceiver.getVideoPathList().size() : 0)
+ .videoPath(boxHistoryReceiver.getVideoPath())
+ .serverId(serverId)
+ .startTime(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, boxHistoryReceiver.getStartTime()))
+ .endTime(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, boxHistoryReceiver.getEndTime()))
+ .build();
+ flightTask.setCreateTime(DateUtils.getNowDate());
// 插入新记录
int rows = ardFlightTaskMapper.insertArdFlightTask(flightTask);
if (rows > 0) {
@@ -135,14 +128,14 @@
ardMediaMapper.deleteArdMediaByTaskId(flightTask.getTaskId());
// 插入视频
- syncVideoToDatabase(flightTask, boxHistoryReceiver.getVideoPathList());
+ insertVideoToDatabase(flightTask, boxHistoryReceiver.getVideoPathList());
// 插入图片
- syncPhotoToDatabase(flightTask, serverId, boxHistoryReceiver.getBoxSn());
+ insertPhotoToDatabase(flightTask, serverId, boxHistoryReceiver.getBoxSn());
}
} else {
// 如果存在,则更新记录
- log.info("Updating task {}", boxHistoryReceiver.getTaskId());
+ log.debug("Updating task {}", boxHistoryReceiver.getTaskId());
// 增量更新
updateVideoToDatabase(ardFlightTask, boxHistoryReceiver.getVideoPathList());
// 增量更新图片
@@ -151,18 +144,33 @@
}
}
+
+ // 调用接口获取飞行历史数据
+ private List<BoxHistoryReceiver> getBoxHistory(String serverId, BoxHistoryDTO boxHistoryDTO) {
+ TyHttpCommonReceiver<List<BoxHistoryReceiver>> boxHistory = tyClient.getBoxHistory(serverId, boxHistoryDTO);
+ return boxHistory.getContent();
+ }
+
+ //调用接口获取架次图片
+ private List<BoxPhotosReceiver> getBoxPhotos(String serverId, BoxPhotosDTO boxPhotosDTO) {
+ TyHttpCommonReceiver<List<BoxPhotosReceiver>> boxPhotos = tyClient.getBoxPhotos(serverId, boxPhotosDTO);
+ return boxPhotos.getContent();
+ }
+
+
// 插入视频记录
- private void syncVideoToDatabase(ArdFlightTask flightTask, List<String> videoPathList) {
+ private void insertVideoToDatabase(ArdFlightTask flightTask, List<String> videoPathList) {
if (videoPathList != null && !videoPathList.isEmpty()) {
for (String videoPath : videoPathList) {
-
- ArdMedia ardMedia = new ArdMedia();
- ardMedia.setId(IdUtils.simpleUUID());
- ardMedia.setTaskId(flightTask.getTaskId());
- ardMedia.setMediaType(1); // 1表示视频
- ardMedia.setSourceUrl(videoPath);
+ ArdMedia ardMedia = ArdMedia.builder()
+ .id(IdUtils.simpleUUID())
+ .taskId(flightTask.getTaskId())
+ .mediaType(1) // 1表示视频
+ .sourceUrl(videoPath)
+ .fileSize(getFileSizeByUrl(videoPath))
+ .build();
// 异步上传文件到OSS,并在上传完成后插入数据库
- CompletableFuture.supplyAsync(() -> uploadFileToOss(flightTask.getBoxSn(), videoPath, "record",
+ CompletableFuture.supplyAsync(() -> uploadFileToOss(flightTask.getBoxSn(), videoPath, "record1",
MimeTypeUtils.VIDEO_MP4), threadPoolTaskExecutor)
.thenAccept(url -> {
ardMedia.setMediaUrl(url); // 获取上传后的文件 URL
@@ -182,19 +190,28 @@
if (count != null && size > count) {
log.info("录像数量不一致,需要更新数据库");
// 需要插入新的视频
- // 获取本地数据库中已存在的视频记录
List<ArdMedia> existingVideos = ardMediaMapper.selectArdMediaByTaskIdAndType(flightTask.getTaskId(), 1);
- List<String> newVideos = getNewVideos(existingVideos, videoPathList);
+ // 提取现有的视频路径
+ List<String> existingVideoPaths = existingVideos.stream()
+ .map(ArdMedia::getSourceUrl) // 获取每个视频的 URL
+ .collect(Collectors.toList());
+
+ // 从接口返回的视频路径中找出新的视频
+ List<String> newVideos = videoPathList.stream()
+ .filter(videoPath -> !existingVideoPaths.contains(videoPath)) // 过滤出新的视频
+ .collect(Collectors.toList());
if (!newVideos.isEmpty()) {
// 插入新的视频记录
for (String videoPath : newVideos) {
- ArdMedia ardMedia = new ArdMedia();
- ardMedia.setId(IdUtils.simpleUUID());
- ardMedia.setTaskId(flightTask.getTaskId());
- ardMedia.setMediaType(1); // 1表示视频
- ardMedia.setSourceUrl(videoPath);
+ ArdMedia ardMedia = ArdMedia.builder()
+ .id(IdUtils.simpleUUID())
+ .taskId(flightTask.getTaskId())
+ .mediaType(1) // 1表示视频
+ .fileSize(getFileSizeByUrl(videoPath))
+ .sourceUrl(videoPath)
+ .build();
// 异步上传文件到OSS,并在上传完成后插入数据库
- CompletableFuture.supplyAsync(() -> uploadFileToOss(flightTask.getBoxSn(), videoPath, "record",
+ CompletableFuture.supplyAsync(() -> uploadFileToOss(flightTask.getBoxSn(), videoPath, "record1",
MimeTypeUtils.VIDEO_MP4), threadPoolTaskExecutor)
.thenAccept(url -> {
ardMedia.setMediaUrl(url); // 获取上传后的文件 URL
@@ -210,62 +227,30 @@
}
}
- // 获取需要插入的新视频路径
- private List<String> getNewVideos(List<ArdMedia> existingVideos, List<String> videoPathList) {
- // 提取现有的视频路径
- List<String> existingVideoPaths = existingVideos.stream()
- .map(ArdMedia::getSourceUrl) // 获取每个视频的 URL
- .collect(Collectors.toList());
-
- // 从接口返回的视频路径中找出新的视频
- List<String> newVideos = videoPathList.stream()
- .filter(videoPath -> !existingVideoPaths.contains(videoPath)) // 过滤出新的视频
- .collect(Collectors.toList());
-
- return newVideos;
- }
// 插入图片记录
- private void syncPhotoToDatabase(ArdFlightTask flightTask, String serverId, String boxSn) {
+ private void insertPhotoToDatabase(ArdFlightTask flightTask, String serverId, String boxSn) {
// 查询图片
BoxPhotosDTO boxPhotosDTO = new BoxPhotosDTO();
boxPhotosDTO.setTaskId(flightTask.getTaskId());
boxPhotosDTO.setBoxSn(boxSn);
boxPhotosDTO.setPageIndex(1);
boxPhotosDTO.setPageSize(500);
-
- TyHttpCommonReceiver<List<BoxPhotosReceiver>> boxPhotos = tyClient.getBoxPhotos(serverId, boxPhotosDTO);
- List<BoxPhotosReceiver> photoList = boxPhotos.getContent();
-
+ List<BoxPhotosReceiver> photoList = getBoxPhotos(serverId, boxPhotosDTO);
if (photoList != null && !photoList.isEmpty()) {
- for (BoxPhotosReceiver photo : photoList) {
- ArdMedia ardMedia = new ArdMedia();
- ardMedia.setId(IdUtils.simpleUUID());
- ardMedia.setTaskId(flightTask.getTaskId());
- ardMedia.setMediaType(0); // 0表示图片
- ardMedia.setFileSize(photo.getFileSize());
- ardMedia.setFileMd5(photo.getFileMd5());
- ardMedia.setSourceUrl(photo.getImgUrl());
- // 异步上传文件到OSS,并在上传完成后插入数据库
- CompletableFuture.supplyAsync(() -> uploadFileToOss(flightTask.getBoxSn(), photo.getImgUrl(), "pic",
- MimeTypeUtils.IMAGE_JPG), threadPoolTaskExecutor)
- .thenAccept(url -> {
- ardMedia.setMediaUrl(url); // 获取上传后的文件 URL
- ardMedia.setCreateTime(new Date());
- ardMediaMapper.insertArdMedia(ardMedia); // 插入数据库
- });
- }
+ addPhotos(flightTask, photoList);
}
}
private void updatePhotoToDatabase(ArdFlightTask flightTask, String serverId, String boxSn) {
int count = flightTask.getPhotoCount(); //获取本地库图片数量
// 查询图片
- BoxPhotosDTO boxPhotosDTO = new BoxPhotosDTO();
- boxPhotosDTO.setTaskId(flightTask.getTaskId());
- boxPhotosDTO.setBoxSn(boxSn);
- boxPhotosDTO.setPageIndex(1);
- boxPhotosDTO.setPageSize(500);
+ BoxPhotosDTO boxPhotosDTO = BoxPhotosDTO.builder()
+ .taskId(flightTask.getTaskId())
+ .boxSn(boxSn)
+ .pageIndex(1)
+ .pageSize(500)
+ .build();
TyHttpCommonReceiver<List<BoxPhotosReceiver>> boxPhotos = tyClient.getBoxPhotos(serverId, boxPhotosDTO);
List<BoxPhotosReceiver> photoList = boxPhotos.getContent();
int size = photoList.size();
@@ -275,26 +260,18 @@
// 获取本地数据库中已存在的图片记录(类型为 0 表示图片)
List<ArdMedia> existingPhotos = ardMediaMapper.selectArdMediaByTaskIdAndType(flightTask.getTaskId(), 0);
// 需要插入新的视频
- List<BoxPhotosReceiver> newPhotos = getNewPhotos(existingPhotos, photoList);
+ // 提取现有的图片路径(根据 imgUrl 来判断是否重复)
+ List<String> existingPhotoUrls = existingPhotos.stream()
+ .map(ArdMedia::getSourceUrl) // 提取 ArdMedia 中的图片 URL
+ .collect(Collectors.toList());
+
+ // 筛选出 photoList 中没有出现在 existingPhotos 中的新图片
+ List<BoxPhotosReceiver> newPhotos = photoList.stream()
+ .filter(photo -> !existingPhotoUrls.contains(photo.getImgUrl())) // 过滤出新图片
+ .collect(Collectors.toList());
if (!newPhotos.isEmpty()) {
// 插入新的视频记录
- for (BoxPhotosReceiver photo : newPhotos) {
- ArdMedia ardMedia = new ArdMedia();
- ardMedia.setId(IdUtils.simpleUUID());
- ardMedia.setTaskId(flightTask.getTaskId());
- ardMedia.setMediaType(0); // 0表示图片
- ardMedia.setFileSize(photo.getFileSize());
- ardMedia.setFileMd5(photo.getFileMd5());
- ardMedia.setSourceUrl(photo.getImgUrl());
- // 异步上传文件到OSS,并在上传完成后插入数据库
- CompletableFuture.supplyAsync(() -> uploadFileToOss(flightTask.getBoxSn(), photo.getImgUrl(), "pic",
- MimeTypeUtils.IMAGE_JPG), threadPoolTaskExecutor)
- .thenAccept(url -> {
- ardMedia.setMediaUrl(url); // 获取上传后的文件 URL
- ardMedia.setCreateTime(new Date());
- ardMediaMapper.insertArdMedia(ardMedia); // 插入数据库
- });
- }
+ addPhotos(flightTask, newPhotos);
// 更新任务的视频数量
flightTask.setPhotoCount(flightTask.getPhotoCount() + newPhotos.size());
@@ -303,23 +280,35 @@
}
}
- // 获取需要插入的新图片
- private List<BoxPhotosReceiver> getNewPhotos(List<ArdMedia> existingPhotos, List<BoxPhotosReceiver> photoList) {
- // 提取现有的图片路径(根据 imgUrl 来判断是否重复)
- List<String> existingPhotoUrls = existingPhotos.stream()
- .map(ArdMedia::getSourceUrl) // 提取 ArdMedia 中的图片 URL
- .collect(Collectors.toList());
-
- // 筛选出 photoList 中没有出现在 existingPhotos 中的新图片
- List<BoxPhotosReceiver> newPhotos = photoList.stream()
- .filter(photo -> !existingPhotoUrls.contains(photo.getImgUrl())) // 过滤出新图片
- .collect(Collectors.toList());
-
- return newPhotos; // 返回新增的图片列表
+ private void addPhotos(ArdFlightTask flightTask, List<BoxPhotosReceiver> photoList) {
+ for (BoxPhotosReceiver photo : photoList) {
+ ArdMedia ardMedia = ArdMedia.builder()
+ .id(IdUtils.simpleUUID())
+ .taskId(flightTask.getTaskId())
+ .mediaType(0) // 0表示图片
+ .fileSize(photo.getFileSize())
+ .fileMd5(photo.getFileMd5())
+ .sourceUrl(photo.getImgUrl())
+ .photoId(photo.getPhotoId())
+ .longitude(photo.getLng())
+ .latitude(photo.getLat())
+ .height(photo.getHeight())
+ .captureTime(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, photo.getTimeStamp()))
+ .build();
+ // 异步上传文件到OSS,并在上传完成后插入数据库
+ CompletableFuture.supplyAsync(() -> uploadFileToOss(flightTask.getBoxSn(), photo.getImgUrl(), "pic1",
+ MimeTypeUtils.IMAGE_JPG), threadPoolTaskExecutor)
+ .thenAccept(url -> {
+ ardMedia.setMediaUrl(url); // 获取上传后的文件 URL
+ ardMedia.setCreateTime(new Date());
+ ardMediaMapper.insertArdMedia(ardMedia); // 插入数据库
+ });
+ }
}
+
// 通用的上传方法,支持视频和图片等文件上传
- public String uploadFileToOss(String boxSn, String fileUrl, String bucket, String contentType) {
+ private String uploadFileToOss(String boxSn, String fileUrl, String bucket, String contentType) {
InputStream fileInputStream = null;
String fileOssUrl = "";
try {
@@ -385,4 +374,17 @@
return fileOssUrl; // 返回上传后的文件OSS URL
}
+ //获取文件大小
+ private long getFileSizeByUrl(String fileUrl) {
+ try {
+ URL url = new URL(fileUrl);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("HEAD");
+ conn.connect();
+ return conn.getContentLengthLong(); // 返回字节大小
+ } catch (Exception e) {
+ return -1;
+ }
+ }
+
}
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/IArdMediaServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdMediaServiceImpl.java
similarity index 91%
rename from ard-work/src/main/java/com/ard/work/service/impl/IArdMediaServiceImpl.java
rename to ard-work/src/main/java/com/ard/work/service/impl/ArdMediaServiceImpl.java
index 26a7e85..2fe5482 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/IArdMediaServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdMediaServiceImpl.java
@@ -14,7 +14,7 @@
* Date: 2025年11月18日13:17
**/
@Service
-public class IArdMediaServiceImpl implements IArdMediaService {
+public class ArdMediaServiceImpl implements IArdMediaService {
@Resource
private ArdMediaMapper ardMediaMapper;
diff --git a/ard-work/src/main/resources/mapper/ArdFlightTaskMapper.xml b/ard-work/src/main/resources/mapper/ArdFlightTaskMapper.xml
index 3f6c0ae..dae11c0 100644
--- a/ard-work/src/main/resources/mapper/ArdFlightTaskMapper.xml
+++ b/ard-work/src/main/resources/mapper/ArdFlightTaskMapper.xml
@@ -114,7 +114,7 @@
</update>
<!-- 根据任务ID获取飞行任务 -->
- <select id="getArdFlightTaskById" resultType="ArdFlightTask">
+ <select id="getArdFlightTaskById" resultMap="ArdFlightTaskResult">
SELECT *
FROM ard_flight_task
WHERE task_id = #{taskId}
diff --git a/ard-work/src/main/resources/mapper/ArdMediaMapper.xml b/ard-work/src/main/resources/mapper/ArdMediaMapper.xml
index 22ce39e..f80f327 100644
--- a/ard-work/src/main/resources/mapper/ArdMediaMapper.xml
+++ b/ard-work/src/main/resources/mapper/ArdMediaMapper.xml
@@ -11,49 +11,75 @@
<result property="fileMd5" column="file_md5"/>
<result property="mediaUrl" column="media_url"/>
<result property="sourceUrl" column="source_url"/>
+ <result property="photoId" column="photo_id"/>
+ <result property="longitude" column="longitude"/>
+ <result property="latitude" column="latitude"/>
+ <result property="height" column="height"/>
+ <result property="captureTime" column="capture_time"/>
<result property="createTime" column="create_time"/>
</resultMap>
+
<!-- 查询媒体列表:根据条件动态生成SQL -->
<select id="selectArdMedia" resultMap="ArdMediaResult">
- SELECT id, task_id, media_type, file_size, file_md5, media_url, source_url,create_time
+ SELECT
+ id, task_id, media_type, file_size, file_md5, media_url, source_url,
+ photo_id, longitude, latitude, height, capture_time, create_time
FROM ard_media
<where>
- <!-- 动态查询条件:任务ID -->
<if test="taskId != null">AND task_id = #{taskId}</if>
-
- <!-- 动态查询条件:媒体类型 -->
<if test="mediaType != null">AND media_type = #{mediaType}</if>
-
- <!-- 动态查询条件:文件大小 -->
<if test="fileSize != null">AND file_size = #{fileSize}</if>
-
- <!-- 动态查询条件:文件MD5 -->
<if test="fileMd5 != null">AND file_md5 = #{fileMd5}</if>
-
- <!-- 动态查询条件:媒体URL -->
<if test="mediaUrl != null">AND media_url = #{mediaUrl}</if>
-
- <!-- 动态查询条件:媒体URL -->
<if test="sourceUrl != null">AND source_url = #{sourceUrl}</if>
-
- <!-- 动态查询条件:时间戳 -->
+ <if test="photoId != null">AND photo_id = #{photoId}</if>
+ <if test="longitude != null">AND longitude = #{longitude}</if>
+ <if test="latitude != null">AND latitude = #{latitude}</if>
+ <if test="height != null">AND height = #{height}</if>
+ <if test="captureTime != null">AND capture_time = #{captureTime}</if>
<if test="createTime != null">AND create_time = #{createTime}</if>
</where>
- order by create_time desc
+ ORDER BY create_time DESC
</select>
+
<!-- 根据任务ID查询媒体 -->
<select id="selectArdMediaByTaskId" resultMap="ArdMediaResult">
- SELECT id, task_id, media_type, file_size, file_md5, media_url,source_url, create_time
+ SELECT id,
+ task_id,
+ media_type,
+ file_size,
+ file_md5,
+ media_url,
+ source_url,
+ photo_id,
+ longitude,
+ latitude,
+ height,
+ capture_time,
+ create_time
FROM ard_media
WHERE task_id = #{taskId}
</select>
<!-- 根据任务ID和媒体类型查询媒体 -->
<select id="selectArdMediaByTaskIdAndType" resultMap="ArdMediaResult">
- SELECT id, task_id, media_type, file_size, file_md5, media_url,source_url, create_time
+ SELECT id,
+ task_id,
+ media_type,
+ file_size,
+ file_md5,
+ media_url,
+ source_url,
+ photo_id,
+ longitude,
+ latitude,
+ height,
+ capture_time,
+ create_time
FROM ard_media
- WHERE task_id = #{taskId} and media_type = #{mediaType}
+ WHERE task_id = #{taskId}
+ and media_type = #{mediaType}
</select>
<!-- 插入媒体记录 -->
<insert id="insertArdMedia" parameterType="com.ard.work.domain.entity.ArdMedia">
@@ -66,8 +92,14 @@
<if test="fileMd5 != null">file_md5,</if>
<if test="mediaUrl != null">media_url,</if>
<if test="sourceUrl != null">source_url,</if>
+ <if test="photoId != null">photo_id,</if>
+ <if test="longitude != null">longitude,</if>
+ <if test="latitude != null">latitude,</if>
+ <if test="height != null">height,</if>
+ <if test="captureTime != null">capture_time,</if>
<if test="createTime != null">create_time,</if>
</trim>
+
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="taskId != null">#{taskId},</if>
@@ -76,43 +108,48 @@
<if test="fileMd5 != null">#{fileMd5},</if>
<if test="mediaUrl != null">#{mediaUrl},</if>
<if test="sourceUrl != null">#{sourceUrl},</if>
+ <if test="photoId != null">#{photoId},</if>
+ <if test="longitude != null">#{longitude},</if>
+ <if test="latitude != null">#{latitude},</if>
+ <if test="height != null">#{height},</if>
+ <if test="captureTime != null">#{captureTime},</if>
<if test="createTime != null">#{createTime},</if>
</trim>
</insert>
-
<!-- 批量插入媒体记录 -->
<insert id="insertArdMediaList" parameterType="java.util.List">
- INSERT INTO ard_media
- <trim prefix="(" suffix=")" suffixOverrides=",">
- <if test="list != null and !list.isEmpty()">
- <foreach item="item" collection="list" separator=",">
- <trim prefix="(" suffix=")" suffixOverrides=",">
- <if test="item.taskId != null">task_id,</if>
- <if test="item.mediaType != null">media_type,</if>
- <if test="item.fileSize != null">file_size,</if>
- <if test="item.fileMd5 != null">file_md5,</if>
- <if test="item.mediaUrl != null">media_url,</if>
- <if test="item.sourceUrl != null">source_url,</if>
- <if test="item.createTime != null">create_time,</if>
- </trim>
- </foreach>
- </if>
- </trim>
-
- <trim prefix="values " suffix=")" suffixOverrides=",">
- <foreach item="item" collection="list" separator=",">
- <trim prefix="(" suffix=")" suffixOverrides=",">
- <if test="item.taskId != null">#{item.taskId},</if>
- <if test="item.mediaType != null">#{item.mediaType},</if>
- <if test="item.fileSize != null">#{item.fileSize},</if>
- <if test="item.fileMd5 != null">#{item.fileMd5},</if>
- <if test="item.mediaUrl != null">#{item.mediaUrl},</if>
- <if test="item.sourceUrl != null">#{item.sourceUrl},</if>
- <if test="item.createTime != null">#{item.createTime},</if>
- </trim>
- </foreach>
- </trim>
+ INSERT INTO ard_media(
+ task_id,
+ media_type,
+ file_size,
+ file_md5,
+ media_url,
+ source_url,
+ photo_id,
+ longitude,
+ latitude,
+ height,
+ capture_time,
+ create_time
+ )
+ VALUES
+ <foreach collection="list" item="item" separator=",">
+ (
+ #{item.taskId},
+ #{item.mediaType},
+ #{item.fileSize},
+ #{item.fileMd5},
+ #{item.mediaUrl},
+ #{item.sourceUrl},
+ #{item.photoId},
+ #{item.longitude},
+ #{item.latitude},
+ #{item.height},
+ #{item.captureTime},
+ #{item.createTime}
+ )
+ </foreach>
</insert>
@@ -131,7 +168,9 @@
<!-- 删除媒体记录 -->
<delete id="deleteArdMediaById" parameterType="Integer">
- DELETE FROM ard_media WHERE id = #{id}
+ DELETE
+ FROM ard_media
+ WHERE id = #{id}
</delete>
<!-- 批量删除媒体记录 -->
@@ -143,7 +182,9 @@
</delete>
<delete id="deleteArdMediaByTaskId" parameterType="java.lang.Integer">
- DELETE FROM ard_media WHERE task_id = #{taskId}
+ DELETE
+ FROM ard_media
+ WHERE task_id = #{taskId}
</delete>
</mapper>
--
Gitblit v1.9.3