//package com.yeejoin.amos.boot.module.jxiop.biz.utils;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.squareup.moshi.Json;
//import com.yeejoin.amos.component.influxdb.InfluxDbConnection;
//import com.yeejoin.amos.component.influxdb.InfluxdbUtil;
//import org.influxdb.dto.QueryResult;
//import org.springframework.beans.BeanWrapperImpl;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.util.ObjectUtils;
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
//@Component
//public class InfluxDButils {
//    @Autowired
//    InfluxDbConnection influxDbConnection;
//    @Autowired
//    InfluxdbUtil influxdbUtil;
//    public <T> List<T> getListData(String sql, Class<T> clazz) {
//        List<T> list = new ArrayList<>();
//        try {
//            QueryResult query = influxDbConnection.query(sql);
//            List<QueryResult.Result> queryResults = query.getResults();
//            for (QueryResult.Result result : queryResults) {
//                List<QueryResult.Series> series = result.getSeries();
//                if (series == null) {
//                    continue;
//                }
//                for (QueryResult.Series serie : series) {
//                    List<List<Object>> values = serie.getValues();
//                    List<String> columns = serie.getColumns();
//                    for (int i = 0; i < values.size(); ++i) {
//                        T object = clazz.newInstance();
//                        BeanWrapperImpl bean = new BeanWrapperImpl(object);
//                        for (int j = 0; j < columns.size(); ++j) {
//                            String k = columns.get(j);
//                            Object v = values.get(i).get(j);
//                            if ("time".equals(k)) {
//                                continue;
//                            }  else {
//                                bean.setPropertyValue(k, v);
//                            }
//                        }
//                        list.add(object);
//                    }
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return list;
//    }
//
//    public <T> List<T> getListData1(String sql, Class<T> clazz) {
//        List<T> list = new ArrayList<>();
//        try {
//            List<Map<String,Object>> mapList = influxdbUtil.query(sql);
//            list=mapList.stream().map(stringObjectMap -> JSONObject.parseObject(JSON.toJSONString(stringObjectMap),clazz)).collect(Collectors.toList());
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return list;
//    }
//
//    public <T> List<T> getListDataAll(String sql, Class<T> clazz) {
//        List<T> list = new ArrayList<>();
//        try {
//            QueryResult query = influxDbConnection.query(sql);
//            List<QueryResult.Result> queryResults = query.getResults();
//            for (QueryResult.Result result : queryResults) {
//                List<QueryResult.Series> series = result.getSeries();
//                if (series == null) {
//                    continue;
//                }
//                for (QueryResult.Series serie : series) {
//                    List<List<Object>> values = serie.getValues();
//                    List<String> columns = serie.getColumns();
//                    for (int i = 0; i < values.size(); ++i) {
//                        T object = clazz.newInstance();
//                        BeanWrapperImpl bean = new BeanWrapperImpl(object);
//                        for (int j = 0; j < columns.size(); ++j) {
//                            String k = columns.get(j);
//                            Object v = values.get(i).get(j);
//
//                            bean.setPropertyValue(k, v);
//
//                        }
//                        list.add(object);
//                    }
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return list;
//    }
//}
