package com.njzscloud.common.sichen.pojo.param;

import com.njzscloud.common.sichen.contant.ScheduleType;
import com.njzscloud.common.sichen.contant.TaskLogLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;

/**
 * 定时任务表
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class SearchTaskResult {
    private Long id;

    /**
     * 任务名称：Task 注解的 value 属性，或执行函数的全限定名称
     */
    private String taskName;

    /**
     * 任务执行函数，全限定名称
     */
    private String fn;

    /**
     * 调度方式; 字典代码：schedule_type
     */
    private ScheduleType scheduleType;

    /**
     * 调度配置; 手动时为空，固定周期时单位为秒
     */
    private String scheduleConf;

    /**
     * 是否禁用; 0-->否、1-->是
     */
    private boolean disabled;
    /**
     * 是否为内内置任务
     */
    private boolean builtin;

    /**
     * 日志等级
     */
    private TaskLogLevel logLevel;
    /**
     * 下次执行时间
     */
    private long criticalTiming;
    /**
     * 备注
     */
    private String memo;

    public LocalDateTime getNextTiming() {
        return criticalTiming <= 0 ? null : Instant.ofEpochSecond(criticalTiming)
            .atZone(ZoneId.systemDefault())
            .toLocalDateTime();
    }

}
