package com.yfd.platform.modules.patroltask.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.sql.Timestamp;

/**
 * <p>
 * 巡视任务表
 * </p>
 *
 *
 * @since 2023-04-08
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("iis_task")
public class Task implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(value = "task_id", type = IdType.ASSIGN_UUID)
    private String taskId;

    private String stationCode;

    private String stationName;

    /**
     * 1:例行巡视；2:特殊巡视；3:专项巡视；4:自定义巡视
     */
    private String type;

    /**
     * 任务编码
     */
    private String taskCode;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 1:站端日常巡视任务；2：上级系统控制；3区域巡视系统控制，4主辅设备联动
     */
    private String taskType;

    /**
     * 任务执行方式，1立即执行，2定时执行，3周期执行
     */
    private String taskTodoType;

    /**
     * 1：优先级1，优先级最低；2：优先级2；3：优先级3；4：优先级4，优先级最高
     */
    private String priority;

    /**
     * 1：间隔；2：主设备；3设备点位；4：部件
     */
    private Integer deviceLevel;

    /**
     * 格式：多个ID，采用','分隔；静默任务时只能选点位或者选摄像机
     */
    private String deviceList;

    /**
     * 静默任务时，选择静默识别缺陷类型，采用','分隔，设备列表选择点位时不需要此项
     */
    //private String defectType;

    /**
     * 定期开始时间
     */
    private String fixedStartTime;

    /**
     * 格式：多个月，采用"，"分隔，例如 1,2,5，代表一月，二月，五月
     */
    private String cycleMonth;

    /**
     * 格式：一周中多天执行，采用"，"分隔；例如 1,2,7，代表周一，周二，周日
     */
    private String cycleWeek;

    /**
     * 格式：HH:mm:ss
     */
    private String cycleExecuteTime;

    /**
     * 周期开始时间
     */
    private String cycleStartTime;

    /**
     * 周期结束时间
     */
    private String cycleEndTime;

    /**
     * 间隔（数量）
     */
    private String intervalNumber;

    /**
     * 1:小时；2:天
     */
    private String intervalType;

    /**
     * 格式HH:mm:ss
     */
    private String intervalExecuteTime;

    /**
     * 间隔开始时间
     */
    private String intervalStartTime;

    /**
     * 间隔结束时间
     */
    private String intervalEndTime;

    /**
     * 不可用开始时间
     */
    private String invalidStartTime;

    /**
     * 不可用结束时间
     */
    private String invalidEndTime;

    /**
     * 是否可用；0：不可用；1：可用
     */
    private String isenable;

    /**
     * cron表达式
     */
    private String cronValue;

    /**
     * 编制人编号
     */
    private String creatorcode;

    /**
     * 编制人
     */
    private String creator;

    /**
     * 编制时间
     */
    private String createTime;

    /**
     * 任务巡视累计次数，每次巡视执行任务执行完毕进行回写
     */
    private Integer taskNumberTotal;

    /**
     * 数据状态，1：未复核；2：已复核；3：已删除
     */
    private String datastatus;

    /**
     * 修改人
     */
    private String lastmodifier;

    /**
     * 最近修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Timestamp lastmodifydate;

    /**
     * 备用1
     */
    private String custom1;

    /**
     * 备用2
     */
    private String custom2;

    /**
     * 备用3
     */
    private String custom3;

    /**
     * 是否上报；默认0:未上报；1:已上报
     */
    @TableField("is_report")
    private String isReport;

    /**
     * 监控索引号为监控系统测点 ID，可用于数据的唯一标识
     */
    private String controlNum;

    /**
     * 机器人/无人机编码
     */
    private String robotCode;

    /**
     * 任务类别 1-摄像机任务 2-机器人任务 3-无人机
     */
    private String taskClass;

    /**
     * 机器人或者无人绑定的线路ID
     */
    private String taskLineid;

    /**
     * 无人机机巢信息
     */
    private String dockInfo;


}
