package com.chushang.inspection.terminal.vo;

import cn.hutool.core.date.DatePattern;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.chushang.common.dict.annotation.DictFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TerminalVO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 终端 主键
     */
    private Long terminalId;

    /**
     * 商户id
     */
    private Long storeId;

    /**
     * 下级任务id
     */
    private Long lowerTaskId;
    /**
     * 顶级任务id
     */
    private Long taskId;
    /**
     * 任务名称
     */
    private String taskName;
    /**
     * 商户编号
     */
    private String storeNo;
    /**
     * 商户名称
     * 查询商户表
     */
    private String storeName;
    /**
     * 商户状态
     */
    @DictFormat(dictType = "mer_status")
    private Integer storeState;

    /**
     * 终端sn号
     */
    private String terminalSn;

    /**
     * 终端编号
     */
    private String terminalNo;

    /**
     * 终端类型
     */
    @DictFormat(dictType = "terminal_type")
    private Integer terminalType;

    /**
     * 终端型号
     */
    private String terminalModel;

    /**
     * 终端版本号
     */
    private String terminalVersion;

    /**
     * 终端地址
     */
    private String terminalAddress;

    /**
     * 终端来源
     */
    @DictFormat(dictType = "terminal_source")
    private Integer terminalSource;

    /**
     * 是否占用
     */
    private Integer occupy;

    /**
     * 状态
     */
    @DictFormat(dictType = "terminal_status")
    private Integer terminalStatus;

    /**
     * 终端--状态
     */
    @DictFormat(dictType = "mer_status")
    private Integer state;

    /**
     * 偏差（直线距离 米）
     */
    private Long deviation;

    /**
     * 所属任务
     * 查询任务表
     */
    private String lowerTaskName;

    /**
     * 操作人
     */
    private String operatorId;

    /**
     * 巡检状态 1 以巡检 2未巡检
     */
    private Integer inspectionStatus;

    /**
     * 巡检时间
     */
    @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN)
    private LocalDateTime inspectionTime;

    /**
     * 巡检时间
     */
    @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN)
    private LocalDateTime createTime;
}
