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 com.iailab.module.model.api.mdk.MdkApi;
|
import com.iailab.module.model.api.mdk.dto.MdkScheduleReqDTO;
|
import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.sql.*;
|
import java.text.SimpleDateFormat;
|
import java.time.format.DateTimeFormatter;
|
import java.util.*;
|
import java.util.Date;
|
|
/**
|
* 同步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
|
public void run(String params) {
|
logger.info("SyncEmsTask定时任务正在执行,参数为:{}", params);
|
String remark = "同步成功";
|
List<ByqlzAdsEntity> 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 = ?";
|
|
try {
|
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
|
PreparedStatement pstmt = conn.prepareStatement(sql);
|
// 设置参数
|
pstmt.setString(1, yearMonth);
|
|
// 执行查询并处理结果
|
ResultSet rs = pstmt.executeQuery();
|
boolean colCount = rs.next();
|
if(!colCount){
|
pstmt.setString(1, lastMonth);
|
rs = pstmt.executeQuery();
|
colCount = rs.next();
|
if(!colCount){
|
pstmt.setString(1, upMonth);
|
rs = pstmt.executeQuery();
|
remark = "上月数据为空,同步上上月数据成功";
|
}else{
|
remark = "本月数据为空,同步上月数据成功";
|
}
|
}
|
byqlzAdsService.delete(yearMonth);
|
while (colCount) {
|
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.setVal11(val); break;
|
case 11: entity.setVal12(val); break;
|
case 12: entity.setVal13(val); break;
|
case 13: entity.setVal14(val); break;
|
case 14: entity.setVal2(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);
|
}
|
|
byqlzAdsService.save(resultList);
|
|
syncLogService.save(remark);
|
// 输出结果
|
resultList.forEach(System.out::println);
|
|
} catch (SQLException e) {
|
logger.error("SyncEmsTask运行异常");
|
e.printStackTrace();
|
}
|
logger.info("SyncEmsTask运行完成");
|
}
|
}
|