cy
2022-11-22 db14f311bfa3daba9e43fcad895048cbe2576c04
src/main/java/com/integrated/zyyt/ZyytQuartz.java
@@ -1,7 +1,7 @@
package com.integrated.zyyt;
import cn.hutool.core.convert.Convert;
import com.integrated.zyyt.service.ZyytService;
import com.integrated.zyyt.util.ZyytUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -10,7 +10,6 @@
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Map;
/**
 * @ClassName ZyytQuartz
@@ -31,7 +30,7 @@
    @Scheduled(cron = "0 0/30 * * * ?")
    private void stationInfoTask() {
        LocalDate yestDay = LocalDate.now().minus(1, ChronoUnit.DAYS);
        if (canGetAgain("STATIONINFO", yestDay)) {
        if (ZyytUtil.canGetAgain("STATIONINFO", yestDay)) {
            log.info("执行stationInfoTask--{}", yestDay);
            zyytService.stationInfoTasks();
        } else {
@@ -43,7 +42,7 @@
    @Scheduled(cron = "0 3/30  * * * ?")
    private void shkdrbTasks() {
        LocalDate yestDay = LocalDate.now().minus(1, ChronoUnit.DAYS);
        if (canGetAgain("YYZT_T_SHKDRB", yestDay)) {
        if (ZyytUtil.canGetAgain("YYZT_T_SHKDRB", yestDay)) {
            log.info("执行shkdrbTasks--{}", yestDay);
            zyytService.shkdrbTasks(yestDay);
        } else {
@@ -51,55 +50,14 @@
        }
    }
    @Scheduled(cron = "0 5/30 * * * ?")
    @Scheduled(cron = "0 7/30 * * * ?")
    private void djtjbTasks() {
        LocalDate yestDay = LocalDate.now().minus(1, ChronoUnit.DAYS);
        if (!canGetAgain("YYZT_T_DJTJB", yestDay)) {
        if (!ZyytUtil.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;
    }
}