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