package org.ts.ddcs.itemdatatemplate.sw;


import com.alibaba.fastjson.JSONObject;
import org.ts.ddcs.common.util.BytesHelp;
import org.ts.ddcs.common.util.StringUtil;
import org.ts.ddcs.common.util.Sw2014DatagramTemplateHelp;
import org.ts.ddcs.common.util.ValueLen;
import org.ts.ddcs.itemdatatemplate.DataItemTemplate;

import java.math.BigDecimal;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * 0x04
 * 时间步长码  N(3)
 */
public class DataItemTemplateDRxnn extends DataItemTemplate {


//    @Override
//    public String toString() {
//        if (this.datas.size() == 12) {
//            String text = "";
//            for (int i = 0; i < 12; i++) {
//                String value = (String) this.datas.get(String.format("%d", i + 1));
//                text += " " + String.format("%d", (i + 1) * 5) + "分：" + value;
//            }
//            return text;
//        }
//        return null;
//    }

    @Override
    public int stream(byte[] data, int index) {
        this.macth = false;
        int count = 0;
        String flag = BytesHelp.byte2HexStr(data, index + count, 1);
        if (flag.toUpperCase().equals(this.feture)) {
            count += 1;
            ValueLen valueLen = Sw2014DatagramTemplateHelp.getValueLen(data, index + count);
            count += 1;
            byte[] buff = BytesHelp.subBytes(data, index + count, valueLen.getByteLen());
            count += valueLen.getByteLen();
            String dataStr = BytesHelp.byte2HexStr(buff);
            this.valueBuff = new byte[3];
            //日，时，分，只有一个值大于0
            String tm = dataStr.substring(0, 2);
            int dValue = Integer.parseInt(tm);
            this.valueBuff[0] = (byte) dValue;
            tm = dataStr.substring(2, 4);
            int hValue = Integer.parseInt(tm);
            this.valueBuff[1] = (byte) hValue;
            tm = dataStr.substring(4, 6);
            int mValue = Integer.parseInt(tm);
            this.valueBuff[2] = (byte) mValue;


            this.macth = true;
        }
        return count;
    }

    @Override
    public int stream(byte[] data, int index, int batchSize) {
        return 0;
    }

    @Override
    public String getStringValue() {
        return null;
    }

    @Override
    public void saveValue(Map<String, List<Map<String,Object>>> keyStore) {
//        if (keyStore.containsKey(this.feture)) {
//            List<JSONObject> values = keyStore.get(this.feture);
//            if (this.datas.size() == 12) {
//                for (int i = 0; i < 12; i++) {
//                    String text = String.format("%d", (i + 1) * 5) + "分：" + (String) this.datas.get(String.format("%d", i + 1));
//                    JSONObject value = new JSONObject();
//                    value.put("key", this.name);
//                    value.put("desc", this.desc);
//                    value.put("value", text);
//                    values.add(value);
//                }
//            }
//        } else {
//            List<JSONObject> values = new LinkedList<>();
//            if (this.datas.size() == 12) {
//                String text = "";
//                for (int i = 0; i < 12; i++) {
//                    String value = (String) this.datas.get(String.format("%d", i + 1));
//                    text += " " + String.format("%d", (i + 1) * 5) + "分：" + value;
//                }
//                JSONObject value = new JSONObject();
//                value.put("key", this.name);
//                value.put("desc", this.desc);
//                value.put("value", text);
//                values.add(value);
//            }
//            keyStore.put(this.feture, values);
//        }
    }
}
