package com.infynova.udi.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.infynova.udi.enums.task.TaskMatchStatusEnum;
import com.infynova.udi.enums.task.TaskStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * @author liudong
 * 2024/2/29 15:40
 * @version 1.0
 */
@Data
public class Task {
    /** 主键ID,自增 */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 任务编码 */
    @ApiModelProperty(value = "任务编码")
    private String taskNo;

    /**
     * @see TaskStatusEnum
     *  任务上传状态:新建、暂停、完毕
     *  */
    @ApiModelProperty(value = "任务上传状态:0-新建、10-上传中、11-暂停、20-完毕")
    private Integer taskStatus;

    @TableField(exist = false)
    @ApiModelProperty(value = "任务上传状态-转换")
    private String taskStatusDesc;

    /** 上传文件大小 */
    @ApiModelProperty(value = "上传文件大小")
    private String taskFileSize;

    @TableField(exist = false)
    @ApiModelProperty(value = "上传文件大小-转换")
    private String taskFileSizeDesc;

    /** 上传文件后的数据量 */
    @ApiModelProperty(value = "上传文件后的数据量")
    private Integer taskFileCount;

    /** 上传的数据量 */
    @ApiModelProperty(value = "上传的数据量")
    private Integer taskUploadNum;

    /** 上传文件地址 */
    @ApiModelProperty(value = "上传文件地址")
    private String taskFileAddress;

    /** 上传文件id */
    @ApiModelProperty(value = "上传文件id - 获取地址用")
    private Long taskFileId;

    /** 上传耗时(以秒为单位保存) */
    @ApiModelProperty(value = "上传耗时(以秒为单位保存)")
    private Integer uploadTime;

    @TableField(exist = false)
    @ApiModelProperty(value = "上传耗时(以秒为单位保存)-展示")
    private String uploadTimeDesc;

    /**
     * @see TaskMatchStatusEnum
     * 对码状态:待对码、对码中、已对码 */
    @ApiModelProperty(value = "对码状态:对码状态:0-待对码、10-对码中、99-已对码")
    private Integer taskMatchStatus;

    @TableField(exist = false)
    @ApiModelProperty(value = "对码状态-转换")
    private String taskMatchStatusDesc;

    /** 对码耗时(以秒为单位保存) */
    @ApiModelProperty(value = "对码耗时(以秒为单位保存)")
    private Integer matchTime;

    @TableField(exist = false)
    @ApiModelProperty(value = "对码耗时(以秒为单位保存)-展示")
    private String matchTimeDesc;

    /** 操作人id */
    @ApiModelProperty(value = "操作人id")
    private Long operatorId;

    /** 操作人 */
    @ApiModelProperty(value = "操作人")
    private String operator;

    /** 创建人id */
    @ApiModelProperty(value = "创建人id")
    private Long createBy;

    /** 创建人 */
    @ApiModelProperty(value = "创建人")
    private Long creator;

    /** 创建时间 */
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;

    /** 修改时间 */
    @ApiModelProperty(value = "修改时间")
    private LocalDateTime updateTime;

    /** 删除标识 */
    @ApiModelProperty(value = "删除标识")
    private Boolean delFlag;

    /** 版本号,默认为1 */
    @ApiModelProperty(value = "版本号")
    @Version
    @TableField(fill = FieldFill.INSERT_UPDATE, update="%s+1")
    private Integer version;
}