From 4f94a29e2722e2185a81355a396ab2a33936d8ff Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Sun, 28 Dec 2025 15:19:48 +0800
Subject: [PATCH] 优化架次视频和图片同步任务

---
 ard-work/src/main/resources/mapper/ArdMediaPicMapper.xml |   69 +++++++++++-----------------------
 1 files changed, 23 insertions(+), 46 deletions(-)

diff --git a/ard-work/src/main/resources/mapper/ArdMediaPicMapper.xml b/ard-work/src/main/resources/mapper/ArdMediaPicMapper.xml
index cba6580..dc7b7f2 100644
--- a/ard-work/src/main/resources/mapper/ArdMediaPicMapper.xml
+++ b/ard-work/src/main/resources/mapper/ArdMediaPicMapper.xml
@@ -18,42 +18,27 @@
         <result property="captureTime" column="capture_time"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
+        <result property="syncStatus" column="sync_status"/>
     </resultMap>
 
     <!-- 查询图片列表 -->
     <select id="selectPicList" resultMap="ArdMediaPicResult">
-        SELECT
-        id, task_id, file_size, file_md5, media_url, source_url,
-        longitude, latitude, height, capture_time, create_time, update_time
+        SELECT *
         FROM ard_media_pic
         <where>
             <if test="taskId != null">AND task_id = #{taskId}</if>
-            <if test="fileMd5 != null">AND file_md5 = #{fileMd5}</if>
+            <if test="syncStatus != null">AND sync_status = #{syncStatus}</if>
         </where>
         ORDER BY capture_time DESC
     </select>
-    <!-- 查询 media_url为 NULL 的视频 -->
-    <select id="selectPicsWithNullMedia" resultMap="ArdMediaPicResult">
-        SELECT
-            id,
-            task_id,
-            file_size,
-            file_md5,
-            media_url,
-            source_url,
-            longitude,
-            latitude,
-            height,
-            capture_time,
-            create_time,
-            update_time
-        FROM
-            ard_media_pic
-        WHERE
-            media_url IS NULL
-        ORDER BY
-            capture_time ASC
+    <!-- 查询待处理的图片 -->
+    <select id="selectPendingPics" resultMap="ArdMediaPicResult">
+        SELECT *
+        FROM ard_media_pic
+        WHERE sync_status = 0
+        ORDER BY id LIMIT #{limit}
     </select>
+
     <!-- 根据任务ID查询图片 -->
     <select id="selectPicByTaskId" resultMap="ArdMediaPicResult">
         SELECT * FROM ard_media_pic WHERE task_id = #{taskId}
@@ -66,12 +51,12 @@
             id, task_id, file_size, file_md5,
             media_url, source_url,
             longitude, latitude, height,
-            capture_time, create_time
+            capture_time, create_time,sync_status
         ) VALUES (
                      #{id}, #{taskId}, #{fileSize}, #{fileMd5},
                      #{mediaUrl}, #{sourceUrl},
                      #{longitude}, #{latitude}, #{height},
-                     #{captureTime}, #{createTime}
+                     #{captureTime}, #{createTime},0
                  )
     </insert>
     <!-- 更新图片 -->
@@ -79,28 +64,20 @@
         UPDATE ard_media_pic
         SET
             media_url   = #{mediaUrl},
+            sync_status = #{syncStatus},
             update_time = #{updateTime}
         WHERE id = #{id} AND media_url IS NULL
     </update>
-
-    <!-- 批量插入图片 -->
-    <insert id="insertPicList">
-        INSERT INTO ard_media_pic (
-        id, task_id, file_size, file_md5,
-        media_url, source_url,
-        longitude, latitude, height,
-        capture_time, create_time
-        )
-        VALUES
-        <foreach collection="list" item="item" separator=",">
-            (
-            #{item.id}, #{item.taskId}, #{item.fileSize}, #{item.fileMd5},
-            #{item.mediaUrl}, #{item.sourceUrl},
-            #{item.longitude}, #{item.latitude}, #{item.height},
-            #{item.captureTime}, #{item.createTime}
-            )
-        </foreach>
-    </insert>
+    <!-- 标记为处理中 -->
+    <update id="markProcessing">
+        UPDATE ard_media_pic SET sync_status = 1 WHERE id = #{id} AND sync_status = 0
+    </update>
+    <!-- 更新同步状态 -->
+    <update id="updateSyncStatus">
+        UPDATE ard_media_pic
+        SET sync_status = #{status},update_time = NOW()
+        WHERE id = #{id}
+    </update>
 
     <delete id="deletePicById">
         DELETE FROM ard_media_pic WHERE id = #{id}

--
Gitblit v1.9.3