package com.nantian.cloud.jly.entity;

import java.time.LocalDateTime;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
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.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.lettuce.core.ValueScanCursor;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 能源计量器具基本信息
 * </p>
 *
 * @author scott
 * @since 2020-08-07
 */
@Data
@TableName("configure_gauge")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "能源计量器具基本信息")
public class ConfigureGauge extends Model<ConfigureGauge> {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(value = "id")
    @ApiModelProperty(value = "id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long id;

    /**
     * 社会行用统一编码
     */
    //@TableField("enterpriseCode")
    @ApiModelProperty(value = "社会行用统一编码")
    private String enterpriseCode;

    /**
     * 企业名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "企业名称")
    private String cmpName;

    /**
     * 下次一次检定校准时间
     */
//    @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd")
    //@TableField("nextAlignDate")
    @ApiModelProperty(value = "下次一次检定校准时间")
    private String nextAlignDate;

    /**
     * 检测机构
     */
    //@TableField("alignOrg")
    @ApiModelProperty(value = "检测机构")
    private String alignOrg;

    /**
     * 未检定/校准原因
     */
    //@TableField("unAlignReason")
    @ApiModelProperty(value = "未检定/校准原因")
    private String unAlignReason;

    /**
     * 安装地点
     */
    @ApiModelProperty(value = "安装地点")
    private String location;

    /**
     * 安装方
     */
    @ApiModelProperty(value = "安装方")
    private String installer;

    /**
     * 安装时间
     */
//    @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd")
    //@TableField("installTime")
    @ApiModelProperty(value = "安装时间")
    private String installTime;

    /**
     * 接入系统
     */
    //@TableField("linkSys")
    @ApiModelProperty(value = "接入系统")
    private String linkSys;

    /**
     * 当前状态
     */
    //@TableField("currentState")
    @ApiModelProperty(value = "当前状态")
    private String currentState;

    /**
     * 状态发生时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd")
    //@TableField("stateChangeTime")
    @ApiModelProperty(value = "状态发生时间")
    private String stateChangeTime;

    /**
     * 设备出产序列号
     */
    //@TableField("serNo")
    @ApiModelProperty(value = "设备出产序列号")
    private String serNo;

    /**
     * 计量器具二维码
     */
    //@TableField("barCode")
    @ApiModelProperty(value = "计量器具二维码")
    private String barCode;

    /**
     * 计量器名称
     */
    //@TableField("meterName")
    @ApiModelProperty(value = "计量器名称")
    private String meterName;

    /**
     * 计量器名称字符
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "计量器名称字符")
    private String meterNameStr;

    /**
     * 计量器类型
     */
    //@TableField("meterType")
    @ApiModelProperty(value = "计量器类型")
    private String meterType;

    /**
     * 计量器类型名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "计量器类型名称")
    private String type;

    /**
     * 计量器类型
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "计量器类型名称字符")
    private String meterTypeStr;

    /**
     * 器具等级 1：表示进出用能计量器具，2：表示主要次级用能计量器具，3：表示主要用能设备计量器具
     */
    //@TableField("meterLevel")
    @ApiModelProperty(value = "器具等级 1：表示进出用能计量器具，2：表示主要次级用能计量器具，3：表示主要用能设备计量器具")
    private String meterLevel;

    /**
     * 计量相关参数
     */
    @ApiModelProperty(value = "计量相关参数")
    private String params;

    /**
     * 所属上报数据组合编码
     */
    //@TableField("dataCode")
    @ApiModelProperty(value = "所属上报数据组合编码")
    private String dataCode;

    /**
     * 与上报数据组合编码算术关系
     */
    //@TableField("reportArithmetic")
    @ApiModelProperty(value = "与上报数据组合编码算术关系")
    private String reportArithmetic;

    /**
     * 与上报数据组合编码算术系数
     */
    //@TableField("reportRatio")
    @ApiModelProperty(value = "与上报数据组合编码算术系数")
    private String reportRatio;

    /**
     * 生产厂家
     */
    @ApiModelProperty(value = "生产厂家")
    private String manufacturer;

    /**
     * 规格型号
     */
    @ApiModelProperty(value = "规格型号")
    private String model;

    /**
     * 精确度等级
     */
    //@TableField("precisionLevel")
    @ApiModelProperty(value = "精确度等级")
    private String precisionLevel;

    /**
     * 测量范围
     */
    @ApiModelProperty(value = "测量范围")
    private String ranges;

    /**
     * 管理编号
     */
    //@TableField("manageNo")
    @ApiModelProperty(value = "管理编号")
    private String manageNo;

    /**
     * 检定校准状态
     */
    //@TableField("alignState")
    @ApiModelProperty(value = "检定校准状态")
    private String alignState;

    /**
     * 检定校准周期
     */
    //@TableField("alignCycle")
    @ApiModelProperty(value = "检定校准周期")
    private String alignCycle;

    /**
     * 最近一次检定校准时间
     */
//    @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss")
    //@TableField("lastAlignDate")
    @ApiModelProperty(value = "最近一次检定校准时间")
    private String lastAlignDate;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态")
    private String state;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 参数类型
     */
    //@TableField("paramsType")
    @ApiModelProperty(value = "参数类型")
    private String paramsType;

    /**
     * 是否上传过
     */
    //@ApiModelProperty(value = "是否上传过")
   // private String uploadedCountry;

    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id")
    private Integer userid;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 注销状态
     */
    @ApiModelProperty(value = "注销状态（1：未删除，4：已删除）")
    private String delFlag;

    /**
     * 部门id
     */
    @ApiModelProperty(value = "部门id")
    private Integer deptId;

    /**
     * 主键值
     */
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
