From 668e570bd1db6bd00e4293b6977e6d3d051053ce Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 27 十一月 2025 00:07:46 +0800
Subject: [PATCH] feat: 修改app录入界面及车辆用户同步

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskAttachmentSyncServiceImpl.java |  107 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 105 insertions(+), 2 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..19ceac4 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
@@ -6,6 +6,7 @@
 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;
@@ -29,12 +30,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;
     
@@ -166,6 +168,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