import cn.gaozheng.sales.mapper.TblCreditRemindConfigMapper;
import cn.gaozheng.sales.model.po.TblCreditRemindConfig;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* 短信定时任务
*
* @Author: 风度翩翩少年郎
* @Date: 2022-06-24 09:46
*/
@Component
@Slf4j
public class SmsTask implements SchedulingConfigurer {
@Resource
private TblCreditRemindConfigMapper configMapper;
/**
* 定时任务
*/
Runnable runnable = new Runnable() {
@Override
public void run() {
// 定时任务要执行的内容
log.info("定时任务开始-------------------------");
send();
}
};
Trigger trigger = new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
String cron = null;
// 读取数据库配置
List<TblCreditRemindConfig> configs = configMapper.selectAll();
if (CollUtil.isNotEmpty(configs)) {
TblCreditRemindConfig config = configs.stream().findFirst().orElse(null);
if (ObjectUtil.isNotNull(config.getRemindTime())) {
// cron = "0/20 * * * * ?";
// 获取数据库定义的时间进行拼接(直接将表达式存在数据库更灵活)
cron = "0 00 " + config.getRemindTime() + " * * ?";
log.info("cron:-----------------------------------" + cron);
return new CronTrigger(cron).nextExecutionTime(triggerContext);
}
}
return null;
}
};
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(runnable, trigger);
}
/**
* 为未达标的授信发送短信通知
*/
public void send() {
//执行任务的相关逻辑--------
}
}
java 动态配置时间实现定时任务
最新推荐文章于 2024-05-04 17:17:52 发布