/**
 * Copyright 2019 DH
 * All right reserved.
 * 项目名称: 大恒泰山系统
 * 创建日期:2023/8/28
 */
package org.ts.ddcs.dataStream.sink;

import lombok.extern.slf4j.Slf4j;
import org.ts.ddcs.dataStream.DataStreamAdapter;
import org.ts.ddcs.dataStream.DataStreamCache;
import org.ts.ddcs.dataStream.DataStreamLineManager;
import org.ts.ddcs.metadata.DataStreamCacheMetadata;

import java.util.List;
import java.util.Map;

/***
 * Date:2023/8/28
 * Title:水文输出
 * Description：对本文件的详细描述，原则上不能少于30字
 * @author dylan
 * @version 1.0
 * Remark：认为有必要的其他信息
 */
@Slf4j
public class DataStreamSwKafkaSink extends DataStreamSink {
    private DataStreamCache dataStreamCache;

    @Override
    public void init(DataStreamLineManager context) {
        this.setContext(context);
        this.dataStreamCache = context.getCache();
    }

    @Override
    public void sink(DataStreamAdapter dataStreamAdapter, List<Map<String, Object>> elementDatas) {
        log.info("sink {} 接收时间 {}", dataStreamAdapter.getRtuCode(),this.dataStreamCache.getStringValue(DataStreamCacheMetadata.METADATA_PICK_TIME.getName()));
//        JSONObject jsonBody = new JSONObject();
//        String datagramCode = this.dataStreamCache.getDatagramCode();
//        jsonBody.put(SwDatagramHeaderMetadataEnum.METADATA_DATAGRAM_KIND.getName(), datagramCode);
//        jsonBody.put(SwDatagramHeaderMetadataEnum.METADATA_FROM_TIME.getName(), this.dataStreamCache.getPickPacketTime());
//        jsonBody.put(SwDatagramHeaderMetadataEnum.METADATA_UP_TIME.getName(), this.dataStreamCache.getStringValue(DatagramConstant.sendPacketTime));
//        String collectTime= this.dataStreamCache.getStringValue(DatagramConstant.collectTime);
//        if (null != collectTime){
//            jsonBody.put(SwDatagramHeaderMetadataEnum.METADATA_COLLECT_TIME.getName(), collectTime);
//        }
//        jsonBody.put(SwDatagramHeaderMetadataEnum.METADATA_RTU_CODE.getName(), this.dataStreamCache.getRtuCode());
//        jsonBody.put(SwDatagramHeaderMetadataEnum.METADATA_DATAGRAM.getName(),BytesHelp.byte2HexStr(this.dataStreamCache.getDatagramBuff()));
//        for (Map<String, Object> data : elementDatas) {
//            List<JSONObject> keyStore = (List<JSONObject>) data.get(JsonPackMetadataEnum.PACK_METADATA_ELEMENT_DATA.getName());
//            if (null != keyStore&&keyStore.size()>0){
//                String  cloumnName =keyStore.get(0).getString(ElementDataMetadataEnum.ELEMENT_METADATA_NAME.getName());
//                List<JSONObject> cloumns = new ArrayList<>(keyStore.size());
//                for (JSONObject item:keyStore){
//                    JSONObject cloumn = new JSONObject();
//                    if (item.containsKey(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName())){
//                        cloumn.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(),item.getString(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName()));
//                    }else{
//                        cloumn.put(ElementDataMetadataEnum.ELEMENT_METADATA_CODE.getName(),cloumnName);
//                    }
//                    cloumn.put(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName(),item.getString(ElementDataMetadataEnum.ELEMENT_METADATA_VALUE.getName()));
//                    cloumns.add(cloumn);
//                }
//                jsonBody.put(cloumnName,cloumns);
//            }
//        }
//        log.info("data item :{}", jsonBody.toJSONString());
//        KafkaClient.messageSubmit(KafkaConstants.TOPIC_TSYWXT_DATAGRAM_MESSAGE, jsonBody.toJSONString());
    }
}
