From 2f09efc660bf2cc94cbc5291ad25ca06fc9bdadf Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 24 一月 2026 22:03:09 +0800
Subject: [PATCH] feat: 增加OCR测试,车辆

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java |  107 +++++++++++++++++++++++++----------------------------
 1 files changed, 50 insertions(+), 57 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java
index d717e76..e30517b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java
@@ -1,14 +1,14 @@
 package com.ruoyi.system.service.impl;
 
 import com.ruoyi.common.config.LegacySystemConfig;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.LongUtil;
 import com.ruoyi.system.domain.DispatchOrd;
 import com.ruoyi.system.domain.SysTask;
 import com.ruoyi.system.domain.SysTaskEmergency;
 import com.ruoyi.system.domain.enums.TaskStatus;
 import com.ruoyi.system.mapper.SysTaskMapper;
-import com.ruoyi.system.service.IDispatchOrdService;
-import com.ruoyi.system.service.ISysTaskEmergencyService;
-import com.ruoyi.system.service.ITaskStatusSyncService;
+import com.ruoyi.system.service.*;
 import com.ruoyi.system.utils.TaskStatusConverter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,6 +35,9 @@
     
     @Autowired
     private SysTaskMapper sysTaskMapper;
+
+    @Autowired
+    private ISysTaskService taskService;
     
     @Autowired
     private ISysTaskEmergencyService sysTaskEmergencyService;
@@ -49,7 +52,6 @@
      * @return 鏄惁鍚屾鎴愬姛
      */
     @Override
-    @Transactional
     public boolean syncTaskStatusFromLegacy(Long taskId) {
         if (!legacyConfig.isEnabled()) {
             log.info("鏃х郴缁熷悓姝ュ凡绂佺敤锛岃烦杩囩姸鎬佸悓姝ワ紝浠诲姟ID: {}", taskId);
@@ -98,7 +100,9 @@
             return false;
         }
     }
-    
+
+    @Autowired
+    private IServiceOrderService serviceOrderService;
     /**
      * 鎵归噺鍚屾宸插悓姝ヨ皟搴﹀崟鐨勪换鍔$姸鎬侊紙浠庢棫绯荤粺鍒版柊绯荤粺锛�
      * 浣跨敤鍒嗛〉鏌ヨ锛屾壒閲忔煡璇QL Server鏁版嵁搴擄紝鍑忓皯缃戠粶璇锋眰娆℃暟
@@ -114,7 +118,7 @@
         
         try {
             int totalSuccessCount = 0;
-            int pageSize = 10; // 姣忛〉200鏉�
+            int pageSize = 10; // 姣忛〉10鏉�
             int offset = 0;
             
             while (true) {
@@ -129,69 +133,58 @@
 //                log.info("寮�濮嬪悓姝ョ姸鎬佺 {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, syncedTasks.size());
                 
                 // 2. 鎻愬彇璋冨害鍗旾D鍒楄〃
-                List<Long> dispatchOrdIDs = new ArrayList<>();
+
                 Map<Long, SysTaskEmergency> dispatchIdToTaskMap = new HashMap<>();
-                
+
+
                 for (SysTaskEmergency emergency : syncedTasks) {
                     Long dispatchOrdId = emergency.getLegacyDispatchOrdId();
-                    if (dispatchOrdId != null && dispatchOrdId > 0) {
-                        dispatchOrdIDs.add(dispatchOrdId);
-                        dispatchIdToTaskMap.put(dispatchOrdId, emergency);
+                    if (LongUtil.isNotEmpty(emergency.getTaskId())) {
+
+                        if(!dispatchIdToTaskMap.containsKey(dispatchOrdId)) {
+                            dispatchIdToTaskMap.put(emergency.getTaskId(), emergency);
+                        }
+                    }
+                    Long serviceOrdId = emergency.getLegacyServiceOrdId();
+                    if(LongUtil.isNotEmpty(serviceOrdId)){
+                        if(!dispatchIdToTaskMap.containsKey(emergency.getTaskId())) {
+                            dispatchIdToTaskMap.put(emergency.getTaskId(), emergency);
+                        }
                     }
                 }
                 
-                if (dispatchOrdIDs.isEmpty()) {
+                if (dispatchIdToTaskMap.size()<=0) {
 //                    log.warn("鏈〉娌℃湁鏈夋晥鐨勮皟搴﹀崟ID");
                     offset += pageSize;
                     continue;
                 }
                 
                 // 3. 鎵归噺鏌ヨ鏃х郴缁熻皟搴﹀崟鐘舵�侊紙鐩存帴鏌ヨSQL Server鏁版嵁搴擄級
-                List<DispatchOrd> dispatchOrds = dispatchOrdService.selectDispatchOrdStatesByIDs(dispatchOrdIDs);
-                
-                if (dispatchOrds == null || dispatchOrds.isEmpty()) {
-                    log.warn("鏈煡璇㈠埌鏃х郴缁熻皟搴﹀崟鐘舵��");
-                    offset += pageSize;
-                    continue;
-                }
-                
-                // 4. 鏋勫缓璋冨害鍗旾D鍒扮姸鎬佺殑鏄犲皠
-                Map<Long, Integer> dispatchIdToStateMap = new HashMap<>();
-                for (DispatchOrd dispatchOrd : dispatchOrds) {
-                    try {
-                        Long dispatchOrdId = Long.parseLong(dispatchOrd.getDispatchOrdID());
-                        Integer dispatchOrdState = Integer.parseInt(dispatchOrd.getDispatchOrdState());
-                        if (dispatchOrdState != null) {
-                            dispatchIdToStateMap.put(dispatchOrdId, dispatchOrdState);
+                dispatchIdToTaskMap.forEach((taskId, emergency) -> {
+                    Long dispatchOrdId = emergency.getLegacyDispatchOrdId();
+                    Long serviceOrdId = emergency.getLegacyServiceOrdId();
+                    if(LongUtil.isNotEmpty(dispatchOrdId)){
+                       Integer state =dispatchOrdService.selectDispatchOrdStateByID(dispatchOrdId);
+                        syncTaskStatusWithLegacyState(taskId, state);
+                    }
+                    else if(LongUtil.isNotEmpty(serviceOrdId)){
+                        try {
+                            Integer serviceOrdState = serviceOrderService.selectServiceOrderStateById(serviceOrdId);
+                            if (serviceOrdState == 4) {
+                                //鍙栨秷
+                                Map<String, Object> cancelInfo = serviceOrderService.selectCancelInfoById(serviceOrdId);
+                                String cancelReasonText = (String) cancelInfo.get("ServiceOrdCancelReasonTXT");
+                                String cancelReason = (String) cancelInfo.get("ServiceOrdCancelReason");
+                                taskService.saveCancel(taskId, cancelReason, cancelReasonText, DateUtils.getNowDate());
+                            }
+                        }catch (Exception ex){
+                            log.error("鏌ヨ鏃х郴缁熺姸鎬佸け璐ワ紝浠诲姟ID: {}, ServiceOrdID: {}", taskId, serviceOrdId);
                         }
-                    } catch (NumberFormatException e) {
-                        log.error("瑙f瀽璋冨害鍗旾D澶辫触: {}", dispatchOrd.getDispatchOrdID(), e);
+
+//                        syncTaskStatusWithLegacyState(taskId, state);
                     }
-                }
-                
-                // 5. 閬嶅巻浠诲姟锛屽悓姝ョ姸鎬�
-                int pageSuccessCount = 0;
-                for (Map.Entry<Long, SysTaskEmergency> entry : dispatchIdToTaskMap.entrySet()) {
-                    Long dispatchOrdId = entry.getKey();
-                    SysTaskEmergency emergency = entry.getValue();
-                    
-                    // 鑾峰彇鏃х郴缁熺姸鎬�
-                    Integer legacyStatus = dispatchIdToStateMap.get(dispatchOrdId);
-                    if (legacyStatus == null) {
-//                        log.warn("鏈壘鍒拌皟搴﹀崟鐘舵�侊紝DispatchOrdID: {}", dispatchOrdId);
-                        continue;
-                    }
-                    
-                    // 鍚屾鍗曚釜浠诲姟鐘舵��
-                    boolean result = syncTaskStatusWithLegacyState(emergency.getTaskId(), legacyStatus);
-                    if (result) {
-                        pageSuccessCount++;
-                    }
-                }
-                
-                totalSuccessCount += pageSuccessCount;
-//                log.info("鐘舵�佺 {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}",
-//                    (offset / pageSize) + 1, syncedTasks.size(), pageSuccessCount);
+                });
+
 //
                 // 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
                 if (syncedTasks.size() < pageSize) {
@@ -219,7 +212,6 @@
      * @param legacyStatus 鏃х郴缁熺姸鎬佺爜
      * @return 鏄惁鎴愬姛
      */
-    @Transactional
     private boolean syncTaskStatusWithLegacyState(Long taskId, Integer legacyStatus) {
         try {
             // 鏌ヨ浠诲姟淇℃伅
@@ -239,7 +231,7 @@
             
             // 妫�鏌ョ姸鎬佹槸鍚﹀彉鍖�
             if (newStatus.getCode().equals(task.getTaskStatus())) {
-                log.debug("浠诲姟鐘舵�佹湭鍙樺寲锛屼换鍔D: {}, 褰撳墠鐘舵��: {}", taskId, newStatus.getInfo());
+                log.debug("鍙樺寲锛屼换鍔D: {}, 褰撳墠鐘舵��: {}", taskId, newStatus.getInfo());
                 return true;
             }
             
@@ -281,6 +273,7 @@
                 default:
                     break;
             }
+
             
             sysTaskMapper.updateSysTask(task);
             

--
Gitblit v1.9.1