package com.huatek.busi.vo.monitor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Map;

import org.springframework.format.annotation.DateTimeFormat;

import com.alibaba.fastjson.annotation.JSONField;
import com.huatek.busi.common.annotation.ExcelAnnotation;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 在线监测——监测数据(每日统计) Vo
 *
 * @author anker_cheng
 * @date Sep 16, 2019 3:21:40 PM
 */
@ApiModel(value = "BusiOnlineMonitorDataVo", description = "在线监测——监测数据(每日统计) Vo")
@Data
@EqualsAndHashCode(callSuper = false)
public class BusiOnlineMonitorDataVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(name = "id", value = "主键")
    private String id;

    /**
     * 传感器编码
     */
    @ApiModelProperty(name = "sensorCode", value = "传感器编码")
    private String sensorCode;

    /**
     * 主设备类型
     */
    @ApiModelProperty(name = "equipmentType", value = "主设备类型")
    @ExcelAnnotation(exportName="主设备类型")
    private String equipmentType;
    
    
    @ApiModelProperty(name = "siteTreename", value = "设备名称")
    @ExcelAnnotation(exportName="主设备")
    private String siteTreename;

    /**
     * 外挂设备类型
     */
    @ApiModelProperty(name = "subEquipmentType", value = "外挂设备类型")
    @ExcelAnnotation(exportName="监测装置")
    private String subEquipmentType;
    
    @ApiModelProperty(name = "subTreeName", value = "外挂监测装置 名称")
    @ExcelAnnotation(exportName="外挂监测装置")
    private String subTreeName;
    
    @ApiModelProperty(name = "sensorName", value = "传感器名称")
    @ExcelAnnotation(exportName="传感器名称")
    private String  sensorName;
    
    @ApiModelProperty(name = "sensorInstallLocation", value = "安装位置")
    @ExcelAnnotation(exportName="安装位置")
    private String  sensorInstallLocation;
    
    @ApiModelProperty(name = "sensorposition", value = "相位")
    @ExcelAnnotation(exportName="相位")
    private String  sensorposition;
    
    @ApiModelProperty(name = "sensorBrand", value = "标牌")
    @ExcelAnnotation(exportName="标牌")
    private String  sensorBrand;
    
    /**
     * 工作状态
     */
    @ApiModelProperty(name = "runState", value = "工作状态")
    @ExcelAnnotation(exportName="运行状态")
    private String runState;
    
    
    /**
     * 日期
     */
    @ApiModelProperty(name = "day", value = "日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ExcelAnnotation(exportName="采集日期")
    private LocalDate day;


    /**
     * 缺失率
     */
    @ApiModelProperty(name = "lossRate", value = "缺失率")
    @ExcelAnnotation(exportName="数据缺失率")
    private String lossRate;
    

    /**
     * 误报率
     */
    @ApiModelProperty(name = "falseAlarmRate", value = "误报率")
    @ExcelAnnotation(exportName="误报率")
    private String falseAlarmRate;
    

    /**
     * 维修次数
     */
    @ApiModelProperty(name = "repairCount", value = "维修次数")
    @ExcelAnnotation(exportName="维修次数")
    private BigDecimal repairCount;
    
    
    @ApiModelProperty(name = "sensorManufactor", value = "生产厂家")
    @ExcelAnnotation(exportName="生产厂家")
    private String  sensorManufactor;
    
    @ApiModelProperty(name = "sensorUseDate", value = "投运时间")
    @ExcelAnnotation(exportName="投运时间")
    private String  sensorUseDate;
    
    
    

    /**
     * 相对增长率（%/月）
     */
    @ApiModelProperty(name = "monthlyRelativeGrowthRate", value = "相对增长率（%/月）")
    private String monthlyRelativeGrowthRate;

    /**
     * 绝对增长率（%/月）
     */
    @ApiModelProperty(name = "monthlyAbsolutelyGrowthRate", value = "绝对增长率（%/月）")
    private String monthlyAbsolutelyGrowthRate;



    /**
     * 稳定性指标
     */
//    @JSONField(unwrapped = true)
    @ApiModelProperty(name = "stabilityIndex", value = "稳定性指标")
    private String stabilityIndex;

    /**
     * 精度偏差
     */
    @ApiModelProperty(name = "accuracyIndex", value = "精度偏差")
    private String accuracyIndex;
    /**
     * 相位
     */
    @ApiModelProperty(name = "phase", value = "相位")
    private String phase;
    
    @JSONField(unwrapped = true)
    @ApiModelProperty(name = "stabilityIndexMap", value = "数据稳定性返回的值")
    private Map<String, Object> stabilityIndexMap;
    
    @JSONField(unwrapped = true)
    @ApiModelProperty(name = "accuracyIndexMap", value = "精度偏差的值")
    private Map<String, Object> accuracyIndexMap;
    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createdTime", value = "创建时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime;

    @ApiModelProperty(name = "siteId", value = "站点ID")
    private String siteId;

    @ApiModelProperty(name = "createdTime", value = "站点设备树ID")
    private String mainTreeId;
    
    @ApiModelProperty(name = "createdTime", value = "外挂设备树ID")
    private String subTreeId;
    
    @ApiModelProperty(name = "createdTime", value = "主设备ID")
    private String mainEquipmentId;
    
    @ApiModelProperty(name = "subEquipmentId", value = "外挂设备ID")
    private String subEquipmentId;

    @JSONField(unwrapped = true)
    @ApiModelProperty(name = "monitorDataMap", value = "监测值")
    private Map<String, Object> monitorDataMap;

    @JSONField(unwrapped = true)
    @ApiModelProperty(name = "thresholdDataMap", value = "阈值信息")
    private Map<String, Object> thresholdDataMap;

    @JSONField(unwrapped = true)
    @ApiModelProperty(name = "otherDataMap", value = "其他需要查询时候返回的值")
    private Map<String, Object> otherDataMap;

    /**
     * 大字段中存储的JSON字符串，序列化的时候忽略
     */
    @JSONField(serialize = false)
    private String data;

    @ApiModelProperty(name = "equipmentId", value = "设备Id")
    private String equipmentId;
    


    @ApiModelProperty(name = "mainTreeName", value = "主设备名称")
    private String mainTreeName;
}
