package com.njcn.influx.bo.po;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.njcn.influx.utils.InstantDateSerializer;
import com.njcn.oracle.bo.po.DataFlicker;
import com.njcn.oracle.bo.po.DataFluc;
import lombok.Data;
import org.influxdb.annotation.Column;
import org.influxdb.annotation.Measurement;
import org.influxdb.annotation.TimeColumn;

import java.time.Instant;
import java.time.ZoneId;

/**
 * 类的介绍：
 *
 * @author xuyang
 * @version 1.0.0
 */
@Data
@Measurement(name = "data_fluc")
public class InfluxDBDataFluc {

    @TimeColumn
    @Column(name = "time",tag = true)
    @JsonSerialize(using = InstantDateSerializer.class)
    private Instant time;

    @Column(name = "line_id",tag = true)
    private String lineId;

    @Column(name = "phasic_type",tag = true)
    private String phaseType;

    @Column(name = "fluc")
    private Float fluc;

    @Column(name = "fluccf")
    private Float fluccf;


    @Column(name = "quality_flag",tag = true)
    private String qualityFlag;

    public static InfluxDBDataFluc oralceToInfluxDB(DataFluc dataFluc) {
        if (dataFluc == null) {
            return null;
        }
        InfluxDBDataFluc influxDBDataFluc = new InfluxDBDataFluc();

        Instant instant = dataFluc.getTimeid().atZone(ZoneId.systemDefault()).toInstant();

        influxDBDataFluc.setTime(instant);
        influxDBDataFluc.setLineId(dataFluc.getLineid());
        influxDBDataFluc.setPhaseType(dataFluc.getPhasicType());
        influxDBDataFluc.setFluc(dataFluc.getFluc());
        influxDBDataFluc.setFluccf(dataFluc.getFluccf());
        influxDBDataFluc.setQualityFlag(dataFluc.getQualityflag()+"");


        return influxDBDataFluc;
    }

}
