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.DataHarmrateI;
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;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 类的介绍：
 *
 * @author xuyang
 * @version 1.0.0
 * @createTime 2022/5/12 11:27
 */
@Data
@Measurement(name = "data_harmrate_i")
public class InfluxDBDataHarmrateI {
    @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 = "quality_flag",tag = true)
    private String qualityFlag;

    @Column(name = "value_type",tag = true)
    private String valueType;

    @Column(name = "i_1")
    private Float i1;

    @Column(name = "i_2")
    private Float i2;

    @Column(name = "i_3")
    private Float i3;

    @Column(name = "i_4")
    private Float i4;

    @Column(name = "i_5")
    private Float i5;

    @Column(name = "i_6")
    private Float i6;

    @Column(name = "i_7")
    private Float i7;

    @Column(name = "i_8")
    private Float i8;

    @Column(name = "i_9")
    private Float i9;

    @Column(name = "i_10")
    private Float i10;

    @Column(name = "i_11")
    private Float i11;

    @Column(name = "i_12")
    private Float i12;

    @Column(name = "i_13")
    private Float i13;

    @Column(name = "i_14")
    private Float i14;

    @Column(name = "i_15")
    private Float i15;

    @Column(name = "i_16")
    private Float i16;

    @Column(name = "i_17")
    private Float i17;

    @Column(name = "i_18")
    private Float i18;

    @Column(name = "i_19")
    private Float i19;

    @Column(name = "i_20")
    private Float i20;

    @Column(name = "i_21")
    private Float i21;

    @Column(name = "i_22")
    private Float i22;

    @Column(name = "i_23")
    private Float i23;

    @Column(name = "i_24")
    private Float i24;

    @Column(name = "i_25")
    private Float i25;

    @Column(name = "i_26")
    private Float i26;

    @Column(name = "i_27")
    private Float i27;

    @Column(name = "i_28")
    private Float i28;

    @Column(name = "i_29")
    private Float i29;

    @Column(name = "i_30")
    private Float i30;

    @Column(name = "i_31")
    private Float i31;

    @Column(name = "i_32")
    private Float i32;

    @Column(name = "i_33")
    private Float i33;

    @Column(name = "i_34")
    private Float i34;

    @Column(name = "i_35")
    private Float i35;

    @Column(name = "i_36")
    private Float i36;

    @Column(name = "i_37")
    private Float i37;

    @Column(name = "i_38")
    private Float i38;

    @Column(name = "i_39")
    private Float i39;

    @Column(name = "i_40")
    private Float i40;

    @Column(name = "i_41")
    private Float i41;

    @Column(name = "i_42")
    private Float i42;

    @Column(name = "i_43")
    private Float i43;

    @Column(name = "i_44")
    private Float i44;

    @Column(name = "i_45")
    private Float i45;

    @Column(name = "i_46")
    private Float i46;

    @Column(name = "i_47")
    private Float i47;

    @Column(name = "i_48")
    private Float i48;

    @Column(name = "i_49")
    private Float i49;

    @Column(name = "i_50")
    private Float i50;

    public static List<InfluxDBDataHarmrateI> oralceToInfluxDB(DataHarmrateI dataHarmrateI) {
        if (dataHarmrateI == null) {
            return null;
        }
        List<InfluxDBDataHarmrateI> influxDBDataHarmRateIList = new ArrayList<>();
        List<String> valueTypeList = Stream.of("AVG", "MAX", "MIN", "CP95").collect(Collectors.toList());
        for (String valueType : valueTypeList) {
            InfluxDBDataHarmrateI influxDBDataHarmRateI = new InfluxDBDataHarmrateI();
            Instant instant = dataHarmrateI.getTimeid().atZone(ZoneId.systemDefault()).toInstant();

            influxDBDataHarmRateI.setTime(instant);
            influxDBDataHarmRateI.setLineId(dataHarmrateI.getLineid());
            influxDBDataHarmRateI.setPhaseType(dataHarmrateI.getPhasicType());
            influxDBDataHarmRateI.setQualityFlag(dataHarmrateI.getQualityflag()+"");
            influxDBDataHarmRateI.setValueType(valueType);
            if (valueType.equals("AVG")) {
                influxDBDataHarmRateI.setI1(dataHarmrateI.getI1());
                influxDBDataHarmRateI.setI2(dataHarmrateI.getI2());
                influxDBDataHarmRateI.setI3(dataHarmrateI.getI3());
                influxDBDataHarmRateI.setI4(dataHarmrateI.getI4());
                influxDBDataHarmRateI.setI5(dataHarmrateI.getI5());
                influxDBDataHarmRateI.setI6(dataHarmrateI.getI6());
                influxDBDataHarmRateI.setI7(dataHarmrateI.getI7());
                influxDBDataHarmRateI.setI8(dataHarmrateI.getI8());
                influxDBDataHarmRateI.setI9(dataHarmrateI.getI9());
                influxDBDataHarmRateI.setI10(dataHarmrateI.getI10());
                influxDBDataHarmRateI.setI11(dataHarmrateI.getI11());
                influxDBDataHarmRateI.setI12(dataHarmrateI.getI12());
                influxDBDataHarmRateI.setI13(dataHarmrateI.getI13());
                influxDBDataHarmRateI.setI14(dataHarmrateI.getI14());
                influxDBDataHarmRateI.setI15(dataHarmrateI.getI15());
                influxDBDataHarmRateI.setI16(dataHarmrateI.getI16());
                influxDBDataHarmRateI.setI17(dataHarmrateI.getI17());
                influxDBDataHarmRateI.setI18(dataHarmrateI.getI18());
                influxDBDataHarmRateI.setI19(dataHarmrateI.getI19());
                influxDBDataHarmRateI.setI20(dataHarmrateI.getI20());
                influxDBDataHarmRateI.setI21(dataHarmrateI.getI21());
                influxDBDataHarmRateI.setI22(dataHarmrateI.getI22());
                influxDBDataHarmRateI.setI23(dataHarmrateI.getI23());
                influxDBDataHarmRateI.setI24(dataHarmrateI.getI24());
                influxDBDataHarmRateI.setI25(dataHarmrateI.getI25());
                influxDBDataHarmRateI.setI26(dataHarmrateI.getI26());
                influxDBDataHarmRateI.setI27(dataHarmrateI.getI27());
                influxDBDataHarmRateI.setI28(dataHarmrateI.getI28());
                influxDBDataHarmRateI.setI29(dataHarmrateI.getI29());
                influxDBDataHarmRateI.setI30(dataHarmrateI.getI30());
                influxDBDataHarmRateI.setI31(dataHarmrateI.getI31());
                influxDBDataHarmRateI.setI32(dataHarmrateI.getI32());
                influxDBDataHarmRateI.setI33(dataHarmrateI.getI33());
                influxDBDataHarmRateI.setI34(dataHarmrateI.getI34());
                influxDBDataHarmRateI.setI35(dataHarmrateI.getI35());
                influxDBDataHarmRateI.setI36(dataHarmrateI.getI36());
                influxDBDataHarmRateI.setI37(dataHarmrateI.getI37());
                influxDBDataHarmRateI.setI38(dataHarmrateI.getI38());
                influxDBDataHarmRateI.setI39(dataHarmrateI.getI39());
                influxDBDataHarmRateI.setI40(dataHarmrateI.getI40());
                influxDBDataHarmRateI.setI41(dataHarmrateI.getI41());
                influxDBDataHarmRateI.setI42(dataHarmrateI.getI42());
                influxDBDataHarmRateI.setI43(dataHarmrateI.getI43());
                influxDBDataHarmRateI.setI44(dataHarmrateI.getI44());
                influxDBDataHarmRateI.setI45(dataHarmrateI.getI45());
                influxDBDataHarmRateI.setI46(dataHarmrateI.getI46());
                influxDBDataHarmRateI.setI47(dataHarmrateI.getI47());
                influxDBDataHarmRateI.setI48(dataHarmrateI.getI48());
                influxDBDataHarmRateI.setI49(dataHarmrateI.getI49());
                influxDBDataHarmRateI.setI50(dataHarmrateI.getI50());
            }
            else if (valueType.equals("MAX")){
                influxDBDataHarmRateI.setI1(dataHarmrateI.getI1Max());
                influxDBDataHarmRateI.setI2(dataHarmrateI.getI2Max());
                influxDBDataHarmRateI.setI3(dataHarmrateI.getI3Max());
                influxDBDataHarmRateI.setI4(dataHarmrateI.getI4Max());
                influxDBDataHarmRateI.setI5(dataHarmrateI.getI5Max());
                influxDBDataHarmRateI.setI6(dataHarmrateI.getI6Max());
                influxDBDataHarmRateI.setI7(dataHarmrateI.getI7Max());
                influxDBDataHarmRateI.setI8(dataHarmrateI.getI8Max());
                influxDBDataHarmRateI.setI9(dataHarmrateI.getI9Max());
                influxDBDataHarmRateI.setI10(dataHarmrateI.getI10Max());
                influxDBDataHarmRateI.setI11(dataHarmrateI.getI11Max());
                influxDBDataHarmRateI.setI12(dataHarmrateI.getI12Max());
                influxDBDataHarmRateI.setI13(dataHarmrateI.getI13Max());
                influxDBDataHarmRateI.setI14(dataHarmrateI.getI14Max());
                influxDBDataHarmRateI.setI15(dataHarmrateI.getI15Max());
                influxDBDataHarmRateI.setI16(dataHarmrateI.getI16Max());
                influxDBDataHarmRateI.setI17(dataHarmrateI.getI17Max());
                influxDBDataHarmRateI.setI18(dataHarmrateI.getI18Max());
                influxDBDataHarmRateI.setI19(dataHarmrateI.getI19Max());
                influxDBDataHarmRateI.setI20(dataHarmrateI.getI20Max());
                influxDBDataHarmRateI.setI21(dataHarmrateI.getI21Max());
                influxDBDataHarmRateI.setI22(dataHarmrateI.getI22Max());
                influxDBDataHarmRateI.setI23(dataHarmrateI.getI23Max());
                influxDBDataHarmRateI.setI24(dataHarmrateI.getI24Max());
                influxDBDataHarmRateI.setI25(dataHarmrateI.getI25Max());
                influxDBDataHarmRateI.setI26(dataHarmrateI.getI26Max());
                influxDBDataHarmRateI.setI27(dataHarmrateI.getI27Max());
                influxDBDataHarmRateI.setI28(dataHarmrateI.getI28Max());
                influxDBDataHarmRateI.setI29(dataHarmrateI.getI29Max());
                influxDBDataHarmRateI.setI30(dataHarmrateI.getI30Max());
                influxDBDataHarmRateI.setI31(dataHarmrateI.getI31Max());
                influxDBDataHarmRateI.setI32(dataHarmrateI.getI32Max());
                influxDBDataHarmRateI.setI33(dataHarmrateI.getI33Max());
                influxDBDataHarmRateI.setI34(dataHarmrateI.getI34Max());
                influxDBDataHarmRateI.setI35(dataHarmrateI.getI35Max());
                influxDBDataHarmRateI.setI36(dataHarmrateI.getI36Max());
                influxDBDataHarmRateI.setI37(dataHarmrateI.getI37Max());
                influxDBDataHarmRateI.setI38(dataHarmrateI.getI38Max());
                influxDBDataHarmRateI.setI39(dataHarmrateI.getI39Max());
                influxDBDataHarmRateI.setI40(dataHarmrateI.getI40Max());
                influxDBDataHarmRateI.setI41(dataHarmrateI.getI41Max());
                influxDBDataHarmRateI.setI42(dataHarmrateI.getI42Max());
                influxDBDataHarmRateI.setI43(dataHarmrateI.getI43Max());
                influxDBDataHarmRateI.setI44(dataHarmrateI.getI44Max());
                influxDBDataHarmRateI.setI45(dataHarmrateI.getI45Max());
                influxDBDataHarmRateI.setI46(dataHarmrateI.getI46Max());
                influxDBDataHarmRateI.setI47(dataHarmrateI.getI47Max());
                influxDBDataHarmRateI.setI48(dataHarmrateI.getI48Max());
                influxDBDataHarmRateI.setI49(dataHarmrateI.getI49Max());
                influxDBDataHarmRateI.setI50(dataHarmrateI.getI50Max());
            }
            else if (valueType.equals("MIN")){
                influxDBDataHarmRateI.setI1(dataHarmrateI.getI1Min());
                influxDBDataHarmRateI.setI2(dataHarmrateI.getI2Min());
                influxDBDataHarmRateI.setI3(dataHarmrateI.getI3Min());
                influxDBDataHarmRateI.setI4(dataHarmrateI.getI4Min());
                influxDBDataHarmRateI.setI5(dataHarmrateI.getI5Min());
                influxDBDataHarmRateI.setI6(dataHarmrateI.getI6Min());
                influxDBDataHarmRateI.setI7(dataHarmrateI.getI7Min());
                influxDBDataHarmRateI.setI8(dataHarmrateI.getI8Min());
                influxDBDataHarmRateI.setI9(dataHarmrateI.getI9Min());
                influxDBDataHarmRateI.setI10(dataHarmrateI.getI10Min());
                influxDBDataHarmRateI.setI11(dataHarmrateI.getI11Min());
                influxDBDataHarmRateI.setI12(dataHarmrateI.getI12Min());
                influxDBDataHarmRateI.setI13(dataHarmrateI.getI13Min());
                influxDBDataHarmRateI.setI14(dataHarmrateI.getI14Min());
                influxDBDataHarmRateI.setI15(dataHarmrateI.getI15Min());
                influxDBDataHarmRateI.setI16(dataHarmrateI.getI16Min());
                influxDBDataHarmRateI.setI17(dataHarmrateI.getI17Min());
                influxDBDataHarmRateI.setI18(dataHarmrateI.getI18Min());
                influxDBDataHarmRateI.setI19(dataHarmrateI.getI19Min());
                influxDBDataHarmRateI.setI20(dataHarmrateI.getI20Min());
                influxDBDataHarmRateI.setI21(dataHarmrateI.getI21Min());
                influxDBDataHarmRateI.setI22(dataHarmrateI.getI22Min());
                influxDBDataHarmRateI.setI23(dataHarmrateI.getI23Min());
                influxDBDataHarmRateI.setI24(dataHarmrateI.getI24Min());
                influxDBDataHarmRateI.setI25(dataHarmrateI.getI25Min());
                influxDBDataHarmRateI.setI26(dataHarmrateI.getI26Min());
                influxDBDataHarmRateI.setI27(dataHarmrateI.getI27Min());
                influxDBDataHarmRateI.setI28(dataHarmrateI.getI28Min());
                influxDBDataHarmRateI.setI29(dataHarmrateI.getI29Min());
                influxDBDataHarmRateI.setI30(dataHarmrateI.getI30Min());
                influxDBDataHarmRateI.setI31(dataHarmrateI.getI31Min());
                influxDBDataHarmRateI.setI32(dataHarmrateI.getI32Min());
                influxDBDataHarmRateI.setI33(dataHarmrateI.getI33Min());
                influxDBDataHarmRateI.setI34(dataHarmrateI.getI34Min());
                influxDBDataHarmRateI.setI35(dataHarmrateI.getI35Min());
                influxDBDataHarmRateI.setI36(dataHarmrateI.getI36Min());
                influxDBDataHarmRateI.setI37(dataHarmrateI.getI37Min());
                influxDBDataHarmRateI.setI38(dataHarmrateI.getI38Min());
                influxDBDataHarmRateI.setI39(dataHarmrateI.getI39Min());
                influxDBDataHarmRateI.setI40(dataHarmrateI.getI40Min());
                influxDBDataHarmRateI.setI41(dataHarmrateI.getI41Min());
                influxDBDataHarmRateI.setI42(dataHarmrateI.getI42Min());
                influxDBDataHarmRateI.setI43(dataHarmrateI.getI43Min());
                influxDBDataHarmRateI.setI44(dataHarmrateI.getI44Min());
                influxDBDataHarmRateI.setI45(dataHarmrateI.getI45Min());
                influxDBDataHarmRateI.setI46(dataHarmrateI.getI46Min());
                influxDBDataHarmRateI.setI47(dataHarmrateI.getI47Min());
                influxDBDataHarmRateI.setI48(dataHarmrateI.getI48Min());
                influxDBDataHarmRateI.setI49(dataHarmrateI.getI49Min());
                influxDBDataHarmRateI.setI50(dataHarmrateI.getI50Min());
            }
            else if (valueType.equals("CP95")){
                influxDBDataHarmRateI.setI1(dataHarmrateI.getI1Cp95());
                influxDBDataHarmRateI.setI2(dataHarmrateI.getI2Cp95());
                influxDBDataHarmRateI.setI3(dataHarmrateI.getI3Cp95());
                influxDBDataHarmRateI.setI4(dataHarmrateI.getI4Cp95());
                influxDBDataHarmRateI.setI5(dataHarmrateI.getI5Cp95());
                influxDBDataHarmRateI.setI6(dataHarmrateI.getI6Cp95());
                influxDBDataHarmRateI.setI7(dataHarmrateI.getI7Cp95());
                influxDBDataHarmRateI.setI8(dataHarmrateI.getI8Cp95());
                influxDBDataHarmRateI.setI9(dataHarmrateI.getI9Cp95());
                influxDBDataHarmRateI.setI10(dataHarmrateI.getI10Cp95());
                influxDBDataHarmRateI.setI11(dataHarmrateI.getI11Cp95());
                influxDBDataHarmRateI.setI12(dataHarmrateI.getI12Cp95());
                influxDBDataHarmRateI.setI13(dataHarmrateI.getI13Cp95());
                influxDBDataHarmRateI.setI14(dataHarmrateI.getI14Cp95());
                influxDBDataHarmRateI.setI15(dataHarmrateI.getI15Cp95());
                influxDBDataHarmRateI.setI16(dataHarmrateI.getI16Cp95());
                influxDBDataHarmRateI.setI17(dataHarmrateI.getI17Cp95());
                influxDBDataHarmRateI.setI18(dataHarmrateI.getI18Cp95());
                influxDBDataHarmRateI.setI19(dataHarmrateI.getI19Cp95());
                influxDBDataHarmRateI.setI20(dataHarmrateI.getI20Cp95());
                influxDBDataHarmRateI.setI21(dataHarmrateI.getI21Cp95());
                influxDBDataHarmRateI.setI22(dataHarmrateI.getI22Cp95());
                influxDBDataHarmRateI.setI23(dataHarmrateI.getI23Cp95());
                influxDBDataHarmRateI.setI24(dataHarmrateI.getI24Cp95());
                influxDBDataHarmRateI.setI25(dataHarmrateI.getI25Cp95());
                influxDBDataHarmRateI.setI26(dataHarmrateI.getI26Cp95());
                influxDBDataHarmRateI.setI27(dataHarmrateI.getI27Cp95());
                influxDBDataHarmRateI.setI28(dataHarmrateI.getI28Cp95());
                influxDBDataHarmRateI.setI29(dataHarmrateI.getI29Cp95());
                influxDBDataHarmRateI.setI30(dataHarmrateI.getI30Cp95());
                influxDBDataHarmRateI.setI31(dataHarmrateI.getI31Cp95());
                influxDBDataHarmRateI.setI32(dataHarmrateI.getI32Cp95());
                influxDBDataHarmRateI.setI33(dataHarmrateI.getI33Cp95());
                influxDBDataHarmRateI.setI34(dataHarmrateI.getI34Cp95());
                influxDBDataHarmRateI.setI35(dataHarmrateI.getI35Cp95());
                influxDBDataHarmRateI.setI36(dataHarmrateI.getI36Cp95());
                influxDBDataHarmRateI.setI37(dataHarmrateI.getI37Cp95());
                influxDBDataHarmRateI.setI38(dataHarmrateI.getI38Cp95());
                influxDBDataHarmRateI.setI39(dataHarmrateI.getI39Cp95());
                influxDBDataHarmRateI.setI40(dataHarmrateI.getI40Cp95());
                influxDBDataHarmRateI.setI41(dataHarmrateI.getI41Cp95());
                influxDBDataHarmRateI.setI42(dataHarmrateI.getI42Cp95());
                influxDBDataHarmRateI.setI43(dataHarmrateI.getI43Cp95());
                influxDBDataHarmRateI.setI44(dataHarmrateI.getI44Cp95());
                influxDBDataHarmRateI.setI45(dataHarmrateI.getI45Cp95());
                influxDBDataHarmRateI.setI46(dataHarmrateI.getI46Cp95());
                influxDBDataHarmRateI.setI47(dataHarmrateI.getI47Cp95());
                influxDBDataHarmRateI.setI48(dataHarmrateI.getI48Cp95());
                influxDBDataHarmRateI.setI49(dataHarmrateI.getI49Cp95());
                influxDBDataHarmRateI.setI50(dataHarmrateI.getI50Cp95());
            }

            influxDBDataHarmRateIList.add(influxDBDataHarmRateI);

        }



        return influxDBDataHarmRateIList;
    }

}
