package org.nl.system.service.quartz;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.quartz.dao.SysQuartzJob;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.system.service.quartz.dao.SysQuartzLog;
import org.nl.system.service.quartz.dto.JobQuery;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 定时任务表 服务类
 * </p>
 *
 * @author generator
 * @since 2022-12-19
 */
public interface ISysQuartzJobService extends IService<SysQuartzJob> {

    /**
     * 分页查询任务
     * @param criteria
     * @param pageable
     * @return
     */
    IPage<SysQuartzJob> queryAll(JobQuery criteria, PageQuery pageable);

    /**
     * 分页查询日志
     * @param criteria
     * @param pageable
     * @return
     */
    IPage<SysQuartzLog> queryAllLog(JobQuery criteria, PageQuery pageable);

    /**
     * 创建任务
     * @param resources
     */
    void createJob(SysQuartzJob resources);

    /**
     * 修改任务
     * @param resources
     */
    void updateJob(SysQuartzJob resources);

    /**
     * 更改定时任务状态
     * @param id
     */
    void updateIsPause(SysQuartzJob id);

    /**
     * 执行定时任务
     * @param id
     */
    void execution(SysQuartzJob id);

    /**
     * 批量删除定时任务
     * @param ids
     */
    void deleteJob(Set<String> ids);

    void executionSubJob(String[] tasks) throws InterruptedException;

    /**
     * 查找已启动的任务
     * @return
     */
    List<SysQuartzJob> findByIsPauseIsFalse();
}
