package com.njcn.gather.device.pojo.po;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.njcn.db.mybatisplus.bo.BaseEntity;
import com.njcn.gather.monitor.pojo.po.PqMonitor;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * @author caozehui
 * @date 2024/11/06
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("pq_dev")
public class PqDev extends BaseEntity implements Serializable {
    private static final long serialVersionUID = -45763424394344208L;

    /**
     * 主键装置序号ID
     */
    private String id;

    /**
     * 设备名称
     */
    private String name;

    /**
     * 设备模式，字典表（数字、模拟、比对）
     */
    private String pattern;

    /**
     * 设备类型，字典表
     */
    private String devType;

    /**
     * 设备厂家，字典表
     */
    private String manufacturer;

    /**
     * 出厂日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate createDate;

    /**
     * 设备序列号
     */
    private String createId;

    /**
     * 固件版本
     */
    private String hardwareVersion;

    /**
     * 软件版本
     */
    private String softwareVersion;

    /**
     * 通讯协议，字典表(MMS、PODIF)
     */
    private String protocol;

    /**
     * IP地址
     */
    private String ip;

    /**
     * 端口号
     */
    private Integer port;

    /**
     * 装置是否为加密版本
     */
    private Integer encryptionFlag;

    /**
     * 装置识别码（3ds加密）
     */
    @TableField(fill = FieldFill.UPDATE)
    private String series;

    /**
     * 装置秘钥（3ds加密）
     */
    @TableField(fill = FieldFill.UPDATE)
    private String devKey;

    /**
     * 样品编号
     */
    private String sampleId;

    /**
     * 送样日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate arrivedDate;

    /**
     * 所属地市名称
     */
    private String cityName;

    /**
     * 所属供电公司名称
     */
    private String gdName;

    /**
     * 所属电站名称
     */
    private String subName;

    /**
     * 报告路径
     */
    private String reportPath;

    /**
     * 检测计划id
     */
    private String planId;

    /**
     * 是否支持系数校准（0:不支持,1:支持）
     */
    private Integer factorFlag;

    /**
     * 预投计划
     */
    @TableField("Preinvestment_Plan")
    private String preinvestmentPlan;

    /**
     * 委托方
     */
    private String delegate;

    /**
     * 可检通道
     */
    private String inspectChannel;

    /**
     * 定检日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate inspectDate;

    /**
     * 谐波系统设备id
     */
    private String harmSysId;

    /**
     * 是否为导入设备（比对式使用） 0-否 1-是
     */
    private Integer importFlag;

    /**
     * 状态：0-删除 1-正常
     */
    private Integer state;

    @TableField(exist = false)
    private List<PqMonitor> monitorList;
}

