From 13a31edf7f569cdcf15d3c43a476a2c947f47fbf Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 09 十一月 2025 22:33:24 +0800
Subject: [PATCH] feat: 增加hospdata表,同步sqlserver过来

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java |  270 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 208 insertions(+), 62 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 8e181d8..a58c2c8 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
@@ -11,7 +11,15 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.security.cert.X509Certificate;
 
+import com.ruoyi.system.domain.*;
+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;
@@ -22,11 +30,6 @@
 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.SysTask;
-import com.ruoyi.system.domain.SysTaskEmergency;
-import com.ruoyi.system.domain.SysTaskVehicle;
-import com.ruoyi.system.domain.SysTaskAssignee;
-import com.ruoyi.system.domain.VehicleInfo;
 import com.ruoyi.system.domain.vo.TaskCreateVO;
 import com.ruoyi.system.mapper.SysTaskMapper;
 import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
@@ -35,7 +38,7 @@
 import com.ruoyi.system.mapper.VehicleInfoMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.mapper.SysDeptMapper;
-import com.ruoyi.system.service.ILegacySystemSyncService;
+import com.ruoyi.system.utils.TaskStatusConverter;
 
 /**
  * 鏃х郴缁熷悓姝ervice涓氬姟灞傚鐞�
@@ -55,9 +58,6 @@
     private SysTaskMapper sysTaskMapper;
     
     @Autowired
-    private SysTaskEmergencyMapper sysTaskEmergencyMapper;
-    
-    @Autowired
     private SysUserMapper sysUserMapper;
     
     @Autowired
@@ -71,6 +71,21 @@
     
     @Autowired
     private VehicleInfoMapper vehicleInfoMapper;
+    
+    @Autowired
+    private IDispatchOrdService dispatchOrdService;
+    
+    @Autowired
+    private ISysTaskEmergencyService sysTaskEmergencyService;
+
+    @Autowired
+    private ITaskAttachmentSyncService taskAttachmentSyncService;
+
+    @Autowired
+    private ISysTaskService sysTaskService;
+
+    @Autowired
+    private ITaskAttachmentService taskAttachmentService;
     
     /**
      * 鍚屾鎬ユ晳杞繍浠诲姟鍒版棫绯荤粺
@@ -98,7 +113,7 @@
             }
             
             // 鏌ヨ鎬ユ晳杞繍鎵╁睍淇℃伅
-            SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+            SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
             if (emergency == null) {
                 log.error("鎬ユ晳杞繍鎵╁睍淇℃伅涓嶅瓨鍦紝浠诲姟ID: {}", taskId);
                 return null;
@@ -112,7 +127,7 @@
             
             // 鏇存柊鍚屾鐘舵�佷负鍚屾涓�
             emergency.setSyncStatus(1);
-            sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+            sysTaskEmergencyService.updateSysTaskEmergency(emergency);
             
             // 鏋勫缓璇锋眰鍙傛暟
             Map<String, String> params = buildSyncParams(task, emergency);
@@ -129,7 +144,7 @@
                 emergency.setSyncStatus(2); // 鍚屾鎴愬姛
                 emergency.setSyncTime(new Date());
                 emergency.setSyncErrorMsg(null);
-                sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
                 
                 // 鏇存柊浠诲姟涓昏〃鍚屾鏍囪
                 task.setLegacySynced(1);
@@ -142,7 +157,7 @@
                 emergency.setSyncStatus(3); // 鍚屾澶辫触
                 emergency.setSyncTime(new Date());
                 emergency.setSyncErrorMsg("鏃х郴缁熻繑鍥炴棤鏁堢殑ServiceOrdID: " + response);
-                sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
                 
                 log.error("浠诲姟鍚屾澶辫触锛屼换鍔D: {}, 鍝嶅簲: {}", taskId, response);
                 return null;
@@ -153,12 +168,12 @@
             
             // 鏇存柊鍚屾鐘舵�佷负澶辫触
             try {
-                SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+                SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
                 if (emergency != null) {
                     emergency.setSyncStatus(3); // 鍚屾澶辫触
                     emergency.setSyncTime(new Date());
                     emergency.setSyncErrorMsg("鍚屾寮傚父: " + e.getMessage());
-                    sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+                    sysTaskEmergencyService.updateSysTaskEmergency(emergency);
                 }
             } catch (Exception ex) {
                 log.error("鏇存柊鍚屾鐘舵�佸け璐�", ex);
@@ -170,6 +185,7 @@
     
     /**
      * 鎵归噺鍚屾鏈悓姝ョ殑鎬ユ晳杞繍浠诲姟
+     * 浣跨敤鍒嗛〉鏌ヨ锛岀‘淇濇墍鏈夌鍚堟潯浠剁殑浠诲姟閮借兘琚悓姝�
      */
     @Override
     public int batchSyncPendingTasks() {
@@ -179,27 +195,53 @@
         }
         
         try {
-            // 鏌ヨ鏈悓姝ョ殑鎬ユ晳杞繍浠诲姟锛堝悓姝ョ姸鎬佷负0鎴�3鐨勪换鍔★級
-            List<SysTaskEmergency> pendingTasks = sysTaskEmergencyMapper.selectPendingSyncTasks();
+            int totalSuccessCount = 0;
+            int pageSize = 100; // 姣忛〉100鏉�
+            int offset = 0;
             
-            int successCount = 0;
-            for (SysTaskEmergency emergency : pendingTasks) {
-                Long serviceOrdId = syncEmergencyTaskToLegacy(emergency.getTaskId());
-                if (serviceOrdId != null && serviceOrdId > 0) {
-                    successCount++;
+            while (true) {
+                // 鍒嗛〉鏌ヨ鏈悓姝ョ殑鎬ユ晳杞繍浠诲姟锛堝悓姝ョ姸鎬佷负0鎴�3鐨勪换鍔★級
+                List<SysTaskEmergency> pendingTasks = sysTaskEmergencyService.selectPendingSyncTasks(offset, pageSize);
+                
+                if (pendingTasks == null || pendingTasks.isEmpty()) {
+                    log.info("娌℃湁鏇村闇�瑕佸悓姝ョ殑浠诲姟锛宱ffset: {}", offset);
+                    break; // 娌℃湁鏇村鏁版嵁锛岄��鍑哄惊鐜�
                 }
                 
-                // 閬垮厤杩囦簬棰戠箒鐨勮姹�
-                try {
-                    Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
-                } catch (InterruptedException e) {
-                    Thread.currentThread().interrupt();
+                log.info("寮�濮嬪悓姝ョ {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, pendingTasks.size());
+                
+                int pageSuccessCount = 0;
+                for (SysTaskEmergency emergency : pendingTasks) {
+                    Long serviceOrdId = syncEmergencyTaskToLegacy(emergency.getTaskId());
+                    if (serviceOrdId != null && serviceOrdId > 0) {
+                        pageSuccessCount++;
+                    }
+                    
+                    // 閬垮厤杩囦簬棰戠箒鐨勮姹�
+                    try {
+                        Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
+                    } catch (InterruptedException e) {
+                        Thread.currentThread().interrupt();
+                        log.warn("鍚屾琚腑鏂�");
+                        return totalSuccessCount + pageSuccessCount;
+                    }
+                }
+                
+                totalSuccessCount += pageSuccessCount;
+                log.info("绗� {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}", 
+                    (offset / pageSize) + 1, pendingTasks.size(), pageSuccessCount);
+                
+                // 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
+                if (pendingTasks.size() < pageSize) {
+                    log.info("宸插埌杈炬渶鍚庝竴椤碉紝鍚屾缁撴潫");
                     break;
                 }
+                
+                offset += pageSize; // 涓嬩竴椤�
             }
             
-            log.info("鎵归噺鍚屾瀹屾垚锛屾�绘暟: {}, 鎴愬姛: {}", pendingTasks.size(), successCount);
-            return successCount;
+            log.info("鎵归噺鍚屾瀹屾垚锛屾�绘垚鍔熸暟: {}", totalSuccessCount);
+            return totalSuccessCount;
             
         } catch (Exception e) {
             log.error("鎵归噺鍚屾浠诲姟寮傚父", e);
@@ -215,12 +257,12 @@
     public boolean retrySyncTask(Long taskId) {
         try {
             // 閲嶇疆鍚屾鐘舵��
-            SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+            SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
             if (emergency != null) {
                 emergency.setSyncStatus(0); // 閲嶇疆涓烘湭鍚屾
                 emergency.setLegacyServiceOrdId(null);
                 emergency.setSyncErrorMsg(null);
-                sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
             }
             
             // 閲嶆柊鍚屾
@@ -232,7 +274,27 @@
             return false;
         }
     }
-    
+
+
+    /**
+     * 鍚屾浠诲姟闄勪欢鍒版棫绯荤粺
+     * @param taskAttachments
+     * @param serviceOrdId
+     * @param dispatchOrdId
+     * @param oaUserID
+     */
+    public void syncAttachmentToLegacy(List<SysTaskAttachment> taskAttachments, Long serviceOrdId,Long dispatchOrdId,Integer oaUserID) {
+        taskAttachments.forEach((taskAttachment)->{
+            Long imageDataId=  taskAttachmentSyncService.syncAttachmentToImageData(taskAttachment,serviceOrdId,dispatchOrdId,oaUserID);
+            if (imageDataId != null && imageDataId > 0) {
+
+                taskAttachment.setSyncedToImageData(1);
+                taskAttachment.setSyncTime(new Date());
+                taskAttachment.setImageDataId(imageDataId);
+                taskAttachmentService.updateAttachment(taskAttachment);
+            }
+        });
+    }
     /**
      * 鍚屾璋冨害鍗曞埌鏃х郴缁燂紙admin_save_24.asp锛�
      */
@@ -259,7 +321,7 @@
             }
             
             // 鏌ヨ鎬ユ晳杞繍鎵╁睍淇℃伅
-            SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+            SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
             if (emergency == null) {
                 log.error("鎬ユ晳杞繍鎵╁睍淇℃伅涓嶅瓨鍦紝浠诲姟ID: {}", taskId);
                 return null;
@@ -270,16 +332,23 @@
                 log.info("璋冨害鍗曞凡鍚屾杩囷紝浠诲姟ID: {}, DispatchOrdID: {}", taskId, emergency.getLegacyDispatchOrdId());
                 return emergency.getLegacyDispatchOrdId();
             }
-            
+
+            Long serviceOrdId=emergency.getLegacyServiceOrdId();
             // 蹇呴』鍏堝悓姝ユ湇鍔″崟
-            if (emergency.getLegacyServiceOrdId() == null || emergency.getLegacyServiceOrdId() <= 0) {
+            if (serviceOrdId == null || serviceOrdId <= 0) {
                 log.warn("鏈嶅姟鍗曟湭鍚屾锛屾棤娉曞悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", taskId);
                 return null;
             }
-            
+
+
+
+
             // 鏇存柊鍚屾鐘舵�佷负鍚屾涓�
             emergency.setDispatchSyncStatus(1);
-            sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+            sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+
+            SysUser u=sysUserMapper.selectUserById(task.getCreatorId());
+            Integer oaUserID= u.getOaUserId();
             
             // 鏋勫缓璇锋眰鍙傛暟
             Map<String, String> params = buildDispatchOrderParams(task, emergency);
@@ -296,8 +365,14 @@
                 emergency.setDispatchSyncStatus(2); // 鍚屾鎴愬姛
                 emergency.setDispatchSyncTime(new Date());
                 emergency.setDispatchSyncErrorMsg(null);
-                sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
-                
+                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 {
@@ -305,7 +380,7 @@
                 emergency.setDispatchSyncStatus(3); // 鍚屾澶辫触
                 emergency.setDispatchSyncTime(new Date());
                 emergency.setDispatchSyncErrorMsg("鏃х郴缁熻繑鍥炴棤鏁堢殑DispatchOrdID: " + response);
-                sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
                 
                 log.error("璋冨害鍗曞悓姝ュけ璐ワ紝浠诲姟ID: {}, 鍝嶅簲: {}", taskId, response);
                 return null;
@@ -316,12 +391,12 @@
             
             // 鏇存柊鍚屾鐘舵�佷负澶辫触
             try {
-                SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+                SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
                 if (emergency != null) {
                     emergency.setDispatchSyncStatus(3); // 鍚屾澶辫触
                     emergency.setDispatchSyncTime(new Date());
                     emergency.setDispatchSyncErrorMsg("鍚屾寮傚父: " + e.getMessage());
-                    sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+                    sysTaskEmergencyService.updateSysTaskEmergency(emergency);
                 }
             } catch (Exception ex) {
                 log.error("鏇存柊璋冨害鍗曞悓姝ョ姸鎬佸け璐�", ex);
@@ -333,6 +408,7 @@
     
     /**
      * 鎵归噺鍚屾鏈悓姝ョ殑璋冨害鍗�
+     * 浣跨敤鍒嗛〉鏌ヨ锛岀‘淇濇墍鏈夌鍚堟潯浠剁殑浠诲姟閮借兘琚悓姝�
      */
     @Override
     public int batchSyncPendingDispatchOrders() {
@@ -342,27 +418,55 @@
         }
         
         try {
-            // 鏌ヨ宸插悓姝ユ湇鍔″崟浣嗘湭鍚屾璋冨害鍗曠殑浠诲姟
-            List<SysTaskEmergency> pendingTasks = sysTaskEmergencyMapper.selectPendingDispatchSyncTasks();
+            int totalSuccessCount = 0;
+            int pageSize = 100; // 姣忛〉100鏉�
+            int offset = 0;
             
-            int successCount = 0;
-            for (SysTaskEmergency emergency : pendingTasks) {
-                Long dispatchOrdId = syncDispatchOrderToLegacy(emergency.getTaskId());
-                if (dispatchOrdId != null && dispatchOrdId > 0) {
-                    successCount++;
+            while (true) {
+                // 鍒嗛〉鏌ヨ宸插悓姝ユ湇鍔″崟浣嗘湭鍚屾璋冨害鍗曠殑浠诲姟
+                List<SysTaskEmergency> pendingTasks = sysTaskEmergencyService.selectPendingDispatchSyncTasks(offset, pageSize);
+                log.info("鏌ヨ鍒版湭鍚屾璋冨害鍗曠殑浠诲姟鏁伴噺: {}", pendingTasks.size());
+                if (pendingTasks == null || pendingTasks.isEmpty()) {
+                    log.info("娌℃湁鏇村闇�瑕佸悓姝ヨ皟搴﹀崟鐨勪换鍔★紝offset: {}", offset);
+                    break; // 娌℃湁鏇村鏁版嵁锛岄��鍑哄惊鐜�
                 }
                 
-                // 閬垮厤杩囦簬棰戠箒鐨勮姹�
-                try {
-                    Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
-                } catch (InterruptedException e) {
-                    Thread.currentThread().interrupt();
+                log.info("寮�濮嬪悓姝ヨ皟搴﹀崟绗� {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, pendingTasks.size());
+                
+                int pageSuccessCount = 0;
+                for (SysTaskEmergency emergency : pendingTasks) {
+                    log.info("寮�濮嬪悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", emergency.getTaskId());
+                    Long dispatchOrdId = syncDispatchOrderToLegacy(emergency.getTaskId());
+
+                    if (dispatchOrdId != null && dispatchOrdId > 0) {
+                        pageSuccessCount++;
+                    }
+                    
+                    // 閬垮厤杩囦簬棰戠箒鐨勮姹�
+                    try {
+                        Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
+                    } catch (InterruptedException e) {
+                        Thread.currentThread().interrupt();
+                        log.warn("鍚屾璋冨害鍗曡涓柇");
+                        return totalSuccessCount + pageSuccessCount;
+                    }
+                }
+                
+                totalSuccessCount += pageSuccessCount;
+                log.info("璋冨害鍗曠 {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}", 
+                    (offset / pageSize) + 1, pendingTasks.size(), pageSuccessCount);
+                
+                // 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
+                if (pendingTasks.size() < pageSize) {
+                    log.info("宸插埌杈炬渶鍚庝竴椤碉紝璋冨害鍗曞悓姝ョ粨鏉�");
                     break;
                 }
+                
+                offset += pageSize; // 涓嬩竴椤�
             }
             
-            log.info("鎵归噺鍚屾璋冨害鍗曞畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}", pendingTasks.size(), successCount);
-            return successCount;
+            log.info("鎵归噺鍚屾璋冨害鍗曞畬鎴愶紝鎬绘垚鍔熸暟: {}", totalSuccessCount);
+            return totalSuccessCount;
             
         } catch (Exception e) {
             log.error("鎵归噺鍚屾璋冨害鍗曞紓甯�", e);
@@ -398,7 +502,7 @@
         // 鍩烘湰淇℃伅
         params.put("DispatchOrdClass", dispatchOrdClass);
         params.put("ServiceOrdID", emergency.getLegacyServiceOrdId().toString());
-        params.put("DispatchOrdState", "8"); // 璋冨害鍗曠姸鎬�
+        params.put("DispatchOrdState", "1"); // 璋冨害鍗曠姸鎬�
         
         // 鏃堕棿淇℃伅
         if (task.getPlannedStartTime() != null) {
@@ -478,7 +582,7 @@
         params.put("ServiceOrdEstimatedOrderDateOld", ""); // 鍘熼璁℃淳鍗曟椂闂�
         params.put("ServiceOrdViaDistance", "0"); // 涓�旇窛绂�
         params.put("ServiceOrdTraDistance", emergency.getTransferDistance() != null ? emergency.getTransferDistance().toString() : "0"); // 璺濈
-        params.put("OrderLevel", "2"); // 鏌ョ湅绛夌骇
+        params.put("OrderLevel", "0"); // 鏌ョ湅绛夌骇
         params.put("ServiceOrdDepartureType", "1"); // 棰勭害绫诲瀷
         params.put("ConditionLevel", "0"); // 鐥呴噸绾у埆
         params.put("DirectionType", "0"); // 杞繍鍘诲悜
@@ -866,7 +970,7 @@
         params.put("ServiceOrdOperationRemarks", "鏂扮郴缁熷悓姝ュ垱寤�"); // 鎿嶄綔澶囨敞
         params.put("ServiceOrdEstimatedOrderDate", ""); // 棰勮娲惧崟鏃堕棿
         params.put("ServiceOrdSource", "10"); // 璁㈠崟鏉ユ簮锛�10=鏂扮郴缁燂級
-        params.put("OrderLevel", "2"); // 鏌ョ湅绛夌骇
+        params.put("OrderLevel", "0"); // 鏌ョ湅绛夌骇
         params.put("ServiceOrdDepartureType", "1"); // 棰勭害绫诲瀷
         params.put("ConditionLevel", "0"); // 鐥呴噸绾у埆
         params.put("DirectionType", "0"); // 杞繍鍘诲悜
@@ -878,11 +982,20 @@
     }
     
     /**
-     * 鍙戦�丠TTP POST璇锋眰
+     * 鍙戦�丠TTP/HTTPS POST璇锋眰
+     * 鏀寔HTTPS鑷鍚嶈瘉涔�
      */
     private String sendHttpPost(String urlString, Map<String, String> params) throws Exception {
         URL url = new URL(urlString);
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        
+        // 濡傛灉鏄疕TTPS璇锋眰锛岄厤缃甋SL淇′换鎵�鏈夎瘉涔�
+        if (conn instanceof HttpsURLConnection) {
+            HttpsURLConnection httpsConn = (HttpsURLConnection) conn;
+            httpsConn.setSSLSocketFactory(createTrustAllSSLContext().getSocketFactory());
+            httpsConn.setHostnameVerifier((hostname, session) -> true); // 淇′换鎵�鏈変富鏈哄悕
+            log.debug("閰嶇疆HTTPS杩炴帴锛屼俊浠绘墍鏈塖SL璇佷功锛孶RL: {}", urlString);
+        }
         
         try {
             // 璁剧疆杩炴帴灞炴��
@@ -928,8 +1041,7 @@
                 }
             } else {
                 log.error("璇锋眰澶辫触锛岃姹俇RL {},鍙傛暟 {}",urlString,postData);
-
-                throw new Exception("HTTP璇锋眰澶辫触锛屽搷搴旂爜: " + responseCode);
+                throw new Exception("HTTP/HTTPS璇锋眰澶辫触锛屽搷搴旂爜: " + responseCode);
             }
             
         } finally {
@@ -938,6 +1050,40 @@
     }
     
     /**
+     * 鍒涘缓淇′换鎵�鏈塖SL璇佷功鐨凷SLContext
+     * 鐢ㄤ簬鏀寔鑷鍚嶈瘉涔︾殑HTTPS璇锋眰
+     * 
+     * 娉ㄦ剰锛氭鏂规硶浼氫俊浠绘墍鏈塖SL璇佷功锛屽寘鎷嚜绛惧悕璇佷功
+     * 浠呯敤浜庝笌鏃х郴缁熺殑鍐呴儴閫氫俊锛岀敓浜х幆澧冨缓璁娇鐢ㄦ瑙凜A璇佷功
+     */
+    private SSLContext createTrustAllSSLContext() throws Exception {
+        // 鍒涘缓淇′换鎵�鏈夎瘉涔︾殑TrustManager
+        TrustManager[] trustAllCerts = new TrustManager[] {
+            new X509TrustManager() {
+                @Override
+                public X509Certificate[] getAcceptedIssuers() {
+                    return null;
+                }
+                
+                @Override
+                public void checkClientTrusted(X509Certificate[] certs, String authType) {
+                    // 淇′换鎵�鏈夊鎴风璇佷功
+                }
+                
+                @Override
+                public void checkServerTrusted(X509Certificate[] certs, String authType) {
+                    // 淇′换鎵�鏈夋湇鍔″櫒璇佷功
+                }
+            }
+        };
+        
+        // 瀹夎淇′换鎵�鏈夎瘉涔︾殑TrustManager
+        SSLContext sslContext = SSLContext.getInstance("TLS");
+        sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
+        return sslContext;
+    }
+    
+    /**
      * 瑙f瀽鏃х郴缁熷搷搴�
      * 棰勬湡鏍煎紡: "OK:ServiceOrdID" 鎴栭敊璇俊鎭�
      */

--
Gitblit v1.9.1