Browse Source

上传和查询结果修改

LiTaohong 7 years ago
parent
commit
1e7fd2f224

+ 3 - 5
base/common-data-es/src/main/java/com/yihu/base/es/config/ElastricSearchHelper.java

@ -163,7 +163,7 @@ public class ElastricSearchHelper {
     */
    public String search(String index, String type, String queryStr) {
        JestClient jestClient = null;
        JestResult result = null;
        SearchResult result = null;
        try {
            jestClient = elasticFactory.getJestClient();
            Search search = new Search.Builder(queryStr)
@ -173,9 +173,7 @@ public class ElastricSearchHelper {
                    .build();
            result = jestClient.execute(search);
            JSONObject resultJsonObject = (JSONObject)JSONObject.parse(result.getJsonString());
            JSONObject jsonObject = (JSONObject)resultJsonObject.get("hits");
            logger.info("search data count:" + jsonObject.get("total"));
            logger.info("search data count:" + result.getTotal());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
@ -183,7 +181,7 @@ public class ElastricSearchHelper {
                jestClient.shutdownClient();
            }
        }
        return result.getJsonString();
        return result.getSourceAsString();
    }
    public static void main(String args[]){

+ 2 - 2
svr/svr-iot/src/main/java/com/yihu/iot/datainput/dao/DataStandardDao.java

@ -9,6 +9,6 @@ import java.util.List;
public interface DataStandardDao extends PagingAndSortingRepository<DataStandardDO, String>, JpaSpecificationExecutor<DataStandardDO> {
    @Query("from DataStandardDO" )
    List<DataStandardDO>  getList();
    @Query("from DataStandardDO where baseName = ?1" )
    List<DataStandardDO>  getList(String baseName);
}

+ 31 - 0
svr/svr-iot/src/main/java/com/yihu/iot/datainput/enums/DataTypeEnum.java

@ -0,0 +1,31 @@
package com.yihu.iot.datainput.enums;
import java.util.HashSet;
import java.util.Set;
public enum DataTypeEnum {
    body_sign_params("体征数据"),
    body_sports_params("运动数据");
    private String desc;
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
    private DataTypeEnum(String desc){
        this.desc = desc;
    }
    public static Set<String> getNames(){
        Set<String> set = new HashSet<>();
        for(DataTypeEnum dataTypeEnum:DataTypeEnum.values()){
            set.add(dataTypeEnum.name().toString());
        }
        return set;
    }
}

+ 6 - 1
svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataInputService.java

@ -196,7 +196,12 @@ public class DataInputService {
        //保存日志
        dataProcessLogService.saveLog(fileName, fileAbsPath, dataSource, "", DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss), "1", "4", "com.yihu.iot.datainput.service.DataInputService.uploadData", DataOperationTypeEnum.upload1.getName(), 0);
        return "success";
        JSONObject result = new JSONObject();
        JSONArray rids = new JSONArray();
        rids.addAll(rowkeyList);
        result.put("id",rids);
        result.put("upload_time",DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
        return result.toJSONString();
    }
    /**

+ 66 - 12
svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataSearchService.java

@ -4,9 +4,15 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.base.es.config.ElastricSearchHelper;
import com.yihu.base.hbase.HBaseHelper;
import com.yihu.iot.datainput.enums.DataTypeEnum;
import com.yihu.iot.datainput.util.ConstantUtils;
import com.yihu.iot.datainput.util.RowKeyUtils;
import io.searchbox.core.Search;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
@ -17,7 +23,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class DataSearchService {
@ -48,6 +56,13 @@ public class DataSearchService {
        JSONArray jsonArray = new JSONArray();
        for(String key : jsonObject.keySet()){
            //默认为must
            if(StringUtils.equalsIgnoreCase("or",key) && StringUtils.equals("or",jsonObject.getString("or"))){
                mustOrShouldQuery.put("should",jsonArray);
            }else{
                mustOrShouldQuery.put("must",jsonArray);
            }
            //分页用,from表示数据从第几条开始取
            if(StringUtils.equalsIgnoreCase("from",key)){
                query.put("from",jsonObject.getInteger("from"));
@ -74,7 +89,8 @@ public class DataSearchService {
            JSONObject matchQuery = new JSONObject();
            JSONObject subQuery = new JSONObject();
            if(DataStandardConvertService.dataMap.get("body_sign_params").contains(key)){
            String baseName = DataTypeEnum.body_sign_params.name().toString();
            if(null != DataStandardConvertService.dataMap.get(baseName) && DataStandardConvertService.dataMap.get(baseName).contains(key)){
                subQuery.put("data."+key,jsonObject.get(key)); //data数据里内嵌的字段,真正的数据值内容
            }else{
                subQuery.put(key,jsonObject.get(key));
@ -82,12 +98,7 @@ public class DataSearchService {
            matchQuery.put("match",subQuery);
            jsonArray.add(matchQuery);
        }
        //默认为must
        if(null != jsonObject.get("should") && StringUtils.equals("should",jsonObject.getString("should"))){
            mustOrShouldQuery.put("should",jsonArray);
        }else{
            mustOrShouldQuery.put("must",jsonArray);
        }
        boolQuery.put("bool",mustOrShouldQuery);
        query.put("query",boolQuery);
@ -96,16 +107,59 @@ public class DataSearchService {
    public String getData(String jsonData){
        String query = getQueryString(jsonData);
        String result = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query);
        return result;
        String esResult = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query);
        JSONArray jsonArray = (JSONArray)JSONArray.parse(esResult);
        List<String> rowkeys = new ArrayList<>();
        for(Object object:jsonArray){
            JSONObject jsonObject = (JSONObject)object;
            JSONArray datas = (JSONArray)jsonObject.get("data");
            for(Object data:datas){
                JSONObject dataJson = (JSONObject)data;
                rowkeys.add(dataJson.getString("rid"));
            }
        }
        List<Map<String, Object>> resultList = new ArrayList<>();
        try {
            //拿到rowkey后,去hbase读取数据内容
            Result[] hbaseData = hBaseHelper.getResultList(ConstantUtils.tableName,rowkeys);
            for(int i = 0;i < hbaseData.length; i++){
                List<Cell> ceList = hbaseData[i].listCells();
                Map<String, Object> map = new HashMap<String, Object>();
                String rowkey = Bytes.toString(hbaseData[i].getRow());
                //rowkey是根据一些头部数据加密而来,解密即可还原
                String tag = RowKeyUtils.getMessageFromRowKey(rowkey);
                String[] tags = tag.split(",");
                map.put("accessToken", tags[0]);
                map.put("deviceSn", tags[1]);
                map.put("extCode", tags[2]);
                if (ceList != null && ceList.size() > 0) {
                    for (Cell cell : ceList) {
                        map.put(Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()),
                                Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));
                    }
                }
                resultList.add(map);
            }
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("get data from hbase fail.",e.getMessage());
            return esResult;
        }
        JSONArray resultArray = new JSONArray();
        resultArray.addAll(resultList);
        return resultArray.toJSONString();
    }
    public static void main(String args[]){
        String str = "{\n" +
                "\t\"systolic\":\"59\",\n" +
                "\t\"extcode\":\"1\",\n" +
                "\t\"or\":\"\",\n" +
                "\t\"extCode\":\"1\",\n" +
                "\t\"idcard\":\"test\",\n" +
                "\t\"from\":1,\n" +
                "\t\"size\":5\n" +
                "\t\"size\":5,\n" +
                "\t\"sort\":{\"measure_time\":\"desc\"}\n" +
                "}";
        System.out.println(getQueryString(str));
    }

+ 6 - 18
svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataStandardConvertService.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.iot.datainput.enums.DataDeviceTypeEnum;
import com.yihu.iot.datainput.enums.DataOperationTypeEnum;
import com.yihu.iot.datainput.enums.DataTypeEnum;
import com.yihu.jw.iot.data_input.DataStandardDO;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.spring.SpringContextHolder;
@ -23,7 +24,7 @@ import java.util.*;
public class DataStandardConvertService {
    private Logger logger = LoggerFactory.getLogger(DataStandardConvertService.class);
    public  static Map<String,List<Object>> dataMap = new HashMap<>();
    public  static Map<String,List<DataStandardDO>> dataMap = new HashMap<>();
    @Autowired
    private DataProcessLogService dataProcessLogService;
@ -37,26 +38,13 @@ public class DataStandardConvertService {
     */
    @PostConstruct
    public void init(){
        List<DataStandardDO>  resultList = dataStandardService.getList();
        if(null == resultList || resultList.isEmpty()){
            return;
        }
        List list = new ArrayList();
        for(DataStandardDO dataStandardDO:resultList){
            String baseName = dataStandardDO.getBaseName();
            if(dataMap.containsKey(baseName)){
                list.add(dataStandardDO);
            } else {
                List tempList = new ArrayList();
                list.add(dataStandardDO);
                tempList.addAll(list);
                list.clear();
                dataMap.put(baseName, tempList);
            }
        Set<String> baseNames = DataTypeEnum.getNames();
        for(String baseNmae:baseNames){
            List<DataStandardDO>  resultList = dataStandardService.getList(baseNmae);
            dataMap.put(baseNmae, resultList);
        }
    }
    /**
     * 数据标准转换,i健康数据-->物联网数据标准
     * i健康模板数据

+ 2 - 2
svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataStandardService.java

@ -15,9 +15,9 @@ public class DataStandardService extends BaseJpaService<DataStandardDO,DataStand
    @Autowired
    private DataStandardDao dataStandardDao;
    List<DataStandardDO> getList(){
    List<DataStandardDO> getList(String baseName){
        List<DataStandardDO> list = new ArrayList<>();
        list = dataStandardDao.getList();
        list = dataStandardDao.getList(baseName);
        return list;
    }
}