package com.glxp.api.task; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; import org.springframework.stereotype.Component; import com.glxp.api.dao.schedule.ScheduledDao; import com.glxp.api.entity.system.ScheduledEntity; import com.glxp.api.idc.service.IdcService; import com.glxp.api.req.system.ScheduledRequest; // //@Component //@EnableScheduling public class AsyncFetchUdiTask implements SchedulingConfigurer { final Logger logger = LoggerFactory.getLogger(AsyncFetchUdiTask.class); @Resource private ScheduledDao scheduledDao; @Resource private IdcService idcService; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.addTriggerTask(() -> process(), triggerContext -> { ScheduledRequest scheduledRequest = new ScheduledRequest(); scheduledRequest.setCronName("syncFetch"); logger.info("syncFetch----------------"); ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); String cron = scheduledEntity!=null ? scheduledEntity.getCron() : "0 0/3 * * * ?"; if (cron.isEmpty()) { logger.error("cron is null"); } logger.info("syncFetch----------------"+cron); return new CronTrigger(cron).nextExecutionTime(triggerContext); }); } private void process() { logger.info("syncFetch----process------------"); idcService.asyncFetchUdiTask(); } }