From c5ac97682e3b4ca748541ace97cb37a2295bd81e Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 19 三月 2026 22:46:29 +0800
Subject: [PATCH] feat: 增加GPS清理后台任务
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskAttachmentSyncServiceImpl.java | 125 ++++++++++++++++++++++++++++++++++++++++-
1 files changed, 120 insertions(+), 5 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskAttachmentSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskAttachmentSyncServiceImpl.java
index 4b4ea83..81bc722 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskAttachmentSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskAttachmentSyncServiceImpl.java
@@ -1,11 +1,10 @@
package com.ruoyi.system.service.impl;
-import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.config.LegacySystemConfig;
import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.system.domain.ImageData;
import com.ruoyi.system.domain.SysTaskAttachment;
+import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.file.FileUploadResponse;
import com.ruoyi.system.file.IFileUploadService;
import com.ruoyi.system.imagedata.IImageDataService;
@@ -15,7 +14,6 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.io.File;
@@ -29,12 +27,13 @@
* @author ruoyi
*/
@Service
-@DataSource(DataSourceType.SQLSERVER)
public class TaskAttachmentSyncServiceImpl implements ITaskAttachmentSyncService {
private static final Logger log = LoggerFactory.getLogger(TaskAttachmentSyncServiceImpl.class);
-
+ @Autowired
+ private SysTaskAttachmentMapper taskAttachmentMapper;
+
@Autowired
private IImageDataService imageDataService;
@@ -48,6 +47,21 @@
private RuoYiConfig ruoYiConfig;
+ /**
+ *妫�鏌ラ檮浠舵槸鍚﹀凡缁忎笂浼�
+ * @param taskId
+ * @param type 1 鐭ユ儏鍚屾剰涔�
+ * 2 鐥呬汉璧勬枡
+ * 3 鎿嶄綔璁板綍
+ * 4 鍑鸿溅鍓�
+ * 5 鍑鸿溅鍚�
+ * 6 绯诲畨鍏ㄥ甫
+ * @return Boolean
+ */
+ @Override
+ public Boolean checkAttachment(Long taskId, String type){
+ return taskAttachmentMapper.selectSysTaskAttachmentByTaskId(taskId).stream().anyMatch(attachment -> attachment.getAttachmentCategory().equals(type));
+ }
/**
* 鍚屾鍗曚釜闄勪欢鍒癐mageData
@@ -166,6 +180,107 @@
return null;
}
+ /**
+ * 鎵归噺鍚屾寰呭悓姝ョ殑浠诲姟闄勪欢鍒癐mageData
+ */
+ @Override
+ public int batchSyncPendingAttachments() {
+ log.info("寮�濮嬫墽琛屾壒閲忛檮浠跺悓姝ヤ换鍔�");
+
+ try {
+ // 鏌ヨ寰呭悓姝ョ殑闄勪欢鍒楄〃
+ List<SysTaskAttachment> pendingAttachments = taskAttachmentMapper.selectPendingSyncAttachments();
+
+ if (pendingAttachments == null || pendingAttachments.isEmpty()) {
+ log.info("娌℃湁寰呭悓姝ョ殑闄勪欢");
+ return 0;
+ }
+
+ log.info("鏌ヨ鍒� {} 涓緟鍚屾鐨勯檮浠�", pendingAttachments.size());
+
+ // 鎸変换鍔D鍒嗙粍鍚屾
+ int successCount = 0;
+ Long currentTaskId = null;
+ Long serviceOrderId = null;
+ Long dispatchOrdId = null;
+ Integer oaUserId = null;
+
+ for (SysTaskAttachment attachment : pendingAttachments) {
+ try {
+ // 濡傛灉鏄柊浠诲姟锛岄渶瑕佽幏鍙栦换鍔′俊鎭�
+ if (!attachment.getTaskId().equals(currentTaskId)) {
+ currentTaskId = attachment.getTaskId();
+ // 閫氳繃鑱旇〃鏌ヨ宸茬粡鍖呭惈浜嗕换鍔′俊鎭紝杩欓噷闇�瑕佸崟鐙煡璇�
+ SysTaskEmergency emergencyInfo = getEmergencyInfoByTaskId(currentTaskId);
+ if (emergencyInfo != null) {
+ serviceOrderId = emergencyInfo.getLegacyServiceOrdId();
+ dispatchOrdId = emergencyInfo.getLegacyDispatchOrdId();
+ // 鑾峰彇浠诲姟鍒涘缓浜虹殑OA鐢ㄦ埛ID
+ oaUserId = getCreatorOaUserId(currentTaskId);
+ } else {
+ log.warn("浠诲姟ID={} 鐨勬�ユ晳杞繍淇℃伅涓虹┖锛岃烦杩�", currentTaskId);
+ continue;
+ }
+ }
+
+ // 鍚屾鍗曚釜闄勪欢
+ Long imageDataId = syncAttachmentToImageData(attachment, serviceOrderId, dispatchOrdId, oaUserId);
+
+ if (imageDataId != null && imageDataId > 0) {
+ // 鏇存柊闄勪欢鍚屾鐘舵��
+ attachment.setSyncedToImageData(1);
+ attachment.setSyncTime(new Date());
+ attachment.setImageDataId(imageDataId);
+ taskAttachmentMapper.updateSysTaskAttachment(attachment);
+
+ successCount++;
+ log.info("闄勪欢ID={} 鍚屾鎴愬姛锛孖mageDataId={}",
+ attachment.getAttachmentId(), imageDataId);
+ }
+ } catch (Exception e) {
+ log.error("鍚屾闄勪欢ID={} 澶辫触", attachment.getAttachmentId(), e);
+ // 缁х画澶勭悊涓嬩竴涓檮浠�
+ }
+ }
+
+ log.info("闄勪欢鍚屾瀹屾垚锛屾垚鍔熷悓姝� {}/{} 涓檮浠�", successCount, pendingAttachments.size());
+ return successCount;
+
+ } catch (Exception e) {
+ log.error("鎵归噺闄勪欢鍚屾寮傚父", e);
+ return 0;
+ }
+ }
+
+ /**
+ * 鏍规嵁浠诲姟ID鑾峰彇鎬ユ晳杞繍淇℃伅
+ */
+ @Autowired
+ private com.ruoyi.system.mapper.SysTaskEmergencyMapper taskEmergencyMapper;
+
+ private SysTaskEmergency getEmergencyInfoByTaskId(Long taskId) {
+ return taskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+ }
+
+ /**
+ * 鑾峰彇浠诲姟鍒涘缓浜虹殑OA鐢ㄦ埛ID
+ */
+ @Autowired
+ private com.ruoyi.system.mapper.SysTaskMapper taskMapper;
+
+ @Autowired
+ private com.ruoyi.system.mapper.SysUserMapper userMapper;
+
+ private Integer getCreatorOaUserId(Long taskId) {
+ com.ruoyi.system.domain.SysTask task = taskMapper.selectSysTaskByTaskId(taskId);
+ if (task != null && task.getCreatorId() != null) {
+ com.ruoyi.common.core.domain.entity.SysUser user = userMapper.selectUserById(task.getCreatorId());
+ if (user != null) {
+ return user.getOaUserId();
+ }
+ }
+ return null;
+ }
/**
--
Gitblit v1.9.1