燕山石化溯源三维电子沙盘-【后端】-服务
1
13693261870
2024-11-20 8185e5cdc2bbdf7fb4ca46a10864106893a01ed3
src/main/java/com/yssh/config/ScheduleConfig.java
@@ -15,15 +15,15 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.github.biyanwen.EasyCsv;
import javax.annotation.Resource;
@Component
@Configuration
@EnableScheduling
public class ScheduleConfig {
   protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -44,7 +44,10 @@
   WarningAnalyseService warningAnalyseService;
   @Resource
   XlsExportService xlsExportService;
   XlsReportService xlsReportService;
   @Resource
   EmailService emailService;
   @Value("${csv.voc_max}")
   private int vocMax = 96;
@@ -52,27 +55,35 @@
   @Value("${csv.cron_max}")
   private int cronMax = 48;
   private static boolean isBusy = false;
   @Value("${email.enable}")
   private Boolean enableEmail;
   private static boolean flag = false;
   private static final Object OBJ = new Object();
   private final static List<String> md5List = new ArrayList<>();
   private final static SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHH");
   public void corpReserveDataSync() {
      loadVocSync();
      //loadVocSync();
      loadCsvSync();
   }
   @Scheduled(cron = "${csv.cron}")
   private void loadCsvSync() {
      if (isBusy) return;
      synchronized (OBJ) {
         if (flag) return;
         flag = true;
      }
      isBusy = true;
      logger.info("***************** 开始执行CSV入库 *****************" + "\n");
      Calendar calendar = getCalendar(1);
      calendar.add(Calendar.HOUR, -cronMax);
      for (int i = 0; i < cronMax; i++) {
         try {
            calendar.add(Calendar.HOUR, -1);
            calendar.add(Calendar.HOUR, 1);
            String time = format.format(calendar.getTime());
            String filePath = csvFilePathConfig.getFilePath() + File.separator + time + ".csv";
@@ -101,7 +112,7 @@
         }
      }
      logger.info("***************** CSV入库执行完成 *****************" + "\n");
      isBusy = false;
      flag = false;
   }
   public Calendar getCalendar(int start) {
@@ -124,7 +135,7 @@
   private void loadVocSync() {
      logger.info("***************** 开始全域CSV入库 *****************" + "\n");
      vocValsService.deleteLastYear();
      Calendar calendar = getCalendar(96);
      Calendar calendar = getCalendar(vocMax);
      for (int i = 0; i < vocMax; i++) {
         calendar.add(Calendar.HOUR, -1);
         String time = format.format(calendar.getTime());
@@ -136,18 +147,19 @@
            continue;
         }
         String md5 = FileUtils.getFileMd5(filePath);
         if (null != md5 && md5List.contains(md5)) {
            continue; // csv已入库
         }
         //String md5 = FileUtils.getFileMd5(filePath);
         //if (null != md5 && md5List.contains(md5)) {
         //   continue;
         //}
         int count = vocValsService.countByTime(time);
         if (count > 0) {
            vocValsService.deleteByTime(time); // 删除已入库
            //vocValsService.deleteByTime(time);
            continue;
         }
         try {
            addFileMd5(md5);
            //addFileMd5(md5);
            logger.info("loadVocSync: " + filePath);
            Date date = (Date) calendar.getTime().clone();
            EasyCsv.read(filePath, VocVals.class, new VocParser(vocValsService, date)).doRead();
@@ -166,7 +178,7 @@
   }
   private void loadCsv_old() {
      Date date = DateUtils.getNowDate();
      Date date = InitConfig.getDate();
      String time = DateUtils.parseDateToStr(DateUtils.YYYYMMDDHH, date);
      String filePath = csvFilePathConfig.getFilePath() + "\\\\" + time + ".csv";
      File file = new File(filePath);
@@ -174,12 +186,12 @@
         logger.info(file.getAbsolutePath() + " is not exist !");
         return;
      }
      //创建表
      String newTableName = TableStrategy.getTableStrategy(time);
      suYuanService.createNewTable(newTableName);
      dictRecordService.insertDictRecord(new DictRecord(1L, newTableName, Long.parseLong(time), ""));
      EasyCsv.read(filePath, SuYuan.class, new CsvParser(suYuanService, time)).doRead();
      //计算预警/报警,并且进行入库操作
      try {
         Thread.sleep(60 * 1000);
      } catch (InterruptedException e) {
@@ -189,27 +201,57 @@
      warningAnalyseService.warningOperationStorage(date);
   }
   /**
    * 创建日报:每日0时1分
    */
   @Scheduled(cron = "0 1 0 * * ?")
   public void createDayReport() {
      xlsExportService.createDayReport(new Date());
      Calendar calendar = getCalendar(1);
      for (int i = 0; i < 31; i++) {
         try {
            calendar.add(Calendar.DATE, -1);
            xlsReportService.createDayReport(calendar.getTime());
            // System.out.println(DateUtils.getYyyyMmDd(calendar.getTime()));
         } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
         }
      }
   }
   /**
    * 创建周报:每周一0时5分
    */
   @Scheduled(cron = "0 5 0 ? * MON")
   public void createWeekReport() {
      xlsExportService.createWeekReport(new Date());
      Calendar calendar = getCalendar(7 * 24);
      for (int i = 1; i < 8; i++) {
         try {
            calendar.add(Calendar.DATE, -7);
            xlsReportService.createWeekReport(calendar.getTime());
            // System.out.println(DateUtils.getYyyyMmDd(calendar.getTime()));
         } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
         }
      }
   }
   /**
    * 创建月报:每月1日0时9分
    */
   @Scheduled(cron = "0 9 0 1 * ?")
   public void createMonthReport() {
      xlsExportService.createMonthReport(new Date());
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(new Date());
      calendar.add(Calendar.MONTH, 1);
      for (int i = 0; i < 6; i++) {
         try {
            calendar.add(Calendar.MONTH, -1);
            xlsReportService.createMonthReport(calendar.getTime());
            // System.out.println(DateUtils.getYyyyMmDd(calendar.getTime()));
         } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
         }
      }
   }
   //@Scheduled(cron = "${email.times}")
   public void autoCalcData() {
      if (enableEmail) {
         //System.out.println("${email.times}");
         logger.info("***************** 开始数据预警计算 *****************" + "\n");
         emailService.calcData();
         logger.info("***************** 数据预警计算完成 *****************" + "\n");
      }
   }
}