Browse Source

Merge branch 'dev' of LiTaohong/jw2.0 into dev

yeshijie 7 years ago
parent
commit
2a5c8fc711

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

@ -134,7 +134,7 @@ public class ElastricSearchHelper {
    /**
     * 删除
     */
    private void deleteData(String index, String type, List<SaveModel> saveModels) {
    public void deleteData(String index, String type, List<SaveModel> saveModels) {
        JestClient jestClient = null;
        try {
            jestClient = elasticFactory.getJestClient();
@ -161,9 +161,9 @@ public class ElastricSearchHelper {
    /**
     * 查询
     */
    public String search(String index, String type, String queryStr) {
    public SearchResult 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;
    }
    public static void main(String args[]){

+ 1 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/iot/DataRequestMapping.java

@ -23,6 +23,7 @@ public class DataRequestMapping {
        public static final String api_data_input = "input";//数据上传
        public static final String api_user_bind = "userBind";//设备注册绑定
        public static final String api_update_record = "updateRecord";//更新体征状态标识
        public static final String api_delete_record = "deleteRecord";//更新体征状态标识
        public static final String message_success = "upload success";
        public static final String message_fail = "upload fail";

+ 6 - 1
common/common-util/src/main/java/com/yihu/jw/util/spring/SpringContext.java

@ -1,10 +1,13 @@
package com.yihu.jw.util.spring;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
 * Spring上下文管理器。
 *
@ -13,7 +16,9 @@ import org.springframework.stereotype.Component;
 * @created 12-05-2015 17:47:55
 */
@Component
public class SpringContext implements ApplicationContextAware {
public class SpringContextHolder implements ApplicationContextAware {
    @Autowired
    private static ApplicationContext springContext = null;
    /**

+ 5 - 0
svr/svr-iot/pom.xml

@ -126,6 +126,11 @@
            <artifactId>common-data-es</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-util</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>svr-iot</finalName>

+ 11 - 1
svr/svr-iot/src/main/java/com/yihu/iot/datainput/controller/DataInputController.java

@ -55,7 +55,17 @@ public class DataInputController {
    @ApiOperation(value = "用户体征状态修改", notes = "用户体征状态修改,0-标准,1-异常")
    public Envelop updateRecord(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataInputService.bindUser(jsonData));
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataInputService.updateRecordStatus(jsonData));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @PostMapping(value = DataRequestMapping.DataInput.api_delete_record, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "删除体征数据", notes = "删除标志,支持伪删除")
    public Envelop deleteRecord(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataInputService.updateRecordStatus(jsonData));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }

+ 29 - 27
svr/svr-iot/src/main/java/com/yihu/iot/datainput/controller/DataSearchController.java

@ -12,10 +12,7 @@ import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(DataRequestMapping.api_iot_common)
@ -27,10 +24,10 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_data_search_one, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询单条数据", notes = "根据id查询单条数据")
    public Envelop getOne(@ApiParam(name = "id", value = "", defaultValue = "") @RequestBody String id){
    public Envelop getOne(
            @ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            String jsonData = "{\"id\":" + id + "}";
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataSearchService.getData(jsonData));
            return Envelop.getSuccess(DataRequestMapping.DataSearch.message_success,dataSearchService.getData(jsonData,1,1));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -38,9 +35,11 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_list, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询数据", notes = "根据条件查询数据")
    public Envelop getList(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public Envelop getList(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData,
                           @ApiParam(name = "page", value = "", defaultValue = "") @RequestParam int page,
                           @ApiParam(name = "size", value = "", defaultValue = "") @RequestParam int size){
        try{
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataSearchService.getData(jsonData));
            return Envelop.getSuccess(DataRequestMapping.DataSearch.message_success,dataSearchService.getData(jsonData,page,size));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -48,9 +47,11 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_list_page, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询数据,分页", notes = "根据条件查询数据,分页")
    public Envelop getListPage(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public Envelop getListPage(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData,
                               @ApiParam(name = "page", value = "", defaultValue = "") @RequestParam int page,
                               @ApiParam(name = "size", value = "", defaultValue = "") @RequestParam int size){
        try{
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataSearchService.getData(jsonData));
            return Envelop.getSuccess(DataRequestMapping.DataSearch.message_success,dataSearchService.getData(jsonData,page,size));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -58,9 +59,11 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_recent5, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "获取最近5条数据", notes = "根据居民的体征类型,测量时间获取")
    public Envelop getRecent5(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public Envelop getRecent5(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData,
                              @ApiParam(name = "page", value = "", defaultValue = "") @RequestParam int page,
                              @ApiParam(name = "size", value = "", defaultValue = "") @RequestParam int size){
        try{
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataSearchService.getData(jsonData));
            return Envelop.getSuccess(DataRequestMapping.DataSearch.message_success,dataSearchService.getData(jsonData,page,size));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -68,9 +71,11 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_abnormal_times_a_week, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "获取居民一周内体征数据异常次数", notes = "血糖或血压体征数据")
    public Envelop getAbnormalTimesAWeek(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public Envelop getAbnormalTimesAWeek(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData,
                                         @ApiParam(name = "page", value = "", defaultValue = "") @RequestParam int page,
                                         @ApiParam(name = "size", value = "", defaultValue = "") @RequestParam int size){
        try{
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataSearchService.getData(jsonData));
            return Envelop.getSuccess(DataRequestMapping.DataSearch.message_success,dataSearchService.getData(jsonData,page,size));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -78,11 +83,11 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_recent1, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询体征数据", notes = "根据居民code和删除标识获取最近一次体征数据")
    public Envelop getOneByCodeAndDel(@ApiParam(name = "userCode", value = "", defaultValue = "") @RequestBody String userCode,
                                      @ApiParam(name = "del", value = "", defaultValue = "") @RequestBody String del) {
    public Envelop getOneByCodeAndDel(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData,
                                      @ApiParam(name = "page", value = "", defaultValue = "") @RequestParam int page,
                                      @ApiParam(name = "size", value = "", defaultValue = "") @RequestParam int size) {
        try {
            String jsonData = "{\"userCode\":" + userCode + ",\"del\":" + del + "}";
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success, dataSearchService.getData(jsonData));
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success, dataSearchService.getData(jsonData,page,size));
        } catch (ApiException e) {
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -90,17 +95,14 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_list_code_del, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询体征数据", notes = "根据居民code和删除标识获取所有体征数据,时间倒序")
    public Envelop getListByCodeAndDel(
            @ApiParam(name = "userCode", value = "", defaultValue = "") @RequestBody String userCode,
            @ApiParam(name = "del", value = "", defaultValue = "") @RequestBody String del){
    public Envelop getListByCodeAndDel(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData,
                                       @ApiParam(name = "page", value = "", defaultValue = "") @RequestParam int page,
                                       @ApiParam(name = "size", value = "", defaultValue = "") @RequestParam int size){
        try{
            String jsonData = "{\"userCode\":"+userCode+",\"del\":"+ del +"}";
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(QueryBuilders.matchQuery("user", "kimchy"));
//            searchSourceBuilder.query(JSONObject.parseObject(jsonData).);
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataSearchService.getData(jsonData));
            return Envelop.getSuccess(DataRequestMapping.DataInput.message_success,dataSearchService.getData(jsonData,page,size));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
}

+ 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("select baseName,itemCode,itemName,itemType,required,itemValueMin,itemValueMax 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;
    }
}

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

@ -196,6 +196,31 @@ 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();
    }
    /**
     * 修改用户体征状态标志
     * @param json
     * @return
     */
    public String updateRecordStatus(String json){
//        elastricSearchHelper.update();
        return "";
    }
    /**
     * 修改用户体征状态标志
     * @param json
     * @return
     */
    public String deleteRecord(String json){
//        elastricSearchHelper.deleteData();
        return "";
    }
}

+ 214 - 6
svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataSearchService.java

@ -1,13 +1,33 @@
package com.yihu.iot.datainput.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.JsonArray;
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.SearchResult;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.CollectionUtils;
import org.elasticsearch.index.query.*;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class DataSearchService {
@ -19,17 +39,205 @@ public class DataSearchService {
    @Autowired
    private HBaseHelper hBaseHelper;
    /**
     * 获取数据
     * 拼接es搜索json string
     * @param json
     * @return
     */
    public String getData(String json){
        String result = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,json);
        if(null == result){
            return "no data";
    public static String getQueryString(String json){
        JSONObject jsonObject = (JSONObject)JSONObject.parse(json);
        //第一层query
        JSONObject query = new JSONObject();
        //bool层
        JSONObject boolQuery = new JSONObject();
        // and 还是 or,es中key为and--->must,or--->should
        JSONObject mustOrShouldQuery = new JSONObject();
        //匹配项,字段-值
        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"));
                continue;
            }
            //分页用,size表示获取几条数据
            if(StringUtils.equalsIgnoreCase("size",key)){
                query.put("size",jsonObject.getInteger("size"));
                continue;
            }
            //排序
            if(StringUtils.equalsIgnoreCase("sort",key)){
                JSONObject sortJsonObj = (JSONObject)jsonObject.get("sort");
                for(String sortKey:sortJsonObj.keySet()){
                    if(!StringUtils.equalsIgnoreCase("asc",sortJsonObj.getString(sortKey)) && !StringUtils.equalsIgnoreCase("desc",sortJsonObj.getString(sortKey) )){
                        JSONObject error = new JSONObject();
                        error.put("error","sort contains bad value !");
                        return error.toJSONString();
                    }
                }
                query.put("sort",sortJsonObj);
                continue;
            }
            JSONObject matchQuery = new JSONObject();
            JSONObject subQuery = new JSONObject();
            String baseName = DataTypeEnum.body_sign_params.name().toString();
            if(null != DataStandardConvertService.dataMap.get(baseName) && DataStandardConvertService.dataMap.get(baseName).contains(key) || StringUtils.equalsIgnoreCase("rid",key)){
                subQuery.put("data."+key,jsonObject.get(key)); //data数据里内嵌的字段,真正的数据值内容
            }else{
                subQuery.put(key,jsonObject.get(key));
            }
            matchQuery.put("match",subQuery);
            jsonArray.add(matchQuery);
        }
        return result;
        boolQuery.put("bool",mustOrShouldQuery);
        query.put("query",boolQuery);
        return query.toJSONString();
    }
    public String getData(String jsonData,int page, int size){
//        String query = getQueryString(jsonData);
        JSONObject resultJsonObj = new JSONObject();
        JSONArray  resultArray = new JSONArray();
        List list = new ArrayList();
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            list = objectMapper.readValue(jsonData,(List.class));
        } catch (IOException e) {
            e.printStackTrace();
        }
        SearchSourceBuilder query = getQueryBuilder(list,page,size);
        SearchResult esResult = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
        if(esResult.getTotal() == 0){
            return "";
        }
        List<String> rowkeys = new ArrayList<>();
        for(Object object:esResult.getSourceAsStringList()){
            JSONObject jsonObject = (JSONObject)JSONObject.parse(String.valueOf(object));
            JSONArray datas = (JSONArray)jsonObject.get("data");
            for(Object data:datas){
                JSONObject dataJson = (JSONObject)data;
                if(null != dataJson.getString("rid")){
                    rowkeys.add(dataJson.getString("rid"));
                }
            }
        }
        if(CollectionUtils.isEmpty(rowkeys)){
            resultArray.addAll(esResult.getSourceAsStringList());
            resultJsonObj.put("data",resultArray);
            resultJsonObj.put("count",esResult.getTotal());
            return resultJsonObj.toJSONString();
        }
        List<Map<String, Object>> resultList = new ArrayList<>();
        try {
            //拿到rowkey后,去hbase读取数据内容
            Result[] hbaseData = hBaseHelper.getResultList(ConstantUtils.tableName,rowkeys);
            for(Result res:hbaseData){
                List<Cell> ceList = res.listCells();
                if(null == ceList){
                    continue;
                }
                Map<String, Object> map = new HashMap<String, Object>();
                String rowkey = Bytes.toString(res.getRow());
                //rowkey是根据一些头部数据加密而来,解密即可还原
                String tag = RowKeyUtils.getMessageFromRowKey(rowkey);
                String[] tags = tag.split(",");
                map.put("access_token", tags[0]);
                map.put("sn", tags[1]);
                map.put("ext_code", 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.getSourceAsString();
        }
        resultArray.addAll(resultList);
        resultJsonObj.put("data",resultArray);
        resultJsonObj.put("count",esResult.getTotal());//count放最后最先读出来
        return resultJsonObj.toJSONString();
    }
    private SearchSourceBuilder getQueryBuilder(List<Map<String, Object>> filter,int page, int size) {
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        for(Map<String, Object> param : filter) {
            String andOr = String.valueOf(param.get("andOr"));
            String condition = String.valueOf(param.get("condition"));
            String field = String.valueOf(param.get("field"));
            Object value = param.get("value");
            String baseName = DataTypeEnum.body_sign_params.name().toString();
            if(null != DataStandardConvertService.dataMap.get(baseName) && DataStandardConvertService.dataMap.get(baseName).contains(field) || StringUtils.equalsIgnoreCase("id",field)){
                field = "data." + field;
            }
            if(condition.equals("=")) {
                MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchPhraseQuery(field, value);
                if("and".equals(andOr)) {
                    boolQueryBuilder.must(matchQueryBuilder);
                }else if("or".equals(andOr)) {
                    boolQueryBuilder.should(matchQueryBuilder);
                }
            }else if (condition.equals("?")) {
                QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders.queryStringQuery(field + ":" + value);
                if("and".equals(andOr)) {
                    boolQueryBuilder.must(queryStringQueryBuilder);
                }else if("or".equals(andOr)) {
                    boolQueryBuilder.should(queryStringQueryBuilder);
                }
            }else {
                RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(field);;
                if(field.endsWith("Date")) {
                    rangeQueryBuilder.format("yyyy-MM-dd HH:mm:ss");
                }
                if(condition.equals(">")) {
                    rangeQueryBuilder.gt(value);
                }else if(condition.equals(">=")) {
                    rangeQueryBuilder.gte(value);
                }else if(condition.equals("<=")) {
                    rangeQueryBuilder.lte(value);
                }else if(condition.equals("<")) {
                    rangeQueryBuilder.lt(value);
                }
                if("and".equals(andOr)) {
                    boolQueryBuilder.must(rangeQueryBuilder);
                }else if("or".equals(andOr)) {
                    boolQueryBuilder.should(rangeQueryBuilder);
                }
            }
        }
        searchSourceBuilder.query(boolQueryBuilder);
        searchSourceBuilder.from((page -1)*size);
        searchSourceBuilder.size(size);
        return searchSourceBuilder;
    }
    /**
     * 修改
     * @param json
     * @return
     */
    public String updateFiled(String json){
        return "success";
    }
    public static void main(String args[]) {
        }
}

+ 11 - 20
svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataStandardConvertService.java

@ -4,14 +4,17 @@ 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;
import org.apache.http.client.utils.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.*;
/**
@ -21,39 +24,27 @@ 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;
    @Autowired
    private DataStandardService dataStandardService;
    @Autowired
    private DataProcessLogService dataProcessLogService;
    /**
     * 从数据库读取标准,并放到map,key为协议大类名称,目前只有体征数据协议
     */
    @PostConstruct
    public void init(){
        List<DataStandardDO>  resultList = dataStandardService.getList();
        if(null == resultList && resultList.size() < 1){
            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;
    }
}