package com.iailab.module.ansteel.job.task; import com.iailab.module.ansteel.ems.entity.ByqlzAdsEntity; import com.iailab.module.ansteel.ems.service.ByqlzAdsService; import com.iailab.module.ansteel.sync.service.SyncLogService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.sql.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * 同步ems.byqlz_ads_wh_cl_jh01_byq表定时任务 */ @Component("syncEmsTask") public class SyncEmsTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); private static final String URL = "jdbc:oracle:thin:@//10.50.37.36:1521/ems"; private static final String USER = "byqdg"; private static final String PASSWORD = "ByqnyEn_0306"; @Autowired private ByqlzAdsService byqlzAdsService; @Autowired private SyncLogService syncLogService; @Override @Transactional(rollbackFor = Exception.class) public void run(String params) { logger.info("SyncEmsTask定时任务正在执行,参数为:{}", params); String remark = "同步成功"; List resultList = new ArrayList<>(); Calendar cal = Calendar.getInstance(); String currentDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.getTime());//当前日期 String yearMonth = new SimpleDateFormat("yyyyMM").format(cal.getTime());//当前年月 cal.add(Calendar.MONTH, -1); String lastMonth = new SimpleDateFormat("yyyyMM").format(cal.getTime());//上月年月 cal.add(Calendar.MONTH, -1); String upMonth = new SimpleDateFormat("yyyyMM").format(cal.getTime());//上上月年月 String sql = "SELECT * FROM ems.BYQLZ_ADS_WH_CL_JH01_BYQ WHERE date_code = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection(URL, USER, PASSWORD); pstmt = conn.prepareStatement(sql); // 设置参数 pstmt.setString(1, yearMonth); // 执行查询并处理结果 rs = pstmt.executeQuery(); if(!rs.isBeforeFirst()){ pstmt.setString(1, lastMonth); rs = pstmt.executeQuery(); if(!rs.isBeforeFirst()){ pstmt.setString(1, upMonth); rs = pstmt.executeQuery(); remark = "上月数据为空,同步上上月数据成功"; }else{ remark = "本月数据为空,同步上月数据成功"; } } byqlzAdsService.delete(yearMonth); while (rs.next()) { ByqlzAdsEntity entity = new ByqlzAdsEntity(); // 映射基础字段 entity.setRecCreateTime(currentDate); entity.setRecCreator(rs.getString("REC_CREATOR")); entity.setRecReviseTime(rs.getString("REC_REVISE_TIME")); entity.setRecRevisor(rs.getString("REC_REVISOR")); entity.setDateCode(yearMonth); entity.setMscLine(rs.getString("MSC_LINE")); entity.setIndexCode(rs.getString("INDEX_CODE")); entity.setMonthlyPlat(rs.getString("MONTHLY_PLAT")); // 映射每日产量字段 for (int i = 1; i <= 31; i++) { String val = rs.getString("VAL" + i); switch (i) { case 1: entity.setVal1(val); break; case 2: entity.setVal2(val); break; case 3: entity.setVal3(val); break; case 4: entity.setVal4(val); break; case 5: entity.setVal5(val); break; case 6: entity.setVal6(val); break; case 7: entity.setVal7(val); break; case 8: entity.setVal8(val); break; case 9: entity.setVal9(val); break; case 10: entity.setVal10(val); break; case 11: entity.setVal11(val); break; case 12: entity.setVal12(val); break; case 13: entity.setVal13(val); break; case 14: entity.setVal14(val); break; case 15: entity.setVal15(val); break; case 16: entity.setVal16(val); break; case 17: entity.setVal17(val); break; case 18: entity.setVal18(val); break; case 19: entity.setVal19(val); break; case 20: entity.setVal20(val); break; case 21: entity.setVal21(val); break; case 22: entity.setVal22(val); break; case 23: entity.setVal23(val); break; case 24: entity.setVal24(val); break; case 25: entity.setVal25(val); break; case 26: entity.setVal26(val); break; case 27: entity.setVal27(val); break; case 28: entity.setVal28(val); break; case 29: entity.setVal29(val); break; case 30: entity.setVal30(val); break; case 31: entity.setVal31(val); break; } } entity.setLoadTime(rs.getString("LOAD_TIME")); resultList.add(entity); } resultList.forEach(System.out::println); byqlzAdsService.save(resultList); syncLogService.save(remark); resultList.clear(); } catch (SQLException e) { logger.error("SyncEmsTask运行异常"); e.printStackTrace(); } finally { try { if (rs != null) rs.close(); // 先关闭结果集 if (pstmt != null) pstmt.close(); // 再关闭语句 if (conn != null) conn.close(); // 最后关闭连接 } catch (SQLException e) { e.printStackTrace(); } } logger.info("SyncEmsTask运行完成"); } }