package org.ts.ddcs.DataItemTemplate;

import org.ts.ddcs.Tool.BytesHelp;
import org.ts.ddcs.Tool.StringUtil;

import java.math.BigDecimal;

/**
 * 0x23
 * 10分钟时段降水量
 */
@SuppressWarnings("all")
public class DataItemTemplatePN10 extends DataItemTemplate {
    @Override
    public byte[] Stream(byte[] data) {
        byte[] remain = data;
        int count = 0;
        String flag = BytesHelp.byte2HexStr(remain, count, 1);
        count += 1;
        if (flag.equals(this.feture)) {
            byte[] len = BytesHelp.subBytes(remain, count, 1);
            count += 1;
            int dataTotalLen = len[0] >> 3;
            int decimalLen = len[0] & 7;
            this.valueBuff = BytesHelp.subBytes(remain, count, dataTotalLen);
            boolean isOutlierData=true;
            String hexStr = BytesHelp.byte2HexStr(this.valueBuff);
            for (int i=0;i<hexStr.length();i++){
                String c = hexStr.substring(i,i+1);
                if (!c.equals("f")){
                    isOutlierData=false;
                    break;
                }
            }
            if (!isOutlierData){
                StringBuffer dataStr = new StringBuffer(hexStr);
                if (decimalLen != 0) {
                    dataStr.insert(dataStr.length() - decimalLen, ".");
                }
                String value = StringUtil.getPrettyNumber(dataStr.toString());
                this.bigDecimalValue = new BigDecimal(value);
            }
            count += dataTotalLen;
           if (remain.length-count>0){
               remain = BytesHelp.subBytes(remain, count, remain.length - count);
           }else{
               remain=new byte[0];
           }
            this.macth = true;
        }
        return remain;
    }

    @Override
    public boolean OutlierData() {
        if (null != this.valueBuff && this.valueBuff.length > 0) {
            boolean isOutlierData=true;
            String hexStr = BytesHelp.byte2HexStr(this.valueBuff);
            for (int i=0;i<hexStr.length();i++){
                String c = hexStr.substring(i,i+1);
                if (!c.equals("F")){
                    isOutlierData=false;
                    break;
                }
            }
            return isOutlierData;
        }
        return false;
    }
}
