package com.multictrl.modules.job.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.multictrl.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.util.Date;
import java.util.List;

/**
 * 定时任务
 *
 * @author Sdy
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("schedule_job")
public class ScheduleJobEntity extends BaseEntity {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * spring bean名称
     */
    private String beanName;
    /**
     * 参数
     */
    private String params;
    /**
     * cron表达式
     */
    private String cronExpression;
    /**
     * 任务状态  0：暂停  1：正常
     */
    private Integer status;
    /**
     * 备注
     */
    private String remark;
    /**
     * 更新者
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updater;
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateDate;
    /**
     * 任务名称
     */
    private String jobName;
    /**
     * 定时类型 1指定时间 2每天几点 3每周周几几点 4每月几号几点
     */
    private Integer cronType;
    /**
     * 年
     */
    private Integer year;
    /**
     * 月
     */
    private Integer month;
    /**
     * 日
     */
    private String days;

    @TableField(exist = false)
    private List<Integer> day;
    /**
     * 时
     */
    private Integer hour;
    /**
     * 分
     */
    private Integer minute;
    /**
     * 部门标识
     */
    private Long deptId;
    /**
     * 机库sn
     */
    private String dockSn;
    /**
     * 是否断点续飞
     */
    private Boolean isBreakpointFly;
    /**
     * 断点续飞最大时间
     */
    private String breakMaxTime;

    /**
     * 断点续飞最小时间
     */
    private String breakMinTime;

    @TableField(exist = false)
    private String dockName;

    @TableField(exist = false)
    private String routeName;

    /**
     * 下次执行时间
     */
    @TableField(exist = false)
    private String nextRunTime;

    /**
     * 执行规则
     */
    @TableField(exist = false)
    private String cronRules;
}