package com.docus.bgts.config; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.docus.bgts.entity.TableJsonRead; import com.docus.bgts.facade.IBgtsService; import com.docus.bgts.service.CheckIntegrityService; import com.docus.bgts.utils.FileUtils; import com.docus.bgts.utils.HttpUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.HashMap; import java.util.Map; @Component public class MyScheduling { @Value("${beat.url}") private String beatUrl; public static String syncFlag; private final String tempfilePrefix="dataConfig\\temp"; private final String tempDataFileName="collectTimeTemp"; private final String lastTimeStr="lastTime"; static { syncFlag=FileUtils.getJsonByName("syncFlag").toString(); } @Autowired IBgtsService bgtsService; @Autowired CheckIntegrityService checkIntegrityService; private Logger logger = LogManager.getLogger(MyScheduling.class); //5分钟执行一次心跳 /*@Scheduled(fixedRate = 1000 * 60 * 5) public void beat() { Map params = new HashMap<>(); params.put("code", String.valueOf(FileUtils.getJsonByName("collectorid"))); try { HttpUtils.get(beatUrl, params); } catch (Exception e) { e.printStackTrace(); logger.info("心跳推送出错,可能是住院服务没有开启"); } }*/ /** * 手麻采集器 * 10分钟执行一次 */ // @Scheduled(fixedRate = 1000 * 60 * 10) // public void collect() { // String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid")); // String isStartCollect = String.valueOf(FileUtils.getJsonByName("isStartCollect")); // if (isStartCollect.equals("0")) { // return; // } // if ((!collectorid.equals(Codes.SMCODE.getCode())) && (!collectorid.equals(Codes.ZZCODE.getCode()))) { // return; // } // bgtsService.timerCollect(); // } /** * 批量按需采集 * 5分钟执行一次 */ @Scheduled(fixedRate = 1000 * 5 ) public void collectByExamNo(){ String collectOpen = String.valueOf(FileUtils.getJsonByName("collectOpen")); if (collectOpen.equals("1")){ logger.info("按需采集开始----------"); String collectStartDate = String.valueOf(FileUtils.getJsonByName("collectStartDate")); String collectEndDate = String.valueOf(FileUtils.getJsonByName("collectEndDate")); String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid")); bgtsService.collectByDate(collectStartDate,collectEndDate,collectorid); } } /** * 完整性校验 */ @Scheduled(fixedRate = 1000 * 5 * 60) public void syncIntegrality() { if (null == syncFlag || "0".equals(syncFlag)) { } else { //获取最后时间 String lastDate = getLastDate(); if(StringUtils.isNotBlank(lastDate)) { Date date = new Date(); boolean flag = checkIntegrityService.addSyncIntegrality(lastDate, null); if(flag) { refreshLastDate(date); } }else{ logger.info("采集时间为空"); } } } /** * 上次采集时间 * @return */ private String getLastDate(){ TableJsonRead tableJsonRead = new TableJsonRead(); Map map = tableJsonRead.Read(tempfilePrefix, tempDataFileName,Map.class); return map.get(lastTimeStr); } /** * 刷新上次采集时间 */ private void refreshLastDate(Date lastDate){ String lastTime = DateUtil.format(lastDate, "yyyy-MM-dd HH:mm:ss"); TableJsonRead tableJsonRead = new TableJsonRead(); Map map = new HashMap<>(); map.put(lastTimeStr, lastTime); tableJsonRead.Save(tempfilePrefix, tempDataFileName, JSON.toJSONString(map)); } }