package org.ts.ddcs.itemdatatemplate.sw;

import org.ts.ddcs.common.metadata.ElementDataMetadataEnum;
import org.ts.ddcs.common.util.BytesHelp;
import org.ts.ddcs.common.util.Sw2014DatagramTemplateHelp;
import org.ts.ddcs.common.util.ValueLen;
import org.ts.ddcs.itemdatatemplate.DataItemTemplate;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * 0x45
 * 遥测站状态及报警信息,4 字节 HEX
 */
public class DataItemTemplateZT extends DataItemTemplate {


//    @Override
//    public String toString() {
//        String showInfo = "";
//        if (this.datas.containsKey("alternatingCurrentCharging")) {
//            String value = (String) this.datas.get("alternatingCurrentCharging");
//            if (value.equals("1")) {
//                showInfo += "交流电充电状态:停电; ";
//            } else {
//                showInfo += "交流电充电状态 正常; ";
//            }
//        }
//
//        if (this.datas.containsKey("batteryVoltage")) {
//            String value = (String) this.datas.get("batteryVoltage");
//            if (value.equals("1")) {
//                showInfo += "蓄电池电压状态 电压低; ";
//            } else {
//                showInfo += "蓄电池电压状态 正常; ";
//            }
//        }
//
//        if (this.datas.containsKey("waterLevelWarning")) {
//            String value = (String) this.datas.get("waterLevelWarning");
//            if (value.equals("1")) {
//                showInfo += "水位超限报警状态 报警; ";
//            } else {
//                showInfo += "水位超限报警状态 正常; ";
//            }
//        }
//
//        if (this.datas.containsKey("flowWarning")) {
//            String value = (String) this.datas.get("flowWarning");
//            if (value.equals("1")) {
//                showInfo += "流量超限报警状态 报警; ";
//            } else {
//                showInfo += "流量超限报警状态 正常; ";
//            }
//        }
//
//        if (this.datas.containsKey("waterQaWarning")) {
//            String value = (String) this.datas.get("waterQaWarning");
//            if (value.equals("1")) {
//                showInfo += "水质超限报警状态 报警; ";
//            } else {
//                showInfo += "水质超限报警状态 正常; ";
//            }
//        }
//
//
//        if (this.datas.containsKey("waterFlowDeviceStatsu")) {
//            String value = (String) this.datas.get("waterFlowDeviceStatsu");
//            if (value.equals("1")) {
//                showInfo += "流量仪表状态 故障; ";
//            } else {
//                showInfo += "流量仪表状态 正常; ";
//            }
//        }
//
//        if (this.datas.containsKey("waterLevelDeviceStatus")) {
//            String value = (String) this.datas.get("waterLevelDeviceStatus");
//            if (value.equals("1")) {
//                showInfo += "水位仪表状态 故障; ";
//            } else {
//                showInfo += "水位仪表状态 正常; ";
//            }
//        }
//
//        if (this.datas.containsKey("waterDoorStatus")) {
//            String value = (String) this.datas.get("waterDoorStatus");
//            if (value.equals("1")) {
//                showInfo += "终端箱门状态 关闭; ";
//            } else {
//                showInfo += "终端箱门状态 开启; ";
//            }
//        }
//
//        if (this.datas.containsKey("memoryStatus")) {
//            String value = (String) this.datas.get("memoryStatus");
//            if (value.equals("1")) {
//                showInfo += "存储器状态 异常; ";
//            } else {
//                showInfo += "存储器状态 正常; ";
//            }
//        }
//        if (this.datas.containsKey("icCard")) {
//            String value = (String) this.datas.get("icCard");
//            if (value.equals("1")) {
//                showInfo += "IC 卡功能 有效; ";
//            } else {
//                showInfo += "IC 卡功能 关闭; ";
//            }
//        }
//        if (this.datas.containsKey("waterPump")) {
//            String value = (String) this.datas.get("waterPump");
//            if (value.equals("1")) {
//                showInfo += "水泵工作状态 停机; ";
//            } else {
//                showInfo += "水泵工作状态 工作; ";
//            }
//        }
//        if (this.datas.containsKey("waterYield")) {
//            String value = (String) this.datas.get("waterYield");
//            if (value.equals("1")) {
//                showInfo += "剩余水量报警 超限; ";
//            } else {
//                showInfo += "剩余水量报警 未超限; ";
//            }
//        }
//
//        return showInfo;
//    }

    @Override
    public int stream(byte[] data, int index) throws UnsupportedEncodingException {
        this.macth = false;
        this.datas.clear();
        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());
            String hexStr = BytesHelp.byte2HexStr(buff);
            String binStr = BytesHelp.hexString2binaryString(hexStr);
            int bininxdex = 31;
            this.datas.put("alternatingCurrentCharging", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("batteryVoltage", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("waterLevelWarning", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("flowWarning", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("waterQaWarning", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("waterFlowDeviceStatsu", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("waterLevelDeviceStatus", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("waterDoorStatus", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("memoryStatus", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("icCard", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("waterPump", binStr.substring(bininxdex, bininxdex + 1));
            bininxdex -= 1;
            this.datas.put("waterYield", binStr.substring(bininxdex, bininxdex + 1));
            count += valueLen.getByteLen();
            this.valueLen = valueLen;
            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<Map<String,Object>> values = keyStore.get(this.feture);

            if (this.datas.containsKey("alternatingCurrentCharging")) {
                String code = (String) this.datas.get("alternatingCurrentCharging");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "alternatingCurrentCharging");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "交流电充电状态:停电; ";
//                } else {
//                    showInfo += "交流电充电状态 正常; ";
//                }
            }

            if (this.datas.containsKey("batteryVoltage")) {
                String code = (String) this.datas.get("batteryVoltage");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "batteryVoltage");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "蓄电池电压状态 电压低; ";
//                } else {
//                    showInfo += "蓄电池电压状态 正常; ";
//                }
            }

            if (this.datas.containsKey("waterLevelWarning")) {
                String code = (String) this.datas.get("waterLevelWarning");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterLevelWarning");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "水位超限报警状态 报警; ";
//                } else {
//                    showInfo += "水位超限报警状态 正常; ";
//                }
            }

            if (this.datas.containsKey("flowWarning")) {
                String code = (String) this.datas.get("flowWarning");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "flowWarning");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "流量超限报警状态 报警; ";
//                } else {
//                    showInfo += "流量超限报警状态 正常; ";
//                }
            }

            if (this.datas.containsKey("waterQaWarning")) {
                String code = (String) this.datas.get("waterQaWarning");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterQaWarning");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "水质超限报警状态 报警; ";
//                } else {
//                    showInfo += "水质超限报警状态 正常; ";
//                }
            }


            if (this.datas.containsKey("waterFlowDeviceStatsu")) {
                String code = (String) this.datas.get("waterFlowDeviceStatsu");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterFlowDeviceStatsu");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "流量仪表状态 故障; ";
//                } else {
//                    showInfo += "流量仪表状态 正常; ";
//                }
            }

            if (this.datas.containsKey("waterLevelDeviceStatus")) {
                String code = (String) this.datas.get("waterLevelDeviceStatus");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterLevelDeviceStatus");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "水位仪表状态 故障; ";
//                } else {
//                    showInfo += "水位仪表状态 正常; ";
//                }
            }

            if (this.datas.containsKey("waterDoorStatus")) {
                String code = (String) this.datas.get("waterDoorStatus");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterDoorStatus");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "终端箱门状态 关闭; ";
//                } else {
//                    showInfo += "终端箱门状态 开启; ";
//                }
            }

            if (this.datas.containsKey("memoryStatus")) {
                String code = (String) this.datas.get("memoryStatus");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "memoryStatus");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "存储器状态 异常; ";
//                } else {
//                    showInfo += "存储器状态 正常; ";
//                }
            }
            if (this.datas.containsKey("icCard")) {
                String code = (String) this.datas.get("icCard");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "icCard");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "IC 卡功能 有效; ";
//                } else {
//                    showInfo += "IC 卡功能 关闭; ";
//                }
            }
            if (this.datas.containsKey("waterPump")) {
                String code = (String) this.datas.get("waterPump");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterPump");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "水泵工作状态 停机; ";
//                } else {
//                    showInfo += "水泵工作状态 工作; ";
//                }
            }
            if (this.datas.containsKey("waterYield")) {
                String code = (String) this.datas.get("waterYield");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterYield");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "剩余水量报警 超限; ";
//                } else {
//                    showInfo += "剩余水量报警 未超限; ";
//                }
            }


        } else {
            List<Map<String,Object>> values = new LinkedList<>();
            if (this.datas.containsKey("alternatingCurrentCharging")) {
                String code = (String) this.datas.get("alternatingCurrentCharging");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "alternatingCurrentCharging");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "交流电充电状态:停电; ";
//                } else {
//                    showInfo += "交流电充电状态 正常; ";
//                }
            }

            if (this.datas.containsKey("batteryVoltage")) {
                String code = (String) this.datas.get("batteryVoltage");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "batteryVoltage");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "蓄电池电压状态 电压低; ";
//                } else {
//                    showInfo += "蓄电池电压状态 正常; ";
//                }
            }

            if (this.datas.containsKey("waterLevelWarning")) {
                String code = (String) this.datas.get("waterLevelWarning");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterLevelWarning");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "水位超限报警状态 报警; ";
//                } else {
//                    showInfo += "水位超限报警状态 正常; ";
//                }
            }

            if (this.datas.containsKey("flowWarning")) {
                String code = (String) this.datas.get("flowWarning");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "flowWarning");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "流量超限报警状态 报警; ";
//                } else {
//                    showInfo += "流量超限报警状态 正常; ";
//                }
            }

            if (this.datas.containsKey("waterQaWarning")) {
                String code = (String) this.datas.get("waterQaWarning");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterQaWarning");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "水质超限报警状态 报警; ";
//                } else {
//                    showInfo += "水质超限报警状态 正常; ";
//                }
            }


            if (this.datas.containsKey("waterFlowDeviceStatsu")) {
                String code = (String) this.datas.get("waterFlowDeviceStatsu");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterFlowDeviceStatsu");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "流量仪表状态 故障; ";
//                } else {
//                    showInfo += "流量仪表状态 正常; ";
//                }
            }

            if (this.datas.containsKey("waterLevelDeviceStatus")) {
                String code = (String) this.datas.get("waterLevelDeviceStatus");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterLevelDeviceStatus");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "水位仪表状态 故障; ";
//                } else {
//                    showInfo += "水位仪表状态 正常; ";
//                }
            }

            if (this.datas.containsKey("waterDoorStatus")) {
                String code = (String) this.datas.get("waterDoorStatus");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterDoorStatus");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "终端箱门状态 关闭; ";
//                } else {
//                    showInfo += "终端箱门状态 开启; ";
//                }
            }

            if (this.datas.containsKey("memoryStatus")) {
                String code = (String) this.datas.get("memoryStatus");
                Map<String,Object> value = new HashMap<>();;
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "memoryStatus");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "存储器状态 异常; ";
//                } else {
//                    showInfo += "存储器状态 正常; ";
//                }
            }
            if (this.datas.containsKey("icCard")) {
                String code = (String) this.datas.get("icCard");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "icCard");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "IC 卡功能 有效; ";
//                } else {
//                    showInfo += "IC 卡功能 关闭; ";
//                }
            }
            if (this.datas.containsKey("waterPump")) {
                String code = (String) this.datas.get("waterPump");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterPump");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "水泵工作状态 停机; ";
//                } else {
//                    showInfo += "水泵工作状态 工作; ";
//                }
            }
            if (this.datas.containsKey("waterYield")) {
                String code = (String) this.datas.get("waterYield");
                Map<String,Object> value = new HashMap<>();
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(), this.feture);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName(), this.name);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_UNIT.getName(), this.unit);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_DESC.getName(), this.desc);
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_SUB_CODE.getName(), "waterYield");
                value.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(), code);
                values.add(value);
//                if (value.equals("1")) {
//                    showInfo += "剩余水量报警 超限; ";
//                } else {
//                    showInfo += "剩余水量报警 未超限; ";
//                }
            }
            keyStore.put(this.feture, values);
        }
    }
}
