//package cn.superdesk.uniorder.scheduler.config;
//
//import org.springframework.beans.BeansException;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.ApplicationContext;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.scheduling.annotation.SchedulingConfigurer;
//import org.springframework.util.Assert;
//
//
///**
// * @Description: 未完成
// * @Author: linjinyu
// * @CreateDate: 2020/12/2 下午6:42
// * @UpdateUser: linjinyu
// * @UpdateDate: 2020/12/2 下午6:42
// * @UpdateRemark: 修改内容
// * @Version: 1.0
// */
//@Configuration
//public class ScheduledConfig implements SchedulingConfigurer {
//
//	@Autowired
//	private ApplicationContext            context;
//	@Autowired
//	private SpringScheduledCronRepository cronRepository;
//
//
//	@Override
//	public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
//		for (SpringScheduledCron springScheduledCron : cronRepository.findAll()) {
//			Class<?> clazz;
//			Object   task;
//
//			try {
//				clazz = Class.forName(springScheduledCron.getCronKey());
//				task = context.getBean(clazz);
//			} catch (ClassNotFoundException e) {
//				throw new IllegalArgumentException("spring_scheduled_cron表数据" + springScheduledCron.getCronKey() + "有误", e);
//			} catch (BeansException e) {
//				throw new IllegalArgumentException(springScheduledCron.getCronKey() + "未纳入到spring管理", e);
//			}
//			Assert.isAssignable(ScheduledOfTask.class, task.getClass(), "定时任务类必须实现ScheduledOfTask接口");
//
//			// 可以通过改变数据库数据进而实现动态改变执行周期
//			taskRegistrar.addTriggerTask(((Runnable) task),
//					triggerContext -> {
//						String cronExpression = cronRepository.findByCronKey(springScheduledCron.getCronKey()).getCronExpression();
//						return new CronTrigger(cronExpression).nextExecutionTime(triggerContext);
//					}
//			);
//		}
//	}
//
//	@Bean
//	public Executor taskExecutor() {
//		return Executors.newScheduledThreadPool(10);
//	}
//}