package com.integrated.zyyt;
|
|
import cn.hutool.core.convert.Convert;
|
import com.integrated.zyyt.service.ZyytService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDate;
|
import java.time.temporal.ChronoUnit;
|
import java.util.Map;
|
|
/**
|
* @ClassName ZyytQuartz
|
* @Author cy
|
* @Date 2022/11/15
|
* @Description
|
* @Version 1.0
|
**/
|
@Configuration
|
@Slf4j
|
public class ZyytQuartz {
|
@Resource
|
private ZyytService zyytService;
|
@Resource
|
private JdbcTemplate jdbcTemplate;
|
|
|
@Scheduled(cron = "0 0/30 * * * ?")
|
private void stationInfoTask() {
|
LocalDate yestDay = LocalDate.now().minus(1, ChronoUnit.DAYS);
|
if (canGetAgain("STATIONINFO", yestDay)) {
|
log.info("执行stationInfoTask--{}", yestDay);
|
zyytService.stationInfoTasks();
|
} else {
|
log.info("放弃执行stationInfoTask--{}", yestDay);
|
}
|
}
|
|
|
@Scheduled(cron = "0 3/30 * * * ?")
|
private void shkdrbTasks() {
|
LocalDate yestDay = LocalDate.now().minus(1, ChronoUnit.DAYS);
|
if (canGetAgain("YYZT_T_SHKDRB", yestDay)) {
|
log.info("执行shkdrbTasks--{}", yestDay);
|
zyytService.shkdrbTasks(yestDay);
|
} else {
|
log.info("放弃执行shkdrbTasks--{}", yestDay);
|
}
|
}
|
|
@Scheduled(cron = "0 5/30 * * * ?")
|
private void djtjbTasks() {
|
LocalDate yestDay = LocalDate.now().minus(1, ChronoUnit.DAYS);
|
if (!canGetAgain("YYZT_T_DJTJB", yestDay)) {
|
log.info("放弃执行djtjbTasks--{}", yestDay);
|
}
|
log.info("执行djtjbTasks--{}", yestDay);
|
zyytService.djtjbTasks(yestDay);
|
}
|
|
/**
|
* 判断指定日期是否需要重新执行
|
*
|
* @param tableName
|
* @param date
|
* @return true 需要执行,false 不需要
|
*/
|
private boolean canGetAgain(String tableName, LocalDate date) {
|
String sql = "SELECT*FROM (SELECT*FROM ZYYT_RECORD WHERE BATCH_NO='" + ZyytConstant.batchNoPrefix + date + "' AND TABLE_NAME='" + tableName + "' ORDER BY START_TIME DESC) tmp WHERE ROWNUM<=1";
|
Map<String, Object> map = null;
|
try {
|
map = jdbcTemplate.queryForMap(sql);
|
} catch (Exception e) {
|
log.info("sql=={}没有查询到数据", sql);
|
}
|
if (map != null) {
|
String isFinish = Convert.toStr(map.get("IS_FINISH"));
|
if (!"1".equals(isFinish)) {
|
return false;
|
}
|
//下面 isFinish都是1
|
String isError = Convert.toStr(map.get("IS_ERROR"));
|
if ("1".equals(isError)) {
|
// 执行有误
|
return true;
|
}
|
|
// 成功执行没有错
|
String countNum = Convert.toStr(map.get("COUNT_NUM"));
|
if ("0".equals(countNum)) {
|
//没有拉取到数据
|
log.info("stationInfoTask");
|
return true;
|
}
|
} else {
|
// 该批次未执行
|
log.info("stationInfoTask");
|
return true;
|
}
|
return false;
|
}
|
}
|