From 5f2ee03958a1a16dc27195c76ea7cffb422c95d1 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期五, 19 十二月 2025 22:40:34 +0800
Subject: [PATCH] feat: 任务修改接口,删除一些不要的字段同步

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java |  964 ++++++++------------------------------------------------
 1 files changed, 143 insertions(+), 821 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java
index db1fa94..f78b7ff 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java
@@ -1,39 +1,20 @@
 package com.ruoyi.system.service.impl;
 
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
+import com.ruoyi.common.utils.LongUtil;
 import com.ruoyi.system.domain.*;
+import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.*;
 import com.ruoyi.system.task.ITaskAttachmentService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import com.ruoyi.common.config.LegacySystemConfig;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.system.domain.vo.TaskCreateVO;
-import com.ruoyi.system.mapper.SysTaskMapper;
-import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
-import com.ruoyi.system.mapper.SysTaskVehicleMapper;
-import com.ruoyi.system.mapper.SysTaskAssigneeMapper;
-import com.ruoyi.system.mapper.VehicleInfoMapper;
-import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.mapper.SysDeptMapper;
-import com.ruoyi.system.utils.TaskStatusConverter;
 
 /**
  * 鏃х郴缁熷悓姝ervice涓氬姟灞傚鐞�
@@ -51,6 +32,9 @@
     
     @Autowired
     private SysTaskMapper sysTaskMapper;
+    
+    @Autowired
+    private SysTaskEmergencyMapper sysTaskEmergencyMapper;
     
     @Autowired
     private SysUserMapper sysUserMapper;
@@ -81,103 +65,30 @@
 
     @Autowired
     private ITaskAttachmentService taskAttachmentService;
+
+
+    @Autowired
+    private ApplicationEventPublisher eventPublisher;
     
-    /**
-     * 鍚屾鎬ユ晳杞繍浠诲姟鍒版棫绯荤粺
-     */
+    @Autowired
+    private LegacyTransferSyncMapper legacyTransferSyncMapper;
+
+
+    @Autowired
+    private TaskEmergencySyncService taskEmergencySyncService;
+
+
+    @Autowired
+    private ITaskDispatchSyncService taskDispatchSyncService;
+
+
+
+
     @Override
-    @Transactional
     public Long syncEmergencyTaskToLegacy(Long taskId) {
-        if (!legacyConfig.isEnabled()) {
-            log.info("鏃х郴缁熷悓姝ュ凡绂佺敤锛岃烦杩囦换鍔D: {}", taskId);
-            return null;
-        }
-        
-        try {
-            // 鏌ヨ浠诲姟淇℃伅
-            SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
-            if (task == null) {
-                log.error("浠诲姟涓嶅瓨鍦紝浠诲姟ID: {}", taskId);
-                return null;
-            }
-            
-            // 鍙悓姝ユ�ユ晳杞繍浠诲姟
-            if (!"EMERGENCY_TRANSFER".equals(task.getTaskType())) {
-                log.info("闈炴�ユ晳杞繍浠诲姟锛岃烦杩囧悓姝ワ紝浠诲姟ID: {}", taskId);
-                return null;
-            }
-            
-            // 鏌ヨ鎬ユ晳杞繍鎵╁睍淇℃伅
-            SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
-            if (emergency == null) {
-                log.error("鎬ユ晳杞繍鎵╁睍淇℃伅涓嶅瓨鍦紝浠诲姟ID: {}", taskId);
-                return null;
-            }
-            
-            // 濡傛灉宸茬粡鍚屾杩囷紝涓嶅啀閲嶅鍚屾
-            if (emergency.getLegacyServiceOrdId() != null && emergency.getLegacyServiceOrdId() > 0) {
-                log.info("浠诲姟宸插悓姝ヨ繃锛屼换鍔D: {}, ServiceOrdID: {}", taskId, emergency.getLegacyServiceOrdId());
-                return emergency.getLegacyServiceOrdId();
-            }
-            
-            // 鏇存柊鍚屾鐘舵�佷负鍚屾涓�
-            emergency.setSyncStatus(1);
-            sysTaskEmergencyService.updateSysTaskEmergency(emergency);
-            
-            // 鏋勫缓璇锋眰鍙傛暟
-            Map<String, String> params = buildSyncParams(task, emergency);
-            
-            // 鍙戦�丠TTP璇锋眰
-            String response = sendHttpPost(legacyConfig.getEmergencyCreateUrl(), params);
-            
-            // 瑙f瀽鍝嶅簲
-            Long serviceOrdId = parseResponse(response);
-            
-            if (serviceOrdId != null && serviceOrdId > 0) {
-                // 鍚屾鎴愬姛锛屾洿鏂拌褰�
-                emergency.setLegacyServiceOrdId(serviceOrdId);
-                emergency.setSyncStatus(2); // 鍚屾鎴愬姛
-                emergency.setSyncTime(new Date());
-                emergency.setSyncErrorMsg(null);
-                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
-                
-                // 鏇存柊浠诲姟涓昏〃鍚屾鏍囪
-                task.setLegacySynced(1);
-                sysTaskMapper.updateSysTask(task);
-                
-                log.info("浠诲姟鍚屾鎴愬姛锛屼换鍔D: {}, ServiceOrdID: {}", taskId, serviceOrdId);
-                return serviceOrdId;
-            } else {
-                // 鍚屾澶辫触
-                emergency.setSyncStatus(3); // 鍚屾澶辫触
-                emergency.setSyncTime(new Date());
-                emergency.setSyncErrorMsg("鏃х郴缁熻繑鍥炴棤鏁堢殑ServiceOrdID: " + response);
-                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
-                
-                log.error("浠诲姟鍚屾澶辫触锛屼换鍔D: {}, 鍝嶅簲: {}", taskId, response);
-                return null;
-            }
-            
-        } catch (Exception e) {
-            log.error("鍚屾浠诲姟鍒版棫绯荤粺寮傚父锛屼换鍔D: {}", taskId, e);
-            
-            // 鏇存柊鍚屾鐘舵�佷负澶辫触
-            try {
-                SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
-                if (emergency != null) {
-                    emergency.setSyncStatus(3); // 鍚屾澶辫触
-                    emergency.setSyncTime(new Date());
-                    emergency.setSyncErrorMsg("鍚屾寮傚父: " + e.getMessage());
-                    sysTaskEmergencyService.updateSysTaskEmergency(emergency);
-                }
-            } catch (Exception ex) {
-                log.error("鏇存柊鍚屾鐘舵�佸け璐�", ex);
-            }
-            
-            return null;
-        }
+        return taskEmergencySyncService.syncEmergency(taskId);
     }
-    
+
     /**
      * 鎵归噺鍚屾鏈悓姝ョ殑鎬ユ晳杞繍浠诲姟
      * 浣跨敤鍒嗛〉鏌ヨ锛岀‘淇濇墍鏈夌鍚堟潯浠剁殑浠诲姟閮借兘琚悓姝�
@@ -203,12 +114,12 @@
                     break; // 娌℃湁鏇村鏁版嵁锛岄��鍑哄惊鐜�
                 }
                 
-                log.info("寮�濮嬪悓姝ョ {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, pendingTasks.size());
+//                log.info("寮�濮嬪悓姝ョ {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, pendingTasks.size());
                 
                 int pageSuccessCount = 0;
                 for (SysTaskEmergency emergency : pendingTasks) {
                     Long serviceOrdId = syncEmergencyTaskToLegacy(emergency.getTaskId());
-                    if (serviceOrdId != null && serviceOrdId > 0) {
+                    if (LongUtil.isNotEmpty(serviceOrdId)) {
                         pageSuccessCount++;
                     }
                     
@@ -223,19 +134,19 @@
                 }
                 
                 totalSuccessCount += pageSuccessCount;
-                log.info("绗� {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}", 
-                    (offset / pageSize) + 1, pendingTasks.size(), pageSuccessCount);
+//                log.info("绗� {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}",
+//                    (offset / pageSize) + 1, pendingTasks.size(), pageSuccessCount);
                 
                 // 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
                 if (pendingTasks.size() < pageSize) {
-                    log.info("宸插埌杈炬渶鍚庝竴椤碉紝鍚屾缁撴潫");
+//                    log.info("宸插埌杈炬渶鍚庝竴椤碉紝鍚屾缁撴潫");
                     break;
                 }
                 
                 offset += pageSize; // 涓嬩竴椤�
             }
             
-            log.info("鎵归噺鍚屾瀹屾垚锛屾�绘垚鍔熸暟: {}", totalSuccessCount);
+//            log.info("鎵归噺鍚屾瀹屾垚锛屾�绘垚鍔熸暟: {}", totalSuccessCount);
             return totalSuccessCount;
             
         } catch (Exception e) {
@@ -247,8 +158,7 @@
     /**
      * 閲嶆柊鍚屾澶辫触鐨勪换鍔�
      */
-    @Override
-    @Transactional
+    @Override    
     public boolean retrySyncTask(Long taskId) {
         try {
             // 閲嶇疆鍚屾鐘舵��
@@ -262,12 +172,17 @@
             
             // 閲嶆柊鍚屾
             Long serviceOrdId = syncEmergencyTaskToLegacy(taskId);
-            return serviceOrdId != null && serviceOrdId > 0;
+            return LongUtil.isNotEmpty(serviceOrdId);
             
         } catch (Exception e) {
             log.error("閲嶆柊鍚屾浠诲姟澶辫触锛屼换鍔D: {}", taskId, e);
             return false;
         }
+    }
+
+    @Override
+    public Long syncDispatchOrderToLegacy(Long taskId) {
+        return taskDispatchSyncService.syncDispatch(taskId);
     }
 
 
@@ -290,117 +205,17 @@
             }
         });
     }
-    /**
-     * 鍚屾璋冨害鍗曞埌鏃х郴缁燂紙admin_save_24.asp锛�
-     */
+
+
     @Override
-    @Transactional
-    public Long syncDispatchOrderToLegacy(Long taskId) {
-        if (!legacyConfig.isEnabled()) {
-            log.info("鏃х郴缁熷悓姝ュ凡绂佺敤锛岃烦杩囪皟搴﹀崟鍚屾锛屼换鍔D: {}", taskId);
-            return null;
-        }
-        
-        try {
-            // 鏌ヨ浠诲姟淇℃伅
-            SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
-            if (task == null) {
-                log.error("浠诲姟涓嶅瓨鍦紝浠诲姟ID: {}", taskId);
-                return null;
-            }
-            
-            // 鍙悓姝ユ�ユ晳杞繍浠诲姟
-            if (!"EMERGENCY_TRANSFER".equals(task.getTaskType())) {
-                log.info("闈炴�ユ晳杞繍浠诲姟锛岃烦杩囪皟搴﹀崟鍚屾锛屼换鍔D: {}", taskId);
-                return null;
-            }
-            
-            // 鏌ヨ鎬ユ晳杞繍鎵╁睍淇℃伅
-            SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
-            if (emergency == null) {
-                log.error("鎬ユ晳杞繍鎵╁睍淇℃伅涓嶅瓨鍦紝浠诲姟ID: {}", taskId);
-                return null;
-            }
-            
-            // 濡傛灉宸茬粡鍚屾杩囷紝涓嶅啀閲嶅鍚屾
-            if (emergency.getLegacyDispatchOrdId() != null && emergency.getLegacyDispatchOrdId() > 0) {
-                log.info("璋冨害鍗曞凡鍚屾杩囷紝浠诲姟ID: {}, DispatchOrdID: {}", taskId, emergency.getLegacyDispatchOrdId());
-                return emergency.getLegacyDispatchOrdId();
-            }
-
-            Long serviceOrdId=emergency.getLegacyServiceOrdId();
-            // 蹇呴』鍏堝悓姝ユ湇鍔″崟
-            if (serviceOrdId == null || serviceOrdId <= 0) {
-                log.warn("鏈嶅姟鍗曟湭鍚屾锛屾棤娉曞悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", taskId);
-                return null;
-            }
-
-
-
-
-            // 鏇存柊鍚屾鐘舵�佷负鍚屾涓�
-            emergency.setDispatchSyncStatus(1);
-            sysTaskEmergencyService.updateSysTaskEmergency(emergency);
-
-            SysUser u=sysUserMapper.selectUserById(task.getCreatorId());
-            Integer oaUserID= u.getOaUserId();
-            
-            // 鏋勫缓璇锋眰鍙傛暟
-            Map<String, String> params = buildDispatchOrderParams(task, emergency);
-            
-            // 鍙戦�丠TTP璇锋眰
-            String response = sendHttpPost(legacyConfig.getDispatchCreateUrl(), params);
-            
-            // 瑙f瀽鍝嶅簲
-            Long dispatchOrdId = parseResponse(response);
-            
-            if (dispatchOrdId != null && dispatchOrdId > 0) {
-                // 鍚屾鎴愬姛锛屾洿鏂拌褰�
-                emergency.setLegacyDispatchOrdId(dispatchOrdId);
-                emergency.setDispatchSyncStatus(2); // 鍚屾鎴愬姛
-                emergency.setDispatchSyncTime(new Date());
-                emergency.setDispatchSyncErrorMsg(null);
-                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
-
-                List<SysTaskAttachment> taskAttachments= sysTaskService.getAttachmentsByTaskId(taskId);
-                if (taskAttachments != null && !taskAttachments.isEmpty()) {
-                    //鍚屾闄勪欢
-                   this.syncAttachmentToLegacy(taskAttachments,serviceOrdId,dispatchOrdId,oaUserID);
-                }
-
-                log.info("璋冨害鍗曞悓姝ユ垚鍔燂紝浠诲姟ID: {}, DispatchOrdID: {}", taskId, dispatchOrdId);
-                return dispatchOrdId;
-            } else {
-                // 鍚屾澶辫触
-                emergency.setDispatchSyncStatus(3); // 鍚屾澶辫触
-                emergency.setDispatchSyncTime(new Date());
-                emergency.setDispatchSyncErrorMsg("鏃х郴缁熻繑鍥炴棤鏁堢殑DispatchOrdID: " + response);
-                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
-                
-                log.error("璋冨害鍗曞悓姝ュけ璐ワ紝浠诲姟ID: {}, 鍝嶅簲: {}", taskId, response);
-                return null;
-            }
-            
-        } catch (Exception e) {
-            log.error("鍚屾璋冨害鍗曞埌鏃х郴缁熷紓甯革紝浠诲姟ID: {}", taskId, e);
-            
-            // 鏇存柊鍚屾鐘舵�佷负澶辫触
-            try {
-                SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
-                if (emergency != null) {
-                    emergency.setDispatchSyncStatus(3); // 鍚屾澶辫触
-                    emergency.setDispatchSyncTime(new Date());
-                    emergency.setDispatchSyncErrorMsg("鍚屾寮傚父: " + e.getMessage());
-                    sysTaskEmergencyService.updateSysTaskEmergency(emergency);
-                }
-            } catch (Exception ex) {
-                log.error("鏇存柊璋冨害鍗曞悓姝ョ姸鎬佸け璐�", ex);
-            }
-            
-            return null;
+    public void syncTaskAttachment(Long taskId, Long dispatchOrdId, Long serviceOrdId, Integer oaUserID){
+        List<SysTaskAttachment> taskAttachments= sysTaskService.getAttachmentsByTaskId(taskId);
+        if (taskAttachments != null && !taskAttachments.isEmpty()) {
+            //鍚屾闄勪欢
+            this.syncAttachmentToLegacy(taskAttachments,serviceOrdId,dispatchOrdId,oaUserID);
         }
     }
-    
+
     /**
      * 鎵归噺鍚屾鏈悓姝ョ殑璋冨害鍗�
      * 浣跨敤鍒嗛〉鏌ヨ锛岀‘淇濇墍鏈夌鍚堟潯浠剁殑浠诲姟閮借兘琚悓姝�
@@ -420,17 +235,17 @@
             while (true) {
                 // 鍒嗛〉鏌ヨ宸插悓姝ユ湇鍔″崟浣嗘湭鍚屾璋冨害鍗曠殑浠诲姟
                 List<SysTaskEmergency> pendingTasks = sysTaskEmergencyService.selectPendingDispatchSyncTasks(offset, pageSize);
-                log.info("鏌ヨ鍒版湭鍚屾璋冨害鍗曠殑浠诲姟鏁伴噺: {}", pendingTasks.size());
+//                log.info("鏌ヨ鍒版湭鍚屾璋冨害鍗曠殑浠诲姟鏁伴噺: {}", pendingTasks.size());
                 if (pendingTasks == null || pendingTasks.isEmpty()) {
                     log.info("娌℃湁鏇村闇�瑕佸悓姝ヨ皟搴﹀崟鐨勪换鍔★紝offset: {}", offset);
                     break; // 娌℃湁鏇村鏁版嵁锛岄��鍑哄惊鐜�
                 }
                 
-                log.info("寮�濮嬪悓姝ヨ皟搴﹀崟绗� {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, pendingTasks.size());
+//                log.info("寮�濮嬪悓姝ヨ皟搴﹀崟绗� {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, pendingTasks.size());
                 
                 int pageSuccessCount = 0;
                 for (SysTaskEmergency emergency : pendingTasks) {
-                    log.info("寮�濮嬪悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", emergency.getTaskId());
+//                    log.info("寮�濮嬪悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", emergency.getTaskId());
                     Long dispatchOrdId = syncDispatchOrderToLegacy(emergency.getTaskId());
 
                     if (dispatchOrdId != null && dispatchOrdId > 0) {
@@ -448,19 +263,19 @@
                 }
                 
                 totalSuccessCount += pageSuccessCount;
-                log.info("璋冨害鍗曠 {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}", 
-                    (offset / pageSize) + 1, pendingTasks.size(), pageSuccessCount);
+//                log.info("璋冨害鍗曠 {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}",
+//                    (offset / pageSize) + 1, pendingTasks.size(), pageSuccessCount);
                 
                 // 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
                 if (pendingTasks.size() < pageSize) {
-                    log.info("宸插埌杈炬渶鍚庝竴椤碉紝璋冨害鍗曞悓姝ョ粨鏉�");
+//                    log.info("宸插埌杈炬渶鍚庝竴椤碉紝璋冨害鍗曞悓姝ョ粨鏉�");
                     break;
                 }
                 
                 offset += pageSize; // 涓嬩竴椤�
             }
             
-            log.info("鎵归噺鍚屾璋冨害鍗曞畬鎴愶紝鎬绘垚鍔熸暟: {}", totalSuccessCount);
+//            log.info("鎵归噺鍚屾璋冨害鍗曞畬鎴愶紝鎬绘垚鍔熸暟: {}", totalSuccessCount);
             return totalSuccessCount;
             
         } catch (Exception e) {
@@ -468,598 +283,105 @@
             return 0;
         }
     }
-    
-    /**
-     * 鏋勫缓璋冨害鍗曞悓姝ュ弬鏁�
-     */
-    private Map<String, String> buildDispatchOrderParams(SysTask task, SysTaskEmergency emergency) {
-        Map<String, String> params = new HashMap<>();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        
-        // 鑾峰彇绠$悊鍛業D锛堝垱寤轰汉ID瀵瑰簲鐨凮A_UserID锛�
-        String adminID = this.getAdminID(task);
-        
-        // 鑾峰彇璋冨害鍗曠被鍨嬶紙浠庝换鍔℃墍灞為儴闂ㄧ殑璋冨害鍗曠紪鐮佽幏鍙栵級
-        String dispatchOrdClass = "SA"; // 榛樿鍊�
-        if (task.getDeptId() != null) {
-            try {
-                SysDept dept = sysDeptMapper.selectDeptById(task.getDeptId());
-                if (dept != null && StringUtils.isNotEmpty(dept.getDispatchOrderClass())) {
-                    dispatchOrdClass = dept.getDispatchOrderClass();
-                    log.info("鑾峰彇浠诲姟鎵�灞為儴闂ㄧ殑璋冨害鍗曠紪鐮佹垚鍔燂紝閮ㄩ棬ID: {}, 璋冨害鍗曠紪鐮�: {}", task.getDeptId(), dispatchOrdClass);
-                }
-            } catch (Exception e) {
-                log.error("鏌ヨ浠诲姟鎵�灞為儴闂ㄤ俊鎭紓甯革紝閮ㄩ棬ID: {}", task.getDeptId(), e);
+
+    @Override
+    public boolean resyncDispatchOrderToLegacy(Long taskId) {
+        SysTaskEmergency emergency=sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
+        Long dispatchOrderId = emergency.getLegacyDispatchOrdId();
+        if(LongUtil.isEmpty(dispatchOrderId)){
+            Long serviceOrderId= taskEmergencySyncService.syncEmergency(taskId);
+            if(LongUtil.isNotEmpty(serviceOrderId)) {
+                emergency.setNeedResync(0);
+//                emergency.setSyncStatus(2);
+                emergency.setSyncTime(new Date());
+                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+                return true;
             }
-        }
-        params.put("AdminID", adminID);
-        
-        // 鍩烘湰淇℃伅
-        params.put("DispatchOrdClass", dispatchOrdClass);
-        params.put("ServiceOrdID", emergency.getLegacyServiceOrdId().toString());
-        params.put("DispatchOrdState", "1"); // 璋冨害鍗曠姸鎬�
-        
-        // 鏃堕棿淇℃伅
-        if (task.getPlannedStartTime() != null) {
-            params.put("DispatchOrdTraSDTime", sdf.format(task.getPlannedStartTime())); // 鎷熷嚭鍙戞椂闂�
-        } else {
-            params.put("DispatchOrdTraSDTime", "");
-        }
-        params.put("DispatchOrd_NS_Time", task.getCreateTime() != null ? sdf.format(task.getCreateTime()) : sdf.format(new Date())); // 寮�鍗曟椂闂�
-        
-        // 杞﹁締淇℃伅 - 浠庝换鍔″叧鑱旂殑杞﹁締鑾峰彇CarID
-        Long carId = getTaskVehicleCarId(task.getTaskId());
-        params.put("DispatchOrdCarID", carId.toString());
-        
-        // 鑱旂郴浜轰俊鎭�
-        params.put("DispatchOrdCoName", StringUtils.nvl(emergency.getPatientContact(), ""));
-        params.put("DispatchOrdCoPhone", StringUtils.nvl(emergency.getPatientPhone(), ""));
-        params.put("ServiceOrdCoName", StringUtils.nvl(emergency.getPatientContact(), ""));
-        params.put("ServiceOrdCoPhone", StringUtils.nvl(emergency.getPatientPhone(), ""));
-        
-        // 鍦板潃淇℃伅
-        params.put("DispatchOrdTraStreet", StringUtils.nvl(task.getDepartureAddress(), StringUtils.nvl(emergency.getHospitalOutAddress(), "")));
-        params.put("DispatchOrdTraEnd", StringUtils.nvl(task.getDestinationAddress(), StringUtils.nvl(emergency.getHospitalInAddress(), "")));
-        params.put("DispatchOrdTraVia", ""); // 瀹為檯閫旂粡鍦�
-        
-        // 鎿嶄綔鍛戒护
-        params.put("DispatchOrd_Check", "0"); // 3=鐩存帴寮哄埗瀹屾垚
-        
-        // 缁╂晥鍜岃垂鐢�
-        params.put("DispatchOrdPerfomance", emergency.getTransferPrice() != null ? emergency.getTransferPrice().toString() : "0");
-        params.put("StretcherMoney", "0"); // 鎶媴鏋惰垂
-        params.put("AddMoneyType", ""); // 闄勫姞椤圭洰
-        params.put("AddMoney", "0"); // 闄勫姞椤圭洰璐圭敤
-        params.put("AddMoneyExplain", ""); // 闄勫姞椤圭洰璇存槑
-        
-        // 浜哄憳淇℃伅
-        params.put("EntourageName_aid1", ""); // 澶栨彺浜哄憳1
-        params.put("EntourageName_aid2", ""); // 澶栨彺浜哄憳2
-        params.put("DispatchOrd_NS_ID", adminID); // 璋冨害浜哄憳ID
-        params.put("RecommendedCar", ""); // 鎸囧畾杞﹀瀷
-        params.put("ServiceOrdTaskRemarks", StringUtils.nvl(task.getTaskDescription(), "")); // 鍖绘姢鍙稿娉�
-        
-        // 鐢佃瘽淇℃伅
-        params.put("Phone", StringUtils.nvl(emergency.getPatientPhone(), ""));
-        params.put("TEL_Time", sdf.format(new Date()));
-        params.put("TEL_Remarks", "鏂扮郴缁熷悓姝ュ垱寤鸿皟搴﹀崟");
-        
-        // 鏃堕暱淇℃伅
-        params.put("TimeLength_Program", "0"); // 澶у瀷娲诲姩淇濋殰鏃堕暱
-        params.put("TimeLength_ICU", "0"); // 灞呭ICU鏃堕暱
-        params.put("TimeLength_Wait", "0"); // 绛夊緟鏃堕暱
-        
-        // 閲岀▼鏁�
-        params.put("DispatchOrdTraStreetMileage", ""); // 寮�濮嬮噷绋嬫暟
-        params.put("DispatchOrdTraEndMileage", ""); // 缁撴潫閲岀▼鏁�
-        
-        // 鏈嶅姟鍗曠浉鍏充俊鎭紙浠巃dmin_save_24.gds 221-255琛岃ˉ鍏咃級
-        params.put("ServiceOrdPtCondition", StringUtils.nvl(emergency.getPatientCondition(), "")); // 鐥呮儏鎻忚堪
-        params.put("ServiceOrdPtDoctor", ""); // 鎮h�呭尰鐢�
-        params.put("ServiceOrdPtDoctorPhone", ""); // 鎮h�呭尰鐢熺數璇�
-        params.put("TransferModeID", ""); // 杞繍鏂瑰紡
-        params.put("ServiceOrdVIP", "0"); // VIP瀹㈡埛
-        params.put("ServiceOrdTraTxnPrice", emergency.getTransferPrice() != null ? emergency.getTransferPrice().toString() : "0"); // 鎴愪氦浠�
-        params.put("ServiceOrdTraPrePayment", "0"); // 闇�棰勪粯娆�
-        params.put("SettlementPrice", "0"); // 缁撶畻浠�
-        params.put("ServiceOrdTraPriceReason", ""); // 宸环鍘熷洜
-        params.put("ServiceOrd_CC_ID", ""); // 瀹㈡湇浜哄憳ID
-        params.put("ServiceOrd_Sale_ID", ""); // 閿�鍞汉鍛業D
-        params.put("ServiceOrdIntroducer", ""); // 浠嬬粛浜�
-        params.put("ServiceOrd_work_ID", ""); // 涓昏浼佸井瀹㈡湇ID
-        params.put("ServiceOrd_work_IDs", ""); // 鍏朵粬浼佸井瀹㈡湇ID
-        params.put("ServiceOrd_work_is", "0"); // 鏄惁浼佸井鎴愪氦
-        params.put("CommissionScenarioID", "0"); // 浼佸井缁╂晥鏂规
-        params.put("ServiceOrdApptDate", task.getPlannedStartTime() != null ? sdf.format(task.getPlannedStartTime()) : ""); // 棰勭害鏃堕棿
-        params.put("ServiceOrdPtDiagnosis", ""); // 璇婃柇
-        params.put("ServiceOrdOperationRemarks", "鏂扮郴缁熷悓姝ュ垱寤�"); // 鎿嶄綔澶囨敞
-        params.put("ServiceOrdEstimatedOrderDate", ""); // 棰勮娲惧崟鏃堕棿
-        params.put("ServiceOrdEstimatedOrderDateOld", ""); // 鍘熼璁℃淳鍗曟椂闂�
-        params.put("ServiceOrdViaDistance", "0"); // 涓�旇窛绂�
-        params.put("ServiceOrdTraDistance", emergency.getTransferDistance() != null ? emergency.getTransferDistance().toString() : "0"); // 璺濈
-        params.put("OrderLevel", "0"); // 鏌ョ湅绛夌骇
-        params.put("ServiceOrdDepartureType", "1"); // 棰勭害绫诲瀷
-        params.put("ConditionLevel", "0"); // 鐥呴噸绾у埆
-        params.put("DirectionType", "0"); // 杞繍鍘诲悜
-        params.put("ServiceOrdPtOutHospID", emergency.getHospitalOutId() != null ? emergency.getHospitalOutId().toString() : "0"); // 杞嚭鍖婚櫌ID
-        params.put("ServiceOrdPtInHospID", emergency.getHospitalInId() != null ? emergency.getHospitalInId().toString() : "0"); // 杞叆鍖婚櫌ID
-        params.put("ServiceOrdPtOutHosp", StringUtils.nvl(emergency.getHospitalOutName(), "")); // 杞嚭鍖婚櫌
-        params.put("ServiceOrdTraVia", StringUtils.nvl(task.getDepartureAddress(), StringUtils.nvl(emergency.getHospitalOutAddress(), ""))); // 杞嚭鍦板潃
-        params.put("ServiceOrdPtInHosp", StringUtils.nvl(emergency.getHospitalInName(), "")); // 杞叆鍖婚櫌
-        params.put("ServiceOrdTraEnd", StringUtils.nvl(task.getDestinationAddress(), StringUtils.nvl(emergency.getHospitalInAddress(), ""))); // 杞叆鍦板潃
-        params.put("FromHQ2_is", "0"); // 骞垮窞鎬婚儴鎺ㄩ�佷换鍔℃爣璁�
-        
-        // 鐥呮儏ID鍒楄〃锛圛CD-10鐤剧梾ID锛岀敤浜庤瘖鏂璉CD锛�
-        // 鏍煎紡锛氶�楀彿鍒嗛殧鐨処D鍒楄〃锛屽 ",1,2,3,"
-        String ordIcdId = "";
-        if (StringUtils.isNotEmpty(emergency.getDiseaseIds())) {
-            // 灏嗗瓨鍌ㄧ殑 "1,2,3" 鏍煎紡杞崲涓烘棫绯荤粺瑕佹眰鐨� ",1,2,3," 鏍煎紡
-            ordIcdId = "," + emergency.getDiseaseIds() + ",";
-            log.info("鐥呮儏ID鍒楄〃宸茶缃紝浠诲姟ID: {}, OrdICD_ID: {}", task.getTaskId(), ordIcdId);
-        }
-        params.put("OrdICD_ID", ordIcdId);
-        params.put("OrdICD_ID_old", ""); // 鏃х梾鎯匢D鍒楄〃锛堢敤浜庡姣旀槸鍚﹂渶瑕佹洿鏂帮級
-        
-        // 鎵ц浜哄憳淇℃伅锛堥殢琛屼汉鍛橈級
-        syncTaskAssignees(task, params);
-        
-        return params;
-    }
-    
-    /**
-     * 鍚屾浠诲姟鎵ц浜哄憳淇℃伅鍒拌皟搴﹀崟闅忚浜哄憳鍙傛暟
-     * 
-     * @param task 浠诲姟淇℃伅
-     * @param params 璋冨害鍗曞弬鏁癕ap
-     */
-    private void syncTaskAssignees(SysTask task, Map<String, String> params) {
-        try {
-            // 鑾峰彇浠诲姟鐨勬墽琛屼汉鍛樹俊鎭垪琛紙鍖呭惈瑙掕壊绫诲瀷锛�
-            List<TaskCreateVO.AssigneeInfo> assignees = getTaskAssignees(task.getTaskId());
-            
-            if (assignees == null || assignees.isEmpty()) {
-                log.warn("浠诲姟鏃犳墽琛屼汉鍛橈紝浠诲姟ID: {}", task.getTaskId());
-                // 璁剧疆榛樿绌哄��
-                params.put("EntourageLeadID", "");
-                params.put("Entourage_1", ""); // 鍙告満
-                params.put("Entourage_3", ""); // 鍖荤敓
-                params.put("Entourage_4", ""); // 鎶ゅ+
-                return;
-            }
-            
-            String leadEntourageId = ""; // 棰嗛槦鐨凟ntourageID
-            String driverOaId = "";      // 鍙告満鐨凮A_UserID
-            String doctorOaId = "";      // 鍖荤敓鐨凮A_UserID
-            String nurseOaId = "";       // 鎶ゅ+鐨凮A_UserID
-            
-            // 閬嶅巻鎵ц浜哄憳锛屾牴鎹鑹茬被鍨嬪垎閰嶅埌瀵瑰簲鐨凟ntourage鍙傛暟
-            for (int i = 0; i < assignees.size(); i++) {
-                TaskCreateVO.AssigneeInfo assignee = assignees.get(i);
-                Long userId = assignee.getUserId();
-                String userType = assignee.getUserType(); // 鐩存帴浣跨敤鍓嶇浼犻�掔殑瑙掕壊绫诲瀷
-                
-                if (userId == null) {
-                    continue;
-                }
-                
-                // 鏌ヨ鐢ㄦ埛鐨凮A_UserID
-                SysUser user = sysUserMapper.selectUserById(userId);
-                if (user == null || user.getOaUserId() == null) {
-                    log.warn("鎵ц浜哄憳淇℃伅涓嶅瓨鍦ㄦ垨鏈厤缃甇A_UserID锛岀敤鎴稩D: {}", userId);
-                    continue;
-                }
-                
-                String oaUserId = user.getOaUserId().toString();
-                
-                // 鏍规嵁鐢ㄦ埛绫诲瀷鍒嗛厤鍒板搴旂殑Entourage鍙傛暟
-                if ("driver".equals(userType)) {
-                    if (driverOaId.isEmpty()) {
-                        driverOaId = oaUserId;
-                        // 濡傛灉鏄涓�涓墽琛屼汉鍛橈紝璁剧疆涓洪闃�
-                        if (i == 0 && leadEntourageId.isEmpty()) {
-                            leadEntourageId = "1"; // 鍙告満瀵瑰簲Entourage_1
-                        }
-                    }
-                } else if ("doctor".equals(userType)) {
-                    if (doctorOaId.isEmpty()) {
-                        doctorOaId = oaUserId;
-                        // 濡傛灉鏄涓�涓墽琛屼汉鍛橈紝璁剧疆涓洪闃�
-                        if (i == 0 && leadEntourageId.isEmpty()) {
-                            leadEntourageId = "3"; // 鍖荤敓瀵瑰簲Entourage_3
-                        }
-                    }
-                } else if ("nurse".equals(userType)) {
-                    if (nurseOaId.isEmpty()) {
-                        nurseOaId = oaUserId;
-                        // 濡傛灉鏄涓�涓墽琛屼汉鍛橈紝璁剧疆涓洪闃�
-                        if (i == 0 && leadEntourageId.isEmpty()) {
-                            leadEntourageId = "4"; // 鎶ゅ+瀵瑰簲Entourage_4
-                        }
-                    }
-                }
-            }
-            
-            // 璁剧疆鍙傛暟
-            params.put("EntourageLeadID", leadEntourageId);
-            params.put("Entourage_1", driverOaId);  // 鍙告満
-            params.put("Entourage_3", doctorOaId);  // 鍖荤敓
-            params.put("Entourage_4", nurseOaId);   // 鎶ゅ+
-            
-            log.info("浠诲姟鎵ц浜哄憳鍚屾鎴愬姛锛屼换鍔D: {}, 棰嗛槦ID: {}, 鍙告満: {}, 鍖荤敓: {}, 鎶ゅ+: {}", 
-                task.getTaskId(), leadEntourageId, driverOaId, doctorOaId, nurseOaId);
-            
-        } catch (Exception e) {
-            log.error("鍚屾浠诲姟鎵ц浜哄憳寮傚父锛屼换鍔D: {}", task.getTaskId(), e);
-            // 璁剧疆榛樿绌哄��
-            params.put("EntourageLeadID", "");
-            params.put("Entourage_1", "");
-            params.put("Entourage_3", "");
-            params.put("Entourage_4", "");
+            return false;
+        }else {
+            return taskDispatchSyncService.resyncDispatchOrderToLegacy(taskId);
         }
     }
-    
-    /**
-     * 鑾峰彇浠诲姟鐨勬墽琛屼汉鍛樹俊鎭垪琛紙鍖呭惈瑙掕壊绫诲瀷锛�
-     * 
-     * @param taskId 浠诲姟ID
-     * @return 鎵ц浜哄憳淇℃伅鍒楄〃
-     */
-    private List<TaskCreateVO.AssigneeInfo> getTaskAssignees(Long taskId) {
-        List<TaskCreateVO.AssigneeInfo> assignees = new java.util.ArrayList<>();
-        
-        try {
-            // 浠庢暟鎹簱鏌ヨ鎵ц浜哄憳淇℃伅锛堟寜鎺掑簭椤哄簭锛�
-            List<SysTaskAssignee> taskAssignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);
-            
-            if (taskAssignees != null && !taskAssignees.isEmpty()) {
-                // 灏嗘暟鎹簱涓殑鎵ц浜哄憳杞崲涓篈ssigneeInfo瀵硅薄
-                for (SysTaskAssignee taskAssignee : taskAssignees) {
-                    TaskCreateVO.AssigneeInfo assignee = new TaskCreateVO.AssigneeInfo();
-                    assignee.setUserId(taskAssignee.getUserId());
-                    assignee.setUserName(taskAssignee.getUserName());
-                    assignee.setUserType(taskAssignee.getUserType());
-                    assignees.add(assignee);
-                }
-                
-                log.info("浠庢暟鎹簱鑾峰彇鎵ц浜哄憳淇℃伅鎴愬姛锛屼换鍔D: {}, 浜哄憳鏁伴噺: {}", taskId, assignees.size());
-                return assignees;
-            }
-            
-            // 濡傛灉鏁版嵁搴撲腑娌℃湁鎵ц浜哄憳淇℃伅锛屽皾璇曚粠浠诲姟鐨勪富瑕佹墽琛屼汉鑾峰彇
-            log.warn("鏁版嵁搴撲腑鏈壘鍒版墽琛屼汉鍛樹俊鎭紝灏濊瘯浠庝换鍔′富瑕佹墽琛屼汉鑾峰彇锛屼换鍔D: {}", taskId);
-            SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
-            if (task != null && task.getAssigneeId() != null) {
-                SysUser user = sysUserMapper.selectUserById(task.getAssigneeId());
-                if (user != null) {
-                    TaskCreateVO.AssigneeInfo assignee = new TaskCreateVO.AssigneeInfo();
-                    assignee.setUserId(user.getUserId());
-                    assignee.setUserName(user.getNickName());
-                    assignee.setUserType(getUserType(user)); // 閫氳繃瑙掕壊鍒ゆ柇绫诲瀷
-                    assignees.add(assignee);
-                }
-            }
-        } catch (Exception e) {
-            log.error("鑾峰彇浠诲姟鎵ц浜哄憳淇℃伅寮傚父锛屼换鍔D: {}", taskId, e);
-        }
-        
-        return assignees;
-    }
-    
-    
-    /**
-     * 鍒ゆ柇鐢ㄦ埛绫诲瀷锛堝徃鏈�/鍖荤敓/鎶ゅ+/鍏朵粬锛�
-     * 鏍规嵁鐢ㄦ埛鐨勮鑹插悕绉版潵鍒ゆ柇
-     * 
-     * @param user 鐢ㄦ埛淇℃伅
-     * @return 鐢ㄦ埛绫诲瀷锛歞river/doctor/nurse/other
-     */
-    private String getUserType(SysUser user) {
-        String roleName = "";
-        
-        // 浠庣敤鎴风殑瑙掕壊鍒楄〃涓幏鍙栬鑹插悕绉�
-        if (user.getRoles() != null && !user.getRoles().isEmpty()) {
-            roleName = user.getRoles().get(0).getRoleName();
-        }
-        
-        // 鍒ゆ柇鏄惁涓哄徃鏈�
-        if (roleName != null && roleName.contains("鍙告満")) {
-            return "driver";
-        }
-        // 鍒ゆ柇鏄惁涓哄尰鐢�
-        if (roleName != null && roleName.contains("鍖荤敓")) {
-            return "doctor";
-        }
-        // 鍒ゆ柇鏄惁涓烘姢澹�
-        if (roleName != null && roleName.contains("鎶ゅ+")) {
-            return "nurse";
-        }
-        
-        // 鍏朵粬绫诲瀷锛岄粯璁や负鍙告満锛堜繚璇佽嚦灏戞湁涓�涓汉鍛橈級
-        log.warn("鐢ㄦ埛瑙掕壊鏃犳硶鍒ゆ柇绫诲瀷锛岄粯璁や负鍙告満锛岀敤鎴稩D: {}, 瑙掕壊: {}", user.getUserId(), roleName);
-        return "driver";
-    }
-    
-    /**
-     * 鑾峰彇浠诲姟鍏宠仈杞﹁締鐨勬棫绯荤粺CarID
-     * 
-     * @param taskId 浠诲姟ID
-     * @return CarID锛屽鏋滄湭鎵惧埌鍒欒繑鍥�0L
-     */
-    private Long getTaskVehicleCarId(Long taskId) {
-        try {
-            // 浠� sys_task_vehicle 琛ㄦ煡璇㈣溅杈咺D
-            List<SysTaskVehicle> taskVehicles = sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId);
-            if (taskVehicles != null && !taskVehicles.isEmpty()) {
-                // 鍙栫涓�涓叧鑱旂殑杞﹁締
-                Long vehicleId = taskVehicles.get(0).getVehicleId();
-                if (vehicleId != null) {
-                    // 浠� tb_vehicle_info 琛ㄨ幏鍙� car_id
-                    VehicleInfo vehicleInfo = vehicleInfoMapper.selectVehicleInfoById(vehicleId);
-                    if (vehicleInfo != null && vehicleInfo.getCarId() != null) {
-                        Long carId = vehicleInfo.getCarId().longValue();
-                        log.info("鑾峰彇浠诲姟鍏宠仈杞﹁締鐨凜arID鎴愬姛锛屼换鍔D: {}, 杞﹁締ID: {}, CarID: {}", 
-                            taskId, vehicleId, carId);
-                        return carId;
-                    } else {
-                        log.warn("杞﹁締淇℃伅涓湭閰嶇疆CarID锛屼换鍔D: {}, 杞﹁締ID: {}", taskId, vehicleId);
-                    }
-                } else {
-                    log.warn("浠诲姟杞﹁締鍏宠仈璁板綍涓溅杈咺D涓虹┖锛屼换鍔D: {}", taskId);
-                }
-            } else {
-                log.warn("浠诲姟鏈叧鑱旇溅杈嗭紝浠诲姟ID: {}", taskId);
-            }
-        } catch (Exception e) {
-            log.error("鏌ヨ浠诲姟鍏宠仈杞﹁締鐨凜arID寮傚父锛屼换鍔D: {}", taskId, e);
-        }
-        return 0L;
-    }
-    
-    private String getAdminID(SysTask task) {
-        String adminID="";
-if (task.getCreatorId() != null) {
-            try {
-                SysUser creator = sysUserMapper.selectUserById(task.getCreatorId());
-                if (creator != null && creator.getOaUserId() != null) {
-                    adminID = creator.getOaUserId().toString();
-                    log.info("鑾峰彇鍒涘缓浜篛A_UserID鎴愬姛锛岀敤鎴稩D: {}, OA_UserID: {}", task.getCreatorId(), adminID);
-                } else {
-                    log.warn("鍒涘缓浜烘湭閰嶇疆OA_UserID锛岀敤鎴稩D: {}", task.getCreatorId());
-                }
-            } catch (Exception e) {
-                log.error("鏌ヨ鍒涘缓浜篛A_UserID寮傚父锛岀敤鎴稩D: {}", task.getCreatorId(), e);
-            }
-        }
-        return adminID;
-    }
-    /**
-     * 鏋勫缓鍚屾鍙傛暟
-     */
-    private Map<String, String> buildSyncParams(SysTask task, SysTaskEmergency emergency) {
-        Map<String, String> params = new HashMap<>();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");
-        Long taskId=task.getTaskId();
-        // 绠$悊鍛業D锛堝垱寤轰汉ID瀵瑰簲鐨凮A_UserID锛�
-        String adminID = this.getAdminID(task);
-        
-        params.put("adminID", adminID);
-        
-        // 鏈嶅姟鍗曞垎绫伙紙浠庝换鍔℃墍灞為儴闂ㄧ殑鏈嶅姟鍗曠紪鐮佽幏鍙栵級
-        String serviceOrdClass = "BF"; // ServiceOrdClass榛樿鍊�
-        if (task.getDeptId() != null) {
-            try {
-                SysDept dept = sysDeptMapper.selectDeptById(task.getDeptId());
-                if (dept != null && StringUtils.isNotEmpty(dept.getServiceOrderClass())) {
-                    // 浣跨敤閮ㄩ棬鐨勬湇鍔″崟缂栫爜浣滀负ServiceOrdClass
-                    serviceOrdClass = dept.getServiceOrderClass();
-                    log.info("鑾峰彇浠诲姟鎵�灞為儴闂ㄧ殑鏈嶅姟鍗曠紪鐮佹垚鍔燂紝閮ㄩ棬ID: {}, 閮ㄩ棬鍚嶇О: {}, 鏈嶅姟鍗曠紪鐮�: {}", 
-                        task.getDeptId(), dept.getDeptName(), serviceOrdClass);
-                } else {
-                    log.warn("浠诲姟鎵�灞為儴闂ㄦ湭閰嶇疆鏈嶅姟鍗曠紪鐮侊紝閮ㄩ棬ID: {}銆侀儴闂ㄥ悕绉�: {}锛屼娇鐢ㄩ粯璁ゅ��", 
-                        task.getDeptId(), dept != null ? dept.getDeptName() : "null");
-                }
-            } catch (Exception e) {
-                log.error("鏌ヨ浠诲姟鎵�灞為儴闂ㄤ俊鎭紓甯革紝閮ㄩ棬ID: {}", task.getDeptId(), e);
-            }
-        } else {
-            log.warn("浠诲姟鏈叧鑱旈儴闂紝浣跨敤榛樿鏈嶅姟鍗曠紪鐮�");
-        }
-        
-        // 鏈嶅姟鍗曟墽琛屽尯鍩燂紙浠庝换鍔$殑document_type_id鑾峰彇锛�
-        String serviceOrdAreaType = "1"; // 榛樿鍊�
-        if (StringUtils.isNotEmpty(emergency.getDocumentTypeId())) {
-            serviceOrdAreaType = emergency.getDocumentTypeId();
-            log.info("鑾峰彇鍗曟嵁绫诲瀷ID鎴愬姛锛屼换鍔D: {}, 鍗曟嵁绫诲瀷ID: {}", task.getTaskId(), serviceOrdAreaType);
-        } else {
-            log.warn("浠诲姟鏈厤缃崟鎹被鍨婭D锛屼换鍔D: {}锛屼娇鐢ㄩ粯璁ゅ��", task.getTaskId());
-        }
-        
-        // 鍩虹淇℃伅
-        params.put("ServiceOrdClass", serviceOrdClass); // 浠庨儴闂ㄧ殑鏈嶅姟鍗曠紪鐮佽幏鍙�
-        params.put("ServiceOrdAreaType", serviceOrdAreaType); // 浠庝换鍔$殑document_type_id鑾峰彇
-        
-        // 鏈嶅姟鍗曟墽琛岀被鍨嬶紙浠庝换鍔$殑task_type_id鑾峰彇锛�
-        String serviceOrdType = "1"; // 榛樿鍊�
-        if (StringUtils.isNotEmpty(emergency.getTaskTypeId())) {
-            serviceOrdType = emergency.getTaskTypeId();
-            log.info("鑾峰彇浠诲姟绫诲瀷ID鎴愬姛锛屼换鍔D: {}, 浠诲姟绫诲瀷ID: {}", taskId, serviceOrdType);
-        } else {
-            log.warn("浠诲姟鏈厤缃换鍔$被鍨婭D锛屼换鍔D: {}锛屼娇鐢ㄩ粯璁ゅ��", taskId);
-        }
-        params.put("ServiceOrdType", serviceOrdType); // 鏈嶅姟鍗曟墽琛岀被鍨嬶紙浠庝换鍔$殑task_type_id鑾峰彇锛�
-        
-        params.put("ServiceOrdState", "2"); // 鏈嶅姟鍗曠姸鎬侊紙2=姝e紡鍗曪級
-        params.put("ServiceOrdStartDate", task.getCreateTime() != null ? sdfDate.format(task.getCreateTime()) : sdfDate.format(new Date()));
-        
-        // 棰勭害鏃堕棿
-        if (task.getPlannedStartTime() != null) {
-            params.put("ServiceOrdApptDate", sdf.format(task.getPlannedStartTime()));
-        }
-        
-        // 鑱旂郴浜轰俊鎭�
-        params.put("ServiceOrdCoName", StringUtils.nvl(emergency.getPatientContact(), ""));
-        params.put("ServiceOrdCoPhone", StringUtils.nvl(emergency.getPatientPhone(), ""));
-        params.put("ServiceOrdCoTies", ""); // 鑱旂郴浜轰笌鎮h�呭叧绯�
-        
-        // 鎮h�呬俊鎭�
-        params.put("ServiceOrdPtName", StringUtils.nvl(emergency.getPatientName(), ""));
-        params.put("ServiceOrdPtAge", ""); // 骞撮緞
-        params.put("ServiceOrdPtKG", ""); // 浣撻噸
-        params.put("ServiceOrdPtSex", "0".equals(emergency.getPatientGender()) ? "鐢�" : "1".equals(emergency.getPatientGender()) ? "濂�" : "");
-        params.put("ServiceOrdPtNat", ""); // 鍥界睄
-        params.put("ServiceOrdPtIDCard", StringUtils.nvl(emergency.getPatientIdCard(), ""));
-        
-        // 鍖婚櫌淇℃伅
-        params.put("ServiceOrdPtOutHosp", StringUtils.nvl(emergency.getHospitalOutName(), ""));
-        params.put("ServiceOrdPtOutHospID", emergency.getHospitalOutId() != null ? emergency.getHospitalOutId().toString() : "0"); // 杞嚭鍖婚櫌ID
-        params.put("ServiceOrdPtInHosp", StringUtils.nvl(emergency.getHospitalInName(), ""));
-        params.put("ServiceOrdPtInHospID", emergency.getHospitalInId() != null ? emergency.getHospitalInId().toString() : "0"); // 杞叆鍖婚櫌ID
-        
-        // 绉戝淇℃伅
-        params.put("ServiceOrdPtServices", StringUtils.nvl(emergency.getHospitalOutDepartment(), ""));
-        params.put("ServiceOrdPtServicesID", StringUtils.nvl(emergency.getHospitalOutDepartmentId(), "0")); // 杞嚭绉戝ID
-        params.put("ServiceOrdPtInServices", StringUtils.nvl(emergency.getHospitalInDepartment(), ""));
-        params.put("ServiceOrdPtInServicesID", StringUtils.nvl(emergency.getHospitalInDepartmentId(), "0")); // 杞叆绉戝ID
-        
-        // 鐥呮儏淇℃伅
-        params.put("ServiceOrdPtDiagnosis", ""); // 璇婃柇
-        params.put("ServiceOrdPtCondition", StringUtils.nvl(emergency.getPatientCondition(), ""));
-        params.put("ServiceOrdTaskRemarks", StringUtils.nvl(task.getTaskDescription(), ""));
-        params.put("ServiceOrdPtDoctor", ""); // 鎮h�呭尰鐢�
-        params.put("ServiceOrdPtDoctorPhone", ""); // 鎮h�呭尰鐢熺數璇�
-        
-        // 鍦板潃淇℃伅
-        params.put("province", ""); // 鍑哄彂鍦扮渷浠�
-        params.put("city", ""); // 鍑哄彂鍦板煄甯�
-        params.put("ServiceOrdTraStreet", StringUtils.nvl(task.getDepartureAddress(), StringUtils.nvl(emergency.getHospitalOutAddress(), "")));
-        params.put("ServiceOrdTraStreetCoo", ""); // 鍑哄彂鍦板潗鏍�
-        params.put("ServiceOrdTraEnd", StringUtils.nvl(task.getDestinationAddress(), StringUtils.nvl(emergency.getHospitalInAddress(), "")));
-        params.put("ServiceOrdTraEndCoo", ""); // 鐩殑鍦板潗鏍�
-        params.put("ServiceOrdTraVia", ""); // 閫旂粡鍦�
-        
-        // 璺濈鍜屼环鏍间俊鎭�
-        params.put("ServiceOrdViaDistance", "0"); // 涓�旇窛绂�
-        params.put("ServiceOrdTraDistance", emergency.getTransferDistance() != null ? emergency.getTransferDistance().toString() : "0");
-        params.put("ServiceOrdTraDuration", ""); // 棰勮琛岀▼鏃堕棿
-        params.put("ServiceOrdTraUnitPrice", "0"); // 鍗曚环/鍏噷
-        params.put("ServiceOrdTraOfferPrice", emergency.getTransferPrice() != null ? emergency.getTransferPrice().toString() : "0");
-        params.put("ServiceOrdTraTxnPrice", emergency.getTransferPrice() != null ? emergency.getTransferPrice().toString() : "0");
-        params.put("ServiceOrdTraPrePayment", "0"); // 闇�棰勪粯娆�
-        params.put("SettlementPrice", "0"); // 缁撶畻浠�
-        params.put("ServiceOrdTraPriceReason", ""); // 宸环鍘熷洜
-        
-        // 鍏朵粬淇℃伅
-        params.put("Phone", StringUtils.nvl(emergency.getPatientPhone(), "")); // 鏉ョ數鐢佃瘽
-        params.put("TEL_Time", sdf.format(new Date())); // 鏉ョ數鏃堕棿
-        params.put("TEL_Remarks", "鏂扮郴缁熷悓姝�"); // 鏉ョ數澶囨敞
-        params.put("TransferModeID", ""); // 杞繍鏂瑰紡
-        params.put("ServiceOrdVIP", "0"); // VIP瀹㈡埛
-        params.put("ServiceOrd_CC_ID", ""); // 瀹㈡湇浜哄憳ID
-        params.put("ServiceOrd_Sale_ID", ""); // 閿�鍞汉鍛業D
-        params.put("ServiceOrdIntroducer", ""); // 浠嬬粛浜�
-        params.put("ServiceOrd_work_ID", ""); // 涓昏浼佸井瀹㈡湇ID
-        params.put("ServiceOrd_work_IDs", ""); // 鍏朵粬浼佸井瀹㈡湇ID
-        params.put("ServiceOrd_work_is", "0"); // 鏄惁浼佸井鎴愪氦
-        params.put("CommissionScenarioID", "0"); // 浼佸井缁╂晥鏂规
-        params.put("ServiceOrdOperationRemarks", "鏂扮郴缁熷悓姝ュ垱寤�"); // 鎿嶄綔澶囨敞
-        params.put("ServiceOrdEstimatedOrderDate", ""); // 棰勮娲惧崟鏃堕棿
-        params.put("ServiceOrdSource", "10"); // 璁㈠崟鏉ユ簮锛�10=鏂扮郴缁燂級
-        params.put("OrderLevel", "0"); // 鏌ョ湅绛夌骇
-        params.put("ServiceOrdDepartureType", "1"); // 棰勭害绫诲瀷
-        params.put("ConditionLevel", "0"); // 鐥呴噸绾у埆
-        params.put("DirectionType", "0"); // 杞繍鍘诲悜
-        params.put("ServiceOrd_m", "1"); // 鏉ユ簮鍏ュ彛
-        params.put("FromHQ2_is", "0"); // 骞垮窞鎬婚儴鎺ㄩ�佷换鍔℃爣璁�
-        params.put("OrderPrice_Auto", "0"); // 璁㈠崟鑷姩鎶ヤ环鍙傝�冨��
-        
-        return params;
-    }
-    
-    /**
-     * 鍙戦�丠TTP POST璇锋眰
-     */
-    private String sendHttpPost(String urlString, Map<String, String> params) throws Exception {
-        URL url = new URL(urlString);
-        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-        
-        try {
-            // 璁剧疆杩炴帴灞炴��
-            conn.setRequestMethod("POST");
-            conn.setConnectTimeout(legacyConfig.getConnectTimeout());
-            conn.setReadTimeout(legacyConfig.getReadTimeout());
-            conn.setDoOutput(true);
-            conn.setDoInput(true);
-            conn.setUseCaches(false);
-            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + legacyConfig.getCharset());
-            conn.setRequestProperty("Accept-Charset", legacyConfig.getCharset());
-            
-            // 鏋勫缓POST鏁版嵁
-            StringBuilder postData = new StringBuilder();
-            for (Map.Entry<String, String> entry : params.entrySet()) {
-                if (postData.length() > 0) {
-                    postData.append("&");
-                }
-                postData.append(URLEncoder.encode(entry.getKey(), legacyConfig.getCharset()));
-                postData.append("=");
-                postData.append(URLEncoder.encode(entry.getValue(), legacyConfig.getCharset()));
-            }
-            
-            // 鍙戦�丳OST鏁版嵁
-            try (OutputStream os = conn.getOutputStream()) {
-                os.write(postData.toString().getBytes(legacyConfig.getCharset()));
-                os.flush();
-            }
 
 
-            
-            // 璇诲彇鍝嶅簲
-            int responseCode = conn.getResponseCode();
-            if (responseCode == HttpURLConnection.HTTP_OK) {
-                try (BufferedReader reader = new BufferedReader(
-                        new InputStreamReader(conn.getInputStream(), legacyConfig.getCharset()))) {
-                    StringBuilder response = new StringBuilder();
-                    String line;
-                    while ((line = reader.readLine()) != null) {
-                        response.append(line);
-                    }
-                    return response.toString().trim();
-                }
-            } else {
-                log.error("璇锋眰澶辫触锛岃姹俇RL {},鍙傛暟 {}",urlString,postData);
-
-                throw new Exception("HTTP璇锋眰澶辫触锛屽搷搴旂爜: " + responseCode);
-            }
-            
-        } finally {
-            conn.disconnect();
-        }
-    }
-    
     /**
-     * 瑙f瀽鏃х郴缁熷搷搴�
-     * 棰勬湡鏍煎紡: "OK:ServiceOrdID" 鎴栭敊璇俊鎭�
+     * 鎵归噺閲嶆柊鍚屾闇�瑕佹洿鏂扮殑璋冨害鍗�
      */
-    private Long parseResponse(String response) {
-        if (StringUtils.isEmpty(response)) {
-            return null;
+    @Override
+    public int batchResyncPendingDispatchOrders() {
+        if (!legacyConfig.isEnabled()) {
+            log.info("鏃х郴缁熷悓姝ュ凡绂佺敤");
+            return 0;
         }
         
-        // 鍘婚櫎鍙兘鐨凥TML鏍囩鍜岀┖鐧藉瓧绗�
-        response = response.replaceAll("<[^>]*>", "").trim();
-        
-        // 妫�鏌ユ槸鍚︽垚鍔熷搷搴�
-        if (response.startsWith("OK:")) {
-            try {
-                String serviceOrdIdStr = response.substring(3).trim();
-                return Long.parseLong(serviceOrdIdStr);
-            } catch (NumberFormatException e) {
-                log.error("瑙f瀽ServiceOrdID澶辫触: {}", response, e);
-                return null;
+        try {
+            int totalSuccessCount = 0;
+            int pageSize = 100; // 姣忛〉100鏉�
+            int offset = 0;
+            
+            while (true) {
+                // 鍒嗛〉鏌ヨ闇�瑕侀噸鏂板悓姝ョ殑浠诲姟
+                List<SysTaskEmergency> needResyncTasks = sysTaskEmergencyMapper.selectNeedResyncTasks(offset, pageSize);
+
+//                log.info("鏌ヨ鍒伴渶瑕侀噸鏂板悓姝ョ殑浠诲姟鏁伴噺: {}", needResyncTasks.size());
+                if (needResyncTasks == null || needResyncTasks.isEmpty()) {
+                    log.info("娌℃湁鏇村闇�瑕侀噸鏂板悓姝ョ殑浠诲姟锛宱ffset: {}", offset);
+                    break; // 娌℃湁鏇村鏁版嵁锛岄��鍑哄惊鐜�
+                }
+
+//                log.info("寮�濮嬮噸鏂板悓姝ヨ皟搴﹀崟绗� {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, needResyncTasks.size());
+
+                int pageSuccessCount = 0;
+                for (SysTaskEmergency emergency : needResyncTasks) {
+                    Long dispatchOrdId = emergency.getLegacyDispatchOrdId();
+                    Long taskId = emergency.getTaskId();
+                    if (LongUtil.isEmpty(dispatchOrdId)) {
+                        //娌℃湁璋冨害鍗曪紝鎴戜滑灏辫皟鐢ㄥ垱寤鸿皟搴﹀崟
+                        Long serviceOrderId = syncDispatchOrderToLegacy(taskId);
+                        if (LongUtil.isNotEmpty(serviceOrderId)) {
+                            emergency.setNeedResync(0);
+                            emergency.setDispatchSyncTime(new Date());
+                            emergency.setDispatchSyncErrorMsg(null);
+                            sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+
+                            continue;
+                        }
+//                    log.info("寮�濮嬮噸鏂板悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", emergency.getTaskId());
+                        boolean success = resyncDispatchOrderToLegacy(emergency.getTaskId());
+
+                        if (success) {
+                            pageSuccessCount++;
+                        }
+
+                        // 閬垮厤杩囦簬棰戠箒鐨勮姹�
+                        try {
+                            Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
+                        } catch (InterruptedException e) {
+                            Thread.currentThread().interrupt();
+                            log.warn("閲嶆柊鍚屾璋冨害鍗曡涓柇");
+                            return totalSuccessCount + pageSuccessCount;
+                        }
+                    }
+
+                    totalSuccessCount += pageSuccessCount;
+//                log.info("璋冨害鍗曢噸鏂板悓姝ョ {} 椤靛畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}",
+//                    (offset / pageSize) + 1, needResyncTasks.size(), pageSuccessCount);
+
+                    // 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
+                    if (needResyncTasks.size() < pageSize) {
+//                    log.info("宸插埌杈炬渶鍚庝竴椤碉紝璋冨害鍗曢噸鏂板悓姝ョ粨鏉�");
+                        break;
+                    }
+
+                    offset += pageSize; // 涓嬩竴椤�
+                }
             }
-        } else {
-            log.error("鏃х郴缁熻繑鍥為敊璇�: {}", response);
-            return null;
+//            log.info("鎵归噺閲嶆柊鍚屾璋冨害鍗曞畬鎴愶紝鎬绘垚鍔熸暟: {}", totalSuccessCount);
+            return totalSuccessCount;
+            
+        } catch (Exception e) {
+            log.error("鎵归噺閲嶆柊鍚屾璋冨害鍗曞紓甯�", e);
+            return 0;
         }
     }
 }

--
Gitblit v1.9.1