package com.jiayue.ipfcst.client.domain.entity;


import com.jiayue.ipfcst.client.protocol2file.EquipmentType;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * 测风塔数据实体
 *
 * @author zzy
 * @version 1.0
 * @since 2019/8/2 9:28
 */
@Data
@Slf4j
public class WindTowerStatusData extends  BaseStatusData{

    public WindTowerStatusData(){
        setEquipmentType(EquipmentType.WIND_TOWER);
    }

    private static final Map<String, Field> numberFields = new HashMap<>();

    static {
        Field[] fields = WindTowerStatusData.class.getDeclaredFields();
        for (Field f : fields) {
            if (f.getAnnotatedType().getType().equals(BigDecimal.class)) {
                f.setAccessible(true);
                numberFields.put(f.getName(), f);
            }
        }
    }


    /**
     * 温度瞬时值（℃）
     */
    private BigDecimal tInst = new BigDecimal(-99);

    /**
     * 湿度瞬时值（%）
     */
    private BigDecimal rhInst = new BigDecimal(-99);


    /**
     * 气压瞬时值（KPa）
     */
    private BigDecimal paInst = new BigDecimal(-99);


    /**
     * 10米风速瞬时值（m/s）
     */
    private BigDecimal wsInst10 = new BigDecimal(-99);

    /**
     * 10米风向瞬时值（°）
     */
    private BigDecimal wdInst10 = new BigDecimal(-99);

    /**
     * 30米风速瞬时值（m/s）
     */
    private BigDecimal wsInst30 = new BigDecimal(-99);

    /**
     * 30米风向瞬时值（°）
     */
    private BigDecimal wdInst30 = new BigDecimal(-99);

    /**
     * 50米风速瞬时值（m/s）
     */
    private BigDecimal wsInst50 = new BigDecimal(-99);

    /**
     * 50米风向瞬时值（°）
     */
    private BigDecimal wdInst50 = new BigDecimal(-99);


    /**
     * 70米风速瞬时值（m/s）
     */
    private BigDecimal wsInst70 = new BigDecimal(-99);

    /**
     * 70米风向瞬时值（°）
     */
    private BigDecimal wdInst70 = new BigDecimal(-99);

    /**
     * 90米风速瞬时值（m/s）
     */
    private BigDecimal wsInst90 = new BigDecimal(-99);


    /**
     * 90米风向瞬时值（°）
     */
    private BigDecimal wdInst90 = new BigDecimal(-99);


    /**
     * 100米风速瞬时值（m/s）
     */
    private BigDecimal wsInst100 = new BigDecimal(-99);


    /**
     * 100米风向瞬时值（°）
     */
    private BigDecimal wdInst100 = new BigDecimal(-99);


    /**
     * 110米风速瞬时值（m/s）
     */
    private BigDecimal wsInst110 = new BigDecimal(-99);
    /**
     * 110米风向瞬时值（°）
     */
    private BigDecimal wdInst110 = new BigDecimal(-99);


    /**
     * 120米风速瞬时值（m/s）
     */
    private BigDecimal wsInst120 = new BigDecimal(-99);


    /**
     * 120米风向瞬时值（°）
     */
    private BigDecimal wdInst120 = new BigDecimal(-99);


    public BigDecimal getNumberValueByFiled(String filedName) throws IllegalAccessException {
        if (numberFields.containsKey(filedName)) {
            return (BigDecimal) numberFields.get(filedName).get(this);
        } else {
            return BigDecimal.valueOf(-99);
        }
    }


    public void putNumberValueByFiled(String filedName,BigDecimal val) throws IllegalAccessException {
        if (numberFields.containsKey(filedName)) {
             numberFields.get(filedName).set(this,val);
        }
    }


    public String iToString() {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("10米：~~").append(this.wsInst10).append(",→→").append(this.wdInst10).append("\r\n");
        stringBuffer.append("30米：~~").append(this.wsInst30).append(",→→").append(this.wdInst30).append("\r\n");
        stringBuffer.append("50米：~~").append(this.wsInst50).append(",→→").append(this.wdInst50).append("\r\n");
        stringBuffer.append("70米：~~").append(this.wsInst70).append(",→→").append(this.wdInst70).append("\r\n");
        stringBuffer.append("90米：~~").append(this.wsInst90).append(",→→").append(this.wdInst90).append("\r\n");
        stringBuffer.append("100米：~~").append(this.wsInst100).append(",→→").append(this.wdInst100).append("\r\n");
        stringBuffer.append("110米：~~").append(this.wsInst110).append(",→→").append(this.wdInst110).append("\r\n");
        stringBuffer.append("120米：~~").append(this.wsInst120).append(",→→").append(this.wdInst120).append("\r\n");
        stringBuffer.append("温度：~~").append(this.tInst).append("\r\n");
        stringBuffer.append("湿度：~~").append(this.rhInst).append("\r\n");
        stringBuffer.append("气压：~~").append(this.paInst).append("\r\n");
        return stringBuffer.toString();
    }

}
