package com.ruoyi.docking.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.exception.job.TaskException;
import com.ruoyi.docking.entity.SmartReminders;
import com.ruoyi.docking.entity.request.JAddJobSmart;
import com.ruoyi.docking.entity.request.SREnterRequest;
import com.ruoyi.docking.entity.request.SmartRemindersPageRequest;
import org.quartz.SchedulerException;

import java.io.Serializable;
import java.time.LocalDateTime;


/**
 * 智能提醒（j_smart_reminders）表业务层
 *
 * @author du
 * @since 2024/7/1 13:33
 */
public interface SmartRemindersService extends IService<SmartReminders> {
    /**
     * 分页查询所有数据
     *
     * @param page            分页对象
     * @param smartReminders 查询实体
     * @return 所有数据
     */
    Page<SmartReminders> page(Page<SmartReminders> page, SmartRemindersPageRequest smartReminders);

    /**
     * 生成cron表达式
     *
     * @return cron表达式
     */
    String generateCron(LocalDateTime time);

    /**
     * 新增定期提醒数据（政务端和企业端）
     *
     * @param jSmartRemindersDq 实体对象
     * @return 新增结果
     */
    Long add(SREnterRequest jSmartRemindersDq) throws SchedulerException, TaskException;

    /**
     * 修改定期提醒或者不定期提醒数据（政务端）
     */
    void updateAndAdd(SmartReminders jSmartReminders, Boolean flag)  throws SchedulerException, TaskException;

    /**
     * 根据智能提醒id查询定时任务
     */
    JAddJobSmart selectJobSmart(Long id);

    /**
     * 已读智能提醒
     *
     * @param id 主键
     * @return 单条数据
     */
    Boolean isRead(Serializable id);
}

