From 377e7a0a05632464bb6c7a78f50b038ba505cfef Mon Sep 17 00:00:00 2001
From: cy <1664593601@qq.com>
Date: 星期三, 11 十月 2023 15:05:50 +0800
Subject: [PATCH] fix(quartz): 1.增加超时重试机制2.数据条数不统一时删除拉取到的数据

---
 src/main/java/com/integrated/zyyt/util/ZyytUtil.java       |  135 ++++++++++++++++++++++++--
 src/main/resources/application-dev.yml                     |    8 +
 src/main/resources/application-prod.yml                    |    6 +
 src/main/java/com/integrated/zyyt/service/ZyytService.java |   99 +++++++++++++------
 4 files changed, 200 insertions(+), 48 deletions(-)

diff --git a/src/main/java/com/integrated/zyyt/service/ZyytService.java b/src/main/java/com/integrated/zyyt/service/ZyytService.java
index ff28ec4..a6286f0 100644
--- a/src/main/java/com/integrated/zyyt/service/ZyytService.java
+++ b/src/main/java/com/integrated/zyyt/service/ZyytService.java
@@ -7,11 +7,10 @@
 import com.integrated.zyyt.enetity.business.Zyyt;
 import com.integrated.zyyt.util.ZyytUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.jdbc.core.BatchPreparedStatementSetter;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
 import java.sql.Date;
@@ -24,7 +23,7 @@
 
 @Service
 @Slf4j
-@Transactional(rollbackFor = Exception.class)
+//@Transactional(rollbackFor = Exception.class)
 public class ZyytService {
     @Resource
     private JdbcTemplate jdbcTemplate;
@@ -42,24 +41,28 @@
 
         Zyyt<StationInfo> stationInfoService = ZyytUtil.getBusinessEntity("STATIONINFO", yestDay);
 //        String exeSql = "merge into STATIONINFO A USING" + " (select ? V_JGBH  from dual ) C " + "ON(A.V_JGBH=C.V_JGBH) " + "when matched then " + "update SET A.V_SFMC=?,A.V_SFDM=?,A.V_DSDM=?,A.V_DSMC=?,A.V_QXDM=?,A.V_XSMC=?,A.V_TDJGBH=?,A.V_TDJGMC=?,A.V_JGMC=?,A.V_LXRXM=?,A.V_LXDH=?,A.V_SJHM=?,A.V_LXDZ=?,A.ISCOUNTRY=?,A.C_WDLX =?,A.C_YZBM=?,A.V_YYWDBH=?,A.V_YYWDMC=?,A.V_GPSJD=?,A.V_GPSWD=?,A.YLGZDID  =?,A.YLGZDMC=?,A.V_STATUS=?,A.D_SQRQ=?,A.D_SPRQ=?" + "when not matched then " + "insert(A.V_SFMC,A.V_SFDM,A.V_DSDM,A.V_DSMC,A.V_QXDM,A.V_XSMC,A.V_TDJGBH,A.V_TDJGMC,A.V_JGBH,A.V_JGMC,A.V_LXRXM,A.V_LXDH,A.V_SJHM,A.V_LXDZ,A.ISCOUNTRY,A.C_WDLX ,A.C_YZBM,A.V_YYWDBH,A.V_YYWDMC,A.V_GPSJD,A.V_GPSWD,A.YLGZDID  ,A.YLGZDMC,A.V_STATUS,A.D_SQRQ,A.D_SPRQ) values " + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
-        String exeSql = "merge into STATIONINFO A USING" + " (select ? V_JGBH, ? CPBD_LOAD_DT  from dual ) C " + "ON(A.V_JGBH=C.V_JGBH) " + "when matched then " + "update SET A.CPBD_LOAD_DT=?,     A.V_SFMC=?,A.V_SFDM=?,A.V_DSDM=?,A.V_DSMC=?,A.V_QXDM=?,A.V_XSMC=?,A.V_TDJGBH=?,A.V_TDJGMC=?,A.V_JGMC=?,A.V_LXRXM=?,A.V_LXDH=?,A.V_SJHM=?,A.V_LXDZ=?,A.ISCOUNTRY=?,A.C_WDLX =?,A.C_YZBM=?,A.V_YYWDBH=?,A.V_YYWDMC=?,A.V_GPSJD=?,A.V_GPSWD=?,A.YLGZDID  =?,A.YLGZDMC=?,A.V_STATUS=?,A.D_SQRQ=?,A.D_SPRQ=? where A.CPBD_LOAD_DT < C.CPBD_LOAD_DT " + "when not matched then " + "insert(A.V_SFMC,A.V_SFDM,A.V_DSDM,A.V_DSMC,A.V_QXDM,A.V_XSMC,A.V_TDJGBH,A.V_TDJGMC,A.V_JGBH,A.V_JGMC,A.V_LXRXM,A.V_LXDH,A.V_SJHM,A.V_LXDZ,A.ISCOUNTRY,A.C_WDLX ,A.C_YZBM,A.V_YYWDBH,A.V_YYWDMC,A.V_GPSJD,A.V_GPSWD,A.YLGZDID  ,A.YLGZDMC,A.V_STATUS,A.D_SQRQ,A.D_SPRQ,A.CPBD_LOAD_DT) values " + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
-
         Long recordId = stationInfoService.insertRecord("STATIONINFO", batchNo);
+        String exeSql = "merge into STATIONINFO A USING" + " (select ? V_JGBH, ? CPBD_LOAD_DT  from dual ) C " + "ON(A.V_JGBH=C.V_JGBH) " + "when matched then " + "update SET A.CPBD_LOAD_DT=?,     A.V_SFMC=?,A.V_SFDM=?,A.V_DSDM=?,A.V_DSMC=?,A.V_QXDM=?,A.V_XSMC=?,A.V_TDJGBH=?,A.V_TDJGMC=?,A.V_JGMC=?,A.V_LXRXM=?,A.V_LXDH=?,A.V_SJHM=?,A.V_LXDZ=?,A.ISCOUNTRY=?,A.C_WDLX =?,A.C_YZBM=?,A.V_YYWDBH=?,A.V_YYWDMC=?,A.V_GPSJD=?,A.V_GPSWD=?,A.YLGZDID  =?,A.YLGZDMC=?,A.V_STATUS=?,A.D_SQRQ=?,A.D_SPRQ=? where A.CPBD_LOAD_DT < C.CPBD_LOAD_DT " + "when not matched then " + "insert(A.V_SFMC,A.V_SFDM,A.V_DSDM,A.V_DSMC,A.V_QXDM,A.V_XSMC,A.V_TDJGBH,A.V_TDJGMC,A.V_JGBH,A.V_JGMC,A.V_LXRXM,A.V_LXDH,A.V_SJHM,A.V_LXDZ,A.ISCOUNTRY,A.C_WDLX ,A.C_YZBM,A.V_YYWDBH,A.V_YYWDMC,A.V_GPSJD,A.V_GPSWD,A.YLGZDID  ,A.YLGZDMC,A.V_STATUS,A.D_SQRQ,A.D_SPRQ,A.CPBD_LOAD_DT) values " + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
         Long totalSize = 0L;
 
         int pageNum = 0;
-        int pageSize = 1000;
+//        int pageSize = 1000;
 
         //璁剧疆鍥炴粴鐐�
-        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+//        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
 
         try {
             // 鏌ヨ鎬绘暟
             Long totalElements = ZyytUtil.getApiTotalElements("STATIONINFO", yestDay);
-            Long totalPages = ZyytUtil.calcPages(totalElements, pageSize);
-            log.info("鍏眥}鏉℃暟鎹�,姣忛〉{}鏉★紝鍙垎{}椤碉紝", totalElements, pageSize, totalPages);
+            if (totalElements == null || totalElements == 0) {
+                log.info("鍏�0鏉℃暟鎹�");
+                stationInfoService.updateRecord(recordId, 0, totalSize, "鏈媺鍙栧埌鏁版嵁");
+                return;
+            }
+            Long totalPages = ZyytUtil.calcPages(totalElements, PAGESIZE);
+            log.info("鍏眥}鏉℃暟鎹�,姣忛〉{}鏉★紝鍙垎{}椤碉紝", totalElements, PAGESIZE, totalPages);
             for (pageNum = 0; pageNum <= totalPages - 1; pageNum++) {
-                ZyytDataResult<StationInfo> zyytDataResult = stationInfoService.getData(pageNum, pageSize);
+                ZyytDataResult<StationInfo> zyytDataResult = stationInfoService.getData(pageNum, PAGESIZE);
 
                 List<StationInfo> stationInfoList = zyytDataResult.getContent();
                 log.info("绗瑊}娆¤幏鍙�,鏈鑾峰彇鍒皗}鏉℃暟鎹�", pageNum + 1, zyytDataResult.getContentSize());
@@ -169,10 +172,10 @@
                         });
                     } catch (Exception e) {
                         log.error("璁剧疆鍙傛暟鍊兼姤閿欎簡");
-                        e.printStackTrace();
+//                        e.printStackTrace();
                         log.error(e.getMessage());
                         //鎵嬪伐鍥炴粴寮傚父
-                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+//                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                         stationInfoService.updateRecord(recordId, 1, 0L, e.getMessage());
                         return;
                     }
@@ -191,6 +194,13 @@
         log.info("路路路路路路路路路路路涓偖鏄撻�� {}绔欑偣淇℃伅 浠诲姟鎵ц瀹屾瘯路路路路路路路路路路路", yestDay);
     }
 
+    private int PAGESIZE = 1000;
+
+    @Value("${pullData.pageSize}")
+    public void setTRYNUM(Integer pageSize) {
+        pageSize = pageSize <= 0 ? 1000 : pageSize;
+        this.PAGESIZE = pageSize;
+    }
 
     //绀句細蹇�掓棩鎶ヨ〃
 
@@ -204,30 +214,36 @@
             log.info("YYZT_T_SHKDRB 鐨� 鎵规{}姝e湪杩愯", batchNo);
             return;
         }
+        Zyyt<YyztTShkdrb> stationInfoService = ZyytUtil.getBusinessEntity("YYZT_T_SHKDRB", date);
+        Long recordId = stationInfoService.insertRecord("YYZT_T_SHKDRB", batchNo);
 
         // 鍒犻櫎宸叉湁鎵规鏁版嵁
         String delSql = "delete from YYZT_T_SHKDRB where BATCH_NO='" + batchNo + "'";
         jdbcTemplate.update(delSql);
 
-        Zyyt<YyztTShkdrb> stationInfoService = ZyytUtil.getBusinessEntity("YYZT_T_SHKDRB", date);
-        Long recordId = stationInfoService.insertRecord("YYZT_T_SHKDRB", batchNo);
         Long totalSize = 0L;
+        Long totalElements = 0L;
 
         //璁剧疆鍥炴粴鐐�
-        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+//        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
         try {
             int pageNum = 0;
-            int pageSize = 1000;
+//            int pageSize = 1000;
 
             String batchInsertSql = "INSERT INTO YYZT_T_SHKDRB (\"V_SFDM\",\"V_SFMC\",\"V_DSDM\",\"V_DSMC\",\"V_QXDM\",\"V_XSMC\",\"V_TDJGBH\",\"V_TDJGMC\",\"V_JGBH\",\"V_JGMC\",\"D_RBRQ\",\"N_ZGYZLJS\",\"N_ZGYZQJS\",\"N_SHKDLJS\",\"N_SHKDQJS\",\"N_ZTLJS\",\"N_ZTQJS\",\"N_YTLJS\",\"N_YTQJS\",\"N_STLJS\",\"N_STQJS\",\"N_BSLJS\",\"N_BSQJS\",\"N_YDLJS\",\"N_YDQJS\",\"N_YFLJS\",\"N_YFQJS\",\"N_JDLJS\",\"N_JDQJS\",\"N_JTLJS\",\"N_JTQJS\",\"N_TTLJS\",\"N_TTQJS\",\"N_DBLJS\",\"N_DBQJS\",\"N_DNLJS\",\"N_DNQJS\",\"N_FWLJS\",\"N_FWQJS\",\"N_YSLJS\",\"N_YSQJS\",\"N_QTLJS\",\"N_QTQJS\",\"RESERVED1\",\"RESERVED2\",\"RESERVED3\",\"RESERVED4\",\"BATCH_NO\") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
 
             // 鏌ヨ鎬绘暟
-            Long totalElements = ZyytUtil.getApiTotalElements("YYZT_T_SHKDRB", date);
-            Long totalPages = ZyytUtil.calcPages(totalElements, pageSize);
-            log.info("绀句細蹇�掓棩鎶ヨ〃(YYZT_T_SHKDRB) 鍏眥}鏉℃暟鎹�,姣忛〉{}鏉★紝鍙垎{}椤碉紝", totalElements, pageSize, totalPages);
+            totalElements = ZyytUtil.getApiTotalElements("YYZT_T_SHKDRB", date);
+            if (totalElements == null || totalElements == 0) {
+                log.info("鍏�0鏉℃暟鎹�");
+                stationInfoService.updateRecord(recordId, 0, totalSize, "鏈媺鍙栧埌鏁版嵁");
+                return;
+            }
+            Long totalPages = ZyytUtil.calcPages(totalElements, PAGESIZE);
+            log.info("绀句細蹇�掓棩鎶ヨ〃(YYZT_T_SHKDRB) 鍏眥}鏉℃暟鎹�,姣忛〉{}鏉★紝鍙垎{}椤碉紝", totalElements, PAGESIZE, totalPages);
 
             for (pageNum = 0; pageNum <= totalPages - 1; pageNum++) {
-                ZyytDataResult<YyztTShkdrb> zyytDataResult = stationInfoService.getData(pageNum, pageSize);
+                ZyytDataResult<YyztTShkdrb> zyytDataResult = stationInfoService.getData(pageNum, PAGESIZE);
 
                 List<YyztTShkdrb> stationInfoList = zyytDataResult.getContent();
                 totalSize += zyytDataResult.getContentSize();
@@ -304,16 +320,21 @@
                     } catch (Exception e) {
                         log.error(e.getMessage());
                         //鎵嬪伐鍥炴粴寮傚父
-                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+//                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                         stationInfoService.updateRecord(recordId, 1, 0L, e.getMessage());
                         return;
                     }
                 }
             }
-        } catch (
-                Exception e) {
+        } catch (Exception e) {
             log.error(e.getMessage());
             stationInfoService.updateRecord(recordId, 1, 0L, e.getMessage());
+            return;
+        }
+        if (totalSize != totalElements) {
+            log.error("鎷夊彇鍒扮殑鎬绘潯鏁帮細{}涓庢帴鍙f樉绀虹殑鎬绘潯鏁帮細{}涓嶄竴鑷达紝鍒犻櫎鎷夊彇鍒版暟鎹紒 ", totalSize, totalElements);
+            jdbcTemplate.update(delSql);
+            stationInfoService.updateRecord(recordId, 1, 0L, "鎷夊彇鍒扮殑鎬绘潯鏁颁笌鎺ュ彛鏄剧ず鐨勬�绘潯鏁颁笉涓�鑷达紒");
             return;
         }
         stationInfoService.updateRecord(recordId, 0, totalSize, null);
@@ -330,29 +351,36 @@
             log.info("YYZT_T_DJTJB 鐨� 鎵规{}姝e湪杩愯", batchNo);
             return;
         }
+        Zyyt<YyztTDjtjb> stationInfoService = ZyytUtil.getBusinessEntity("YYZT_T_DJTJB", date);
+        Long recordId = stationInfoService.insertRecord("YYZT_T_DJTJB", batchNo);
 
         // 鍒犻櫎宸叉湁鎵规鏁版嵁
         String delSql = "delete from YYZT_T_DJTJB where BATCH_NO='" + batchNo + "'";
         jdbcTemplate.update(delSql);
 
-        Zyyt<YyztTDjtjb> stationInfoService = ZyytUtil.getBusinessEntity("YYZT_T_DJTJB", date);
-        Long recordId = stationInfoService.insertRecord("YYZT_T_DJTJB", batchNo);
+
         Long totalSize = 0L;
+        Long totalElements = 0L;
         //璁剧疆鍥炴粴鐐�
-        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+//        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
 
         try {
             int pageNum = 0;
-            int pageSize = 1000;
+//            int pageSize = 1000;
 
             String batchInsertSql = "INSERT INTO YYZT_T_DJTJB (\"V_SFDM\", \"V_SFMC\", \"V_DSDM\", \"V_DSMC\", \"V_QXDM\", \"V_XSMC\", \"V_TDJGBH\", \"V_JGBH\", \"V_JGMC\", \"D_RBRQ\", \"V_YLGZDID\", \"V_YLGZDMC\", \"N_SJYWL\", \"N_TKYWL\", \"N_BKYEL\", \"N_SJZJE\", \"N_TKSR\", \"N_BKSR\", \"BATCH_NO\") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
             // 鏌ヨ鎬绘暟
-            Long totalElements = ZyytUtil.getApiTotalElements("YYZT_T_DJTJB", date);
-            Long totalPages = ZyytUtil.calcPages(totalElements, pageSize);
-            log.info("鍏眥}鏉℃暟鎹�,姣忛〉{}鏉★紝鍙垎{}椤碉紝", totalElements, pageSize, totalPages);
+            totalElements = ZyytUtil.getApiTotalElements("YYZT_T_DJTJB", date);
+            if (totalElements == null || totalElements == 0) {
+                log.info("鍏�0鏉℃暟鎹�");
+                stationInfoService.updateRecord(recordId, 0, totalSize, "鏈媺鍙栧埌鏁版嵁");
+                return;
+            }
+            Long totalPages = ZyytUtil.calcPages(totalElements, PAGESIZE);
+            log.info("鍏眥}鏉℃暟鎹�,姣忛〉{}鏉★紝鍙垎{}椤碉紝", totalElements, PAGESIZE, totalPages);
 
             for (pageNum = 0; pageNum <= totalPages - 1; pageNum++) {
-                ZyytDataResult<YyztTDjtjb> zyytDataResult = stationInfoService.getData(pageNum, pageSize);
+                ZyytDataResult<YyztTDjtjb> zyytDataResult = stationInfoService.getData(pageNum, PAGESIZE);
                 List<YyztTDjtjb> djtjbList = zyytDataResult.getContent();
                 totalSize += zyytDataResult.getContentSize();
                 log.info("绗瑊}娆¤幏鍙�,鏈鑾峰彇鍒皗}鏉℃暟鎹�", pageNum + 1, zyytDataResult.getContentSize());
@@ -401,7 +429,7 @@
                     } catch (Exception e) {
                         log.error(e.getMessage());
                         //鎵嬪伐鍥炴粴寮傚父
-                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+//                        TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
                         stationInfoService.updateRecord(recordId, 1, 0L, e.getMessage());
                         return;
                     }
@@ -413,7 +441,12 @@
             stationInfoService.updateRecord(recordId, 1, 0L, e.getMessage());
             return;
         }
-
+        if (totalSize != totalElements) {
+            log.error("鎷夊彇鍒扮殑鎬绘潯鏁帮細{}涓庢帴鍙f樉绀虹殑鎬绘潯鏁帮細{}涓嶄竴鑷达紝鍒犻櫎鎷夊彇鍒版暟鎹紒 ", totalSize, totalElements);
+            jdbcTemplate.update(delSql);
+            stationInfoService.updateRecord(recordId, 1, 0L, "鎷夊彇鍒扮殑鎬绘潯鏁颁笌鎺ュ彛鏄剧ず鐨勬�绘潯鏁颁笉涓�鑷达紒");
+            return;
+        }
         stationInfoService.updateRecord(recordId, 0, totalSize, null);
         log.info("路路路路路路路路路路路涓偖鏄撻�� 浠e瘎缁熻琛� -- [{}] 浠诲姟鎵ц瀹屾瘯路路路路路路路路路路路", date);
     }
diff --git a/src/main/java/com/integrated/zyyt/util/ZyytUtil.java b/src/main/java/com/integrated/zyyt/util/ZyytUtil.java
index acf13b3..bd3fc66 100644
--- a/src/main/java/com/integrated/zyyt/util/ZyytUtil.java
+++ b/src/main/java/com/integrated/zyyt/util/ZyytUtil.java
@@ -1,7 +1,9 @@
 package com.integrated.zyyt.util;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.io.IORuntimeException;
 import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.integrated.zyyt.ZyytConstant;
@@ -13,8 +15,12 @@
 import com.integrated.zyyt.enetity.business.ZyytTShkdrb;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import java.time.LocalDate;
 import java.util.HashMap;
@@ -31,6 +37,27 @@
 @Component
 @Slf4j
 public class ZyytUtil {
+    /**
+     * 瓒呮椂閲嶈瘯娆℃暟
+     */
+    private static int TRYNUM = 3;
+
+    @Value("${pullData.tryNum}")
+    public void setTRYNUM(Integer tryNum) {
+        tryNum = tryNum <= 0 ? 3 : tryNum;
+        this.TRYNUM = tryNum;
+    }
+
+    /**
+     * http瓒呮椂鏃堕棿璁剧疆
+     */
+    private static int TRYTIMEOUT = 3 * 1000;
+
+    @Value("${pullData.tryTimeOut}")
+    public void setTRYTIMEOUT(Integer tryTimeOut) {
+        this.TRYTIMEOUT = tryTimeOut * 1000;
+    }
+
     private static JdbcTemplate jdbcTemplate;
 
     @Autowired
@@ -67,19 +94,54 @@
         params.put("ciphertext", eciphrtext);
         params.put("client", client);
         params.put("secret", secret);
-
-        String httpResult = HttpRequest.post(url)
+        HttpRequest httpRequest = HttpRequest.post(url)
                 .form(params)
                 .header("X-EOS-SourceSysKey", sourceSysKey)
-                .execute()
-                .body();
+                .timeout(TRYTIMEOUT);
+        log.info("瓒呮椂鏃堕棿涓簕}姣", TRYTIMEOUT);
         log.info("url =銆嬨�媨}", url);
         log.info("params =銆嬨�媨}", params);
+        HttpResponse httpResponse = null;
+        int tryNumTemp = 1;
+        boolean isTimeOut = false;
+        try {
+            httpResponse = httpRequest.execute();
+        } catch (IORuntimeException e) {
+//            e.printStackTrace();
+            // 瓒呮椂閲嶈瘯
+            isTimeOut = true;
+            log.error(e.getMessage());
+        }
+        while (tryNumTemp <= TRYNUM && isTimeOut) {
+            log.error("璇锋眰鎺ュ彛瓒呮椂锛岃繘琛岀{}娆¢噸璇曪紒", tryNumTemp);
+            try {
+                httpResponse = httpRequest.execute();
+                isTimeOut = false;
+            } catch (IORuntimeException e) {
+//                e.printStackTrace();
+                // 瓒呮椂閲嶈瘯
+                log.error(e.getMessage());
+            }
+            tryNumTemp++;
+        }
+        if (httpResponse == null) {
+            log.error("璇锋眰鎺ュ彛瓒呮椂锛岃鑱旂郴鎺ュ彛鎻愪緵鏂癸紒");
+            return null;
+        }
+        int responseStatus = httpResponse.getStatus();
+        if (HttpStatus.NOT_FOUND.value() == responseStatus) {
+            log.error("鎺ュ彛API寮傚父锛岃鑱旂郴鎺ュ彛鎻愪緵鏂癸紒HttpStatus锛歿}", responseStatus);
+            return null;
+        } else if (HttpStatus.OK.value() != responseStatus) {
+            log.error("璇锋眰鎺ュ彛鐘舵�佹湁璇紒HttpStatus锛歿}", responseStatus);
+            return null;
+        }
+        String httpResult = httpResponse.body();
         log.info("result =銆嬨�媨}", httpResult);
         try {
             return JSONObject.parseObject(httpResult, TokenResult.class);
         } catch (Exception e) {
-            log.error(e.getMessage());
+            log.error("Token瑙f瀽澶辫触锛�", e.getMessage());
             return null;
         }
     }
@@ -94,6 +156,10 @@
      * @return
      */
     public static <T> ZyytDataResult<T> getData(String url, String bearToken, String sourceSysKey, JSONObject params, int pageNum, int pageSize, Class<T> tClass) {
+        if (StringUtils.isEmpty(bearToken)) {
+            log.error("bearToken涓嶈兘涓簄ull锛�");
+            return null;
+        }
         HashMap header = new HashMap();
         header.put("Authorization", "Bearer " + bearToken);
         header.put("X-EOS-SourceSysKey", sourceSysKey);
@@ -102,23 +168,55 @@
         log.info("url =銆嬨�媨}", trueUrl);
         log.info("header=>>bearToken銆嬨�媨}\r\nSourceSysKey=>>{}", bearToken, sourceSysKey);
         log.info("params =銆嬨�媨}", params);
-        String httpResult = HttpRequest.post(trueUrl)
+        HttpRequest httpRequest = HttpRequest.post(trueUrl)
                 .addHeaders(header)
                 .contentType("application/json")
                 .body(params.toJSONString())
-                .timeout(1000 * 50)
-                .execute()
-                .body();
+                .timeout(TRYTIMEOUT);
+        log.info("瓒呮椂鏃堕棿涓簕}姣", TRYTIMEOUT);
+        HttpResponse httpResponse = null;
+
+        int tryNumTemp = 1;
+        boolean isTimeOut = false;
+        try {
+            httpResponse = httpRequest.execute();
+        } catch (IORuntimeException e) {
+            // 瓒呮椂閲嶈瘯
+            isTimeOut = true;
+            log.error(e.getMessage());
+        }
+        while (tryNumTemp <= TRYNUM && isTimeOut) {
+            log.error("璇锋眰鎺ュ彛瓒呮椂锛岃繘琛岀{}娆¢噸璇曪紒", tryNumTemp);
+            try {
+                httpResponse = httpRequest.execute();
+                isTimeOut = false;
+            } catch (IORuntimeException e) {
+//                e.printStackTrace();
+                // 瓒呮椂閲嶈瘯
+                log.error(e.getMessage());
+            }
+            tryNumTemp++;
+        }
+        if (httpResponse == null) {
+            log.error("璇锋眰鎺ュ彛瓒呮椂锛岃鑱旂郴鎺ュ彛鎻愪緵鏂癸紒");
+            return null;
+        }
+        int responseStatus = httpResponse.getStatus();
+        if (HttpStatus.NOT_FOUND.value() != responseStatus) {
+            log.error("鎺ュ彛API寮傚父锛岃鑱旂郴鎺ュ彛鎻愪緵鏂癸紒HttpStatus锛歿}", responseStatus);
+            return null;
+        } else if (HttpStatus.OK.value() != responseStatus) {
+            log.error("璇锋眰鎺ュ彛鐘舵�佹湁璇紒HttpStatus锛歿}", responseStatus);
+            return null;
+        }
+        String httpResult = httpResponse.body();
         try {
             JSONObject respJson = JSONObject.parseObject(httpResult);
-            log.info("寮�濮嬭В鏋愮粨鏋�4");
             Long contentSize = respJson.getLong("contentSize");
             if (contentSize != null && contentSize.compareTo(0L) > 0) {
                 JSONArray dataArray = respJson.getJSONArray("content");
-                log.info("寮�濮嬭В鏋愮粨鏋�5");
                 List<T> content = dataArray.toJavaList(tClass);
                 respJson.remove("content");
-                log.info("寮�濮嬭В鏋愮粨鏋�6");
                 ZyytDataResult<T> zyytDataResult = respJson.toJavaObject(ZyytDataResult.class);
                 zyytDataResult.setContent(content);
                 return zyytDataResult;
@@ -128,7 +226,7 @@
             }
         } catch (Exception e) {
             log.error("getData 寮傚父");
-            e.printStackTrace();
+//            e.printStackTrace();
             return null;
         }
     }
@@ -144,7 +242,12 @@
         String sql = "SELECT*FROM (SELECT*FROM ZYYT_RECORD WHERE BATCH_NO='" + getBatchNo(date) + "'  AND TABLE_NAME='" + tableName + "' ORDER BY START_TIME DESC) tmp WHERE ROWNUM<=1";
         Map<String, Object> map = null;
         try {
-            map = jdbcTemplate.queryForMap(sql);
+//            map = jdbcTemplate.queryForMap(sql);
+            List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
+            if (CollectionUtils.isEmpty(maps)) {
+                return map;
+            }
+            map = maps.get(0);
         } catch (Exception e) {
             log.error("sql=={} 鏌ヨ鍙戠敓浜嗗紓甯�,鍙兘鍥犱负娌℃湁鏌ヨ鍒版暟鎹�", sql);
             log.error(e.getMessage());
@@ -278,6 +381,10 @@
     public static Long getApiTotalElements(String tableName, LocalDate date) {
         Zyyt businessEntity = getBusinessEntity(tableName, date);
         ZyytDataResult zyytDataResult = businessEntity.getData(0, 1);
+        if (zyytDataResult == null) {
+            log.info("鎷夊彇鏁版嵁澶辫触锛屾媺鍙栬繑鍥炲�间负null");
+            return 0l;
+        }
         log.info("鎬诲叡鎷夊彇鍒版暟鎹畕}鏉�", zyytDataResult.getTotalElements());
         return zyytDataResult.getTotalElements();
     }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 7a4e4fa..9d41d6d 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -12,7 +12,7 @@
     driver-class-name: oracle.jdbc.driver.OracleDriver
     #url: jdbc:oracle:thin:@127.0.0.1:1521/helowin
     #    url: jdbc:oracle:thin:@121.36.40.27:11521/helowin
-    url: jdbc:oracle:thin:@1.14.252.104:7101/ORCL
+    url: jdbc:oracle:thin:@1.14.252.33:7101/ORCL
     username: zhfwpt
     password: Zhfwpt_2021
     hikari:
@@ -47,3 +47,9 @@
     #绔欑偣淇℃伅琛�
     station: https://10.225.71.10:9092
 
+pullData:
+  tryNum: 3
+  # 鍗曚綅绉�
+  tryTimeOut: 5
+  pageSize: 1000
+
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index ad394e9..48fe9a6 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -54,3 +54,9 @@
     djtjb: http://10.225.71.10:9090
     #绔欑偣淇℃伅琛�
     station: https://10.225.71.10:9092
+
+pullData:
+  tryNum: 5
+  # 鍗曚綅绉�
+  tryTimeOut: 5
+  pageSize: 1000

--
Gitblit v1.9.1