package com.zjrs.ggfw.rlzysc.bpo.schedule;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang.StringUtils;
import com.zjrs.ggfw.rlzysc.entity.SpringScheduledCronMapper;
import com.zjrs.ggfw.rlzysc.po.SpringScheduledCronPO;
import com.zjrs.ggfw.utils.GgfwSpringContextUtil;

public interface ScheduledOfTask extends Runnable {

    /**
     * 定时任务方法
     */
    void execute(String cronid);

    /**
     * 实现控制定时任务启用或禁用的功能
     */
    @Override
    default void run() {
        SpringScheduledCronMapper repository = GgfwSpringContextUtil.getBean("springScheduledCronMapper",SpringScheduledCronMapper.class);
        SpringScheduledCronPO springScheduledCron = repository.selectOne(new UpdateWrapper<SpringScheduledCronPO>()
                .eq("cron_key",this.getClass().getName()));
        if ("1".equals(springScheduledCron.getStatus())) {
            String cronid = springScheduledCron.getCronid() == null?"":springScheduledCron.getCronid();
            if (StringUtils.isNotBlank(cronid)){
                execute(cronid);
            } else {
                return;
            }
        } else {
            // 任务是禁用状态
            return;
        }
    }
}

