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/service/ZyytService.java | 244 +++++++++++++++++++++++++++++------------------- 1 files changed, 148 insertions(+), 96 deletions(-) diff --git a/src/main/java/com/integrated/zyyt/service/ZyytService.java b/src/main/java/com/integrated/zyyt/service/ZyytService.java index 0ec84b3..a6286f0 100644 --- a/src/main/java/com/integrated/zyyt/service/ZyytService.java +++ b/src/main/java/com/integrated/zyyt/service/ZyytService.java @@ -1,6 +1,5 @@ package com.integrated.zyyt.service; -import com.alibaba.fastjson.JSON; import com.integrated.zyyt.enetity.StationInfo; import com.integrated.zyyt.enetity.YyztTDjtjb; import com.integrated.zyyt.enetity.YyztTShkdrb; @@ -8,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; @@ -25,7 +23,7 @@ @Service @Slf4j -@Transactional(rollbackFor = Exception.class) +//@Transactional(rollbackFor = Exception.class) public class ZyytService { @Resource private JdbcTemplate jdbcTemplate; @@ -42,24 +40,29 @@ } 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 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 " + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 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 = 2000; +// 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()); @@ -75,7 +78,7 @@ int fromIndex = i * batchSize; // 缁撴潫浣嶇疆 int toIndex = (i + 1) * batchSize < length ? (i + 1) * batchSize : length; - if (fromIndex == batchSize) { + if (fromIndex == length) { continue; } System.out.println(fromIndex + " === " + toIndex); @@ -85,67 +88,81 @@ @Override public void setValues(PreparedStatement ps, int i) throws SQLException { StationInfo stationInfo = stationInfoListCopy.get(i); - log.info("stationInfo==> {}", JSON.toJSONString(stationInfo)); +// log.info("stationInfo==> {}", JSON.toJSONString(stationInfo)); - ps.setObject(1, stationInfo.getVJgbh()); + ps.setString(1, stationInfo.getVJgbh()); + // 6.14鏂板 + // 鏌ヨ鐢� + ps.setDate(2, stationInfo.getCpbdLoadDt() == null ? null : + new Date(stationInfo.getCpbdLoadDt().getTime())); + // 鏇存柊鐢� + ps.setDate(3, stationInfo.getCpbdLoadDt() == null ? null : + new Date(stationInfo.getCpbdLoadDt().getTime())); - ps.setObject(2, stationInfo.getVSfmc()); - ps.setObject(3, stationInfo.getVSfdm()); - ps.setObject(4, stationInfo.getVDsdm()); - ps.setObject(5, stationInfo.getVDsmc()); - ps.setObject(6, stationInfo.getVQxdm()); - ps.setObject(7, stationInfo.getVXsmc()); - ps.setObject(8, stationInfo.getVTdjgbh()); - ps.setObject(9, stationInfo.getVTdjgmc()); - ps.setObject(10, stationInfo.getVJgmc()); - ps.setObject(11, stationInfo.getVLxrxm()); - ps.setObject(12, stationInfo.getVLxdh()); - ps.setObject(13, stationInfo.getVSjhm()); - ps.setObject(14, stationInfo.getVLxdz()); - ps.setObject(15, stationInfo.getIscountry()); - ps.setObject(16, stationInfo.getCWdlx()); - ps.setObject(17, stationInfo.getCYzbm()); - ps.setObject(18, stationInfo.getVYywdbh()); - ps.setObject(19, stationInfo.getVYywdmc()); - ps.setObject(20, stationInfo.getVGpsjd()); - ps.setObject(21, stationInfo.getVGpswd()); - ps.setObject(22, stationInfo.getYlgzdid()); - ps.setObject(23, stationInfo.getYlgzdmc()); - ps.setObject(24, stationInfo.getVStatus()); - ps.setDate(25, new Date(stationInfo.getDSqrq().getTime())); -// ps.setObject(25, stationInfo.getDSqrq()); -// ps.setObject(26, stationInfo.getDSprq()); - ps.setDate(26, new Date(stationInfo.getDSprq().getTime())); + ps.setString(4, stationInfo.getVSfmc()); + ps.setString(5, stationInfo.getVSfdm()); + ps.setString(6, stationInfo.getVDsdm()); + ps.setString(7, stationInfo.getVDsmc()); + ps.setString(8, stationInfo.getVQxdm()); + ps.setString(9, stationInfo.getVXsmc()); + ps.setString(10, stationInfo.getVTdjgbh()); + ps.setString(11, stationInfo.getVTdjgmc()); + ps.setString(12, stationInfo.getVJgmc()); + ps.setString(13, stationInfo.getVLxrxm()); + ps.setString(14, stationInfo.getVLxdh()); + ps.setString(15, stationInfo.getVSjhm()); + ps.setString(16, stationInfo.getVLxdz()); + ps.setString(17, stationInfo.getIscountry()); + ps.setShort(18, stationInfo.getCWdlx()); + ps.setString(19, stationInfo.getCYzbm()); + ps.setString(20, stationInfo.getVYywdbh()); + ps.setString(21, stationInfo.getVYywdmc()); + ps.setString(22, stationInfo.getVGpsjd()); + ps.setString(23, stationInfo.getVGpswd()); + ps.setString(24, stationInfo.getYlgzdid()); + ps.setString(25, stationInfo.getYlgzdmc()); + ps.setString(26, stationInfo.getVStatus()); +// ps.setDate(25, new Date(stationInfo.getDSqrq().getTime())); + ps.setDate(27, + stationInfo.getDSqrq() == null ? null : + new Date(stationInfo.getDSqrq().getTime())); +// ps.setString(25, stationInfo.getDSqrq()); +// ps.setString(26, stationInfo.getDSprq()); + ps.setDate(28, stationInfo.getDSprq() == null ? null : + new Date(stationInfo.getDSprq().getTime())); - ps.setObject(27, stationInfo.getVSfmc()); - ps.setObject(28, stationInfo.getVSfdm()); - ps.setObject(29, stationInfo.getVDsdm()); - ps.setObject(30, stationInfo.getVDsmc()); - ps.setObject(31, stationInfo.getVQxdm()); - ps.setObject(32, stationInfo.getVXsmc()); - ps.setObject(33, stationInfo.getVTdjgbh()); - ps.setObject(34, stationInfo.getVTdjgmc()); - ps.setObject(35, stationInfo.getVJgbh()); - ps.setObject(36, stationInfo.getVJgmc()); - ps.setObject(37, stationInfo.getVLxrxm()); - ps.setObject(38, stationInfo.getVLxdh()); - ps.setObject(39, stationInfo.getVSjhm()); - ps.setObject(40, stationInfo.getVLxdz()); - ps.setObject(41, stationInfo.getIscountry()); - ps.setObject(42, stationInfo.getCWdlx()); - ps.setObject(43, stationInfo.getCYzbm()); - ps.setObject(44, stationInfo.getVYywdbh()); - ps.setObject(45, stationInfo.getVYywdmc()); - ps.setObject(46, stationInfo.getVGpsjd()); - ps.setObject(47, stationInfo.getVGpswd()); - ps.setObject(48, stationInfo.getYlgzdid()); - ps.setObject(49, stationInfo.getYlgzdmc()); - ps.setObject(50, stationInfo.getVStatus()); -// ps.setObject(51, stationInfo.getDSqrq()); - ps.setDate(51, new Date(stationInfo.getDSqrq().getTime())); + ps.setString(29, stationInfo.getVSfmc()); + ps.setString(30, stationInfo.getVSfdm()); + ps.setString(31, stationInfo.getVDsdm()); + ps.setString(32, stationInfo.getVDsmc()); + ps.setString(33, stationInfo.getVQxdm()); + ps.setString(34, stationInfo.getVXsmc()); + ps.setString(35, stationInfo.getVTdjgbh()); + ps.setString(36, stationInfo.getVTdjgmc()); + ps.setString(37, stationInfo.getVJgbh()); + ps.setString(38, stationInfo.getVJgmc()); + ps.setString(39, stationInfo.getVLxrxm()); + ps.setString(40, stationInfo.getVLxdh()); + ps.setString(41, stationInfo.getVSjhm()); + ps.setString(42, stationInfo.getVLxdz()); + ps.setString(43, stationInfo.getIscountry()); + ps.setShort(44, stationInfo.getCWdlx()); + ps.setString(45, stationInfo.getCYzbm()); + ps.setString(46, stationInfo.getVYywdbh()); + ps.setString(47, stationInfo.getVYywdmc()); + ps.setString(48, stationInfo.getVGpsjd()); + ps.setString(49, stationInfo.getVGpswd()); + ps.setString(50, stationInfo.getYlgzdid()); + ps.setString(51, stationInfo.getYlgzdmc()); + ps.setString(52, stationInfo.getVStatus()); +// ps.setString(51, stationInfo.getDSqrq()); + ps.setDate(53, stationInfo.getDSqrq() == null ? null : new Date(stationInfo.getDSqrq().getTime())); - ps.setObject(52, stationInfo.getDSprq()); - ps.setDate(52, new Date(stationInfo.getDSprq().getTime())); + ps.setDate(54, stationInfo.getDSprq() == null ? null : new Date(stationInfo.getDSprq().getTime())); + + //6.14鏂板 insert鐢� + ps.setDate(55, stationInfo.getCpbdLoadDt() == null ? null : + new Date(stationInfo.getCpbdLoadDt().getTime())); } @Override @@ -154,13 +171,19 @@ } }); } catch (Exception e) { + log.error("璁剧疆鍙傛暟鍊兼姤閿欎簡"); +// e.printStackTrace(); log.error(e.getMessage()); //鎵嬪伐鍥炴粴寮傚父 - TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); +// TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); stationInfoService.updateRecord(recordId, 1, 0L, e.getMessage()); return; } + //璇曡瘯浠g爜 +// break; } + //璇曡瘯浠g爜 +// break; } } catch (Exception e) { log.error(e.getMessage()); @@ -171,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; + } //绀句細蹇�掓棩鎶ヨ〃 @@ -184,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 = 500; +// 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(); @@ -223,7 +259,7 @@ int fromIndex = i * batchSize; // 缁撴潫浣嶇疆 int toIndex = (i + 1) * batchSize < length ? (i + 1) * batchSize : length; - if (fromIndex == batchSize) { + if (fromIndex == length) { continue; } List<YyztTShkdrb> yyztTShkdrbs = stationInfoList.subList(fromIndex, toIndex); @@ -278,23 +314,27 @@ item.getReserved2(), item.getReserved3(), item.getReserved4(), - item.getBatchNo() - }); + batchNo}); }); jdbcTemplate.batchUpdate(batchInsertSql, insertShkdrbList); } 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); @@ -311,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 = 500; +// 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()); @@ -348,7 +395,7 @@ int fromIndex = i * batchSize; // 缁撴潫浣嶇疆 int toIndex = (i + 1) * batchSize < length ? (i + 1) * batchSize : length; - if (fromIndex == batchSize) { + if (fromIndex == length) { continue; } System.out.println(fromIndex + " === " + toIndex); @@ -375,14 +422,14 @@ item.getNSjzje(), item.getNTksr(), item.getNBksr(), - item.getBatchNo() + batchNo }); }); jdbcTemplate.batchUpdate(batchInsertSql, insertShkdrbList); } catch (Exception e) { log.error(e.getMessage()); //鎵嬪伐鍥炴粴寮傚父 - TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); +// TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); stationInfoService.updateRecord(recordId, 1, 0L, e.getMessage()); return; } @@ -394,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); } -- Gitblit v1.9.1