|  | @ -7,6 +7,7 @@ import com.yihu.base.hbase.HBaseHelper;
 | 
												
													
														
															|  | import com.yihu.iot.datainput.enums.DataTypeEnum;
 |  | import com.yihu.iot.datainput.enums.DataTypeEnum;
 | 
												
													
														
															|  | import com.yihu.iot.datainput.util.ConstantUtils;
 |  | import com.yihu.iot.datainput.util.ConstantUtils;
 | 
												
													
														
															|  | import com.yihu.iot.datainput.util.RowKeyUtils;
 |  | import com.yihu.iot.datainput.util.RowKeyUtils;
 | 
												
													
														
															|  | 
 |  | import com.yihu.iot.service.common.ElasticSearchQueryGenerator;
 | 
												
													
														
															|  | import com.yihu.jw.iot.datainput.Data;
 |  | import com.yihu.jw.iot.datainput.Data;
 | 
												
													
														
															|  | import com.yihu.jw.iot.datainput.StepInfoDO;
 |  | import com.yihu.jw.iot.datainput.StepInfoDO;
 | 
												
													
														
															|  | import com.yihu.jw.restmodel.iot.datainput.DataBodySignsVO;
 |  | import com.yihu.jw.restmodel.iot.datainput.DataBodySignsVO;
 | 
												
											
												
													
														
															|  | @ -17,19 +18,11 @@ import org.apache.commons.lang.StringUtils;
 | 
												
													
														
															|  | import org.apache.hadoop.hbase.Cell;
 |  | import org.apache.hadoop.hbase.Cell;
 | 
												
													
														
															|  | import org.apache.hadoop.hbase.client.Result;
 |  | import org.apache.hadoop.hbase.client.Result;
 | 
												
													
														
															|  | import org.apache.hadoop.hbase.util.Bytes;
 |  | 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.elasticsearch.search.builder.SearchSourceBuilder;
 | 
												
													
														
															|  | import org.elasticsearch.search.sort.FieldSortBuilder;
 |  | 
 | 
												
													
														
															|  | import org.elasticsearch.search.sort.SortOrder;
 |  | 
 | 
												
													
														
															|  | import org.slf4j.Logger;
 |  | import org.slf4j.Logger;
 | 
												
													
														
															|  | import org.slf4j.LoggerFactory;
 |  | import org.slf4j.LoggerFactory;
 | 
												
													
														
															|  | import org.springframework.beans.BeanUtils;
 |  | 
 | 
												
													
														
															|  | import org.springframework.beans.factory.annotation.Autowired;
 |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
												
													
														
															|  | import org.springframework.stereotype.Component;
 |  | import org.springframework.stereotype.Component;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | import javax.annotation.PostConstruct;
 |  | 
 | 
												
													
														
															|  | import java.beans.PropertyDescriptor;
 |  | 
 | 
												
													
														
															|  | import java.util.*;
 |  | import java.util.*;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | @Component
 |  | @Component
 | 
												
											
												
													
														
															|  | @ -41,96 +34,16 @@ public class DataSearchService {
 | 
												
													
														
															|  |     private ElastricSearchHelper elastricSearchHelper;
 |  |     private ElastricSearchHelper elastricSearchHelper;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     private HBaseHelper hBaseHelper;
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     private static Map<String,Set<String>> fieldsMap = new HashMap<>();
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     @PostConstruct
 |  | 
 | 
												
													
														
															|  |     public static void init(){
 |  | 
 | 
												
													
														
															|  |         Set<String> fieldsSet = new HashSet<>();
 |  | 
 | 
												
													
														
															|  |         PropertyDescriptor[] properties = BeanUtils.getPropertyDescriptors(Data.class);
 |  | 
 | 
												
													
														
															|  |         for(PropertyDescriptor field:properties){
 |  | 
 | 
												
													
														
															|  |             fieldsSet.add(field.getName());
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         fieldsMap.put("data",fieldsSet);
 |  | 
 | 
												
													
														
															|  |         Set<String> fieldsSet2 = new HashSet<>();
 |  | 
 | 
												
													
														
															|  |         PropertyDescriptor[] properties2 = BeanUtils.getPropertyDescriptors(StepInfoDO.class);
 |  | 
 | 
												
													
														
															|  |         for(PropertyDescriptor field:properties2){
 |  | 
 | 
												
													
														
															|  |             fieldsSet2.add(field.getName());
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         fieldsMap.put("stepInfoList",fieldsSet2);
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 拼接es搜索json string
 |  | 
 | 
												
													
														
															|  |      * @param json
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public static String getQueryString(String json){
 |  | 
 | 
												
													
														
															|  |         JSONObject jsonObject = JSONObject.parseObject(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);
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  | 
 |  |     private ElasticSearchQueryGenerator elasticSearchQueryGenerator;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             //分页用,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);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         boolQuery.put("bool",mustOrShouldQuery);
 |  | 
 | 
												
													
														
															|  |         query.put("query",boolQuery);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         return query.toJSONString();
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private HBaseHelper hBaseHelper;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public String getData(String jsonData){
 |  |     public String getData(String jsonData){
 | 
												
													
														
															|  |         logger.info("load data from elasticsearch start:" + org.apache.http.client.utils.DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
 |  |         logger.info("load data from elasticsearch start:" + org.apache.http.client.utils.DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
 | 
												
													
														
															|  |         JSONObject resultJsonObj = new JSONObject();
 |  |         JSONObject resultJsonObj = new JSONObject();
 | 
												
													
														
															|  |         JSONArray  resultArray = new JSONArray();
 |  |         JSONArray  resultArray = new JSONArray();
 | 
												
													
														
															|  |         SearchSourceBuilder query = getQueryBuilder("data",jsonData);
 |  | 
 | 
												
													
														
															|  | 
 |  |         SearchSourceBuilder query = elasticSearchQueryGenerator.getQueryBuilder("data",jsonData);
 | 
												
													
														
															|  |         SearchResult esResult = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
 |  |         SearchResult esResult = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
 | 
												
													
														
															|  |         if(esResult.getTotal() == 0){
 |  |         if(esResult.getTotal() == 0){
 | 
												
													
														
															|  |             return "";
 |  |             return "";
 | 
												
											
												
													
														
															|  | @ -158,147 +71,6 @@ public class DataSearchService {
 | 
												
													
														
															|  | //        }
 |  | //        }
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 构造es查询参数
 |  | 
 | 
												
													
														
															|  |      * @param jsonData
 |  | 
 | 
												
													
														
															|  |      *
 |  | 
 | 
												
													
														
															|  |              {
 |  | 
 | 
												
													
														
															|  |              "filter":[{"andOr":"and|or","condition":">|=|<|>=|<=|?","field":"<filed>","value":"<value>"},<{...}>],
 |  | 
 | 
												
													
														
															|  |                        - 参数说明:andOr跟数据库的中的AND和OR相似;condition指条件匹配程度,?相当于数据库中的like;filed指检索的字段;value为检索的值
 |  | 
 | 
												
													
														
															|  |             "page":1,  - 参数格式:页码,默认1,int类型 不需要分页,传""
 |  | 
 | 
												
													
														
															|  |             "size":10, - 参数格式:条数,默认10,int类型 不需要分页,传""
 |  | 
 | 
												
													
														
															|  |             "sort":[
 |  | 
 | 
												
													
														
															|  |                      {"key":{"order":"asc|desc"}}, - 参数格式:排序, key要排序的字段,order固定,取值asc或desc,不需要排序,传""
 |  | 
 | 
												
													
														
															|  |                      {"key":{"order":"asc|desc"}}
 |  | 
 | 
												
													
														
															|  |                   ]
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     private static SearchSourceBuilder getQueryBuilder(String nestedPath,String jsonData) {
 |  | 
 | 
												
													
														
															|  |         JSONObject json = JSONObject.parseObject(jsonData);
 |  | 
 | 
												
													
														
															|  |         List<Map<String, Object>> filter = (List)json.getJSONArray("filter");
 |  | 
 | 
												
													
														
															|  |         int page = json.getIntValue("page") == 0 ? 1:json.getIntValue("page"); //从第一页开始
 |  | 
 | 
												
													
														
															|  |         int size = json.getIntValue("size") == 0 ? 1:json.getIntValue("size"); //默认值为1,最少获取一条记录
 |  | 
 | 
												
													
														
															|  |         JSONArray sort = json.getJSONArray("sort");
 |  | 
 | 
												
													
														
															|  |         SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
 |  | 
 | 
												
													
														
															|  |         BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         boolQueryBuilder = getBoolQueryBuilder(nestedPath,jsonData,false);//非嵌套的数据查询不需要nested
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         NestedQueryBuilder nestedQueryBuilder = getNestedBuilder(nestedPath,jsonData);//嵌套的数据查询
 |  | 
 | 
												
													
														
															|  |         QueryFilterBuilder filterBuilder = QueryBuilders.queryFilter(nestedQueryBuilder);
 |  | 
 | 
												
													
														
															|  |         FilteredQueryBuilder filteredQueryBuilder = QueryBuilders.filteredQuery(boolQueryBuilder,filterBuilder);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         searchSourceBuilder.from((page -1)*size);
 |  | 
 | 
												
													
														
															|  |         searchSourceBuilder.size(size);
 |  | 
 | 
												
													
														
															|  |         //排序
 |  | 
 | 
												
													
														
															|  |         if(CollectionUtils.notEmpty(sort)){
 |  | 
 | 
												
													
														
															|  |             for(Object obj:sort){
 |  | 
 | 
												
													
														
															|  |                 JSONObject object = JSONObject.parseObject(obj.toString());
 |  | 
 | 
												
													
														
															|  |                 FieldSortBuilder fieldSortBuilder = null;
 |  | 
 | 
												
													
														
															|  |                 for(String key:object.keySet()){
 |  | 
 | 
												
													
														
															|  |                     if(!CollectionUtils.isEmpty(fieldsMap.get(nestedPath)) && fieldsMap.get(nestedPath).contains(key)){
 |  | 
 | 
												
													
														
															|  |                         fieldSortBuilder = new FieldSortBuilder("data." + key);
 |  | 
 | 
												
													
														
															|  |                     }else{
 |  | 
 | 
												
													
														
															|  |                         fieldSortBuilder = new FieldSortBuilder(key);
 |  | 
 | 
												
													
														
															|  |                     }
 |  | 
 | 
												
													
														
															|  |                     JSONObject sortValue = object.getJSONObject(key);
 |  | 
 | 
												
													
														
															|  |                     if(StringUtils.equalsIgnoreCase(SortOrder.ASC.toString(),sortValue.getString("order"))){
 |  | 
 | 
												
													
														
															|  |                         fieldSortBuilder.order(SortOrder.ASC);
 |  | 
 | 
												
													
														
															|  |                     }else if(StringUtils.equalsIgnoreCase(SortOrder.DESC.toString(),sortValue.getString("order"))){
 |  | 
 | 
												
													
														
															|  |                         fieldSortBuilder.order(SortOrder.DESC);
 |  | 
 | 
												
													
														
															|  |                     }
 |  | 
 | 
												
													
														
															|  |                     fieldSortBuilder.setNestedPath("data");
 |  | 
 | 
												
													
														
															|  |                     searchSourceBuilder.sort(fieldSortBuilder);
 |  | 
 | 
												
													
														
															|  |                 }
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         searchSourceBuilder.query(filteredQueryBuilder);
 |  | 
 | 
												
													
														
															|  |         return searchSourceBuilder;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 嵌套的查询query
 |  | 
 | 
												
													
														
															|  |      * @param nestedPath
 |  | 
 | 
												
													
														
															|  |      * @param queryCondition
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     private static NestedQueryBuilder getNestedBuilder(String nestedPath,String queryCondition){
 |  | 
 | 
												
													
														
															|  |         BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
 |  | 
 | 
												
													
														
															|  |         boolQueryBuilder = getBoolQueryBuilder(nestedPath,queryCondition,true);
 |  | 
 | 
												
													
														
															|  |         NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery(nestedPath,boolQueryBuilder);
 |  | 
 | 
												
													
														
															|  |         return nestedQueryBuilder;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 构造bool查询(里面有匹配,过滤,范围等)
 |  | 
 | 
												
													
														
															|  |      * @param nestedPath
 |  | 
 | 
												
													
														
															|  |      * @param queryCondition
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     private static BoolQueryBuilder getBoolQueryBuilder(String nestedPath,String queryCondition,Boolean isNested){
 |  | 
 | 
												
													
														
															|  |         BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
 |  | 
 | 
												
													
														
															|  |         JSONObject jsonCondition = JSONObject.parseObject(queryCondition);
 |  | 
 | 
												
													
														
															|  |         List<Map<String, Object>> filter = (List)jsonCondition.getJSONArray("filter");
 |  | 
 | 
												
													
														
															|  |         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");
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             if(!isNested){
 |  | 
 | 
												
													
														
															|  |                 if(!CollectionUtils.isEmpty(fieldsMap.get(nestedPath)) && fieldsMap.get(nestedPath).contains(field)){
 |  | 
 | 
												
													
														
															|  |                     continue;
 |  | 
 | 
												
													
														
															|  |                 }
 |  | 
 | 
												
													
														
															|  |             }else{
 |  | 
 | 
												
													
														
															|  |                 if(!CollectionUtils.isEmpty(fieldsMap.get(nestedPath)) && !fieldsMap.get(nestedPath).contains(field)){
 |  | 
 | 
												
													
														
															|  |                     continue;
 |  | 
 | 
												
													
														
															|  |                 }
 |  | 
 | 
												
													
														
															|  |                 field = nestedPath + "." + field;
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |             if("null".equals(condition)){
 |  | 
 | 
												
													
														
															|  |                 MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(field, value);
 |  | 
 | 
												
													
														
															|  |                 if("null".equals(andOr)) {
 |  | 
 | 
												
													
														
															|  |                     boolQueryBuilder.must(matchQueryBuilder);
 |  | 
 | 
												
													
														
															|  |                 }
 |  | 
 | 
												
													
														
															|  |             }else if(condition.equals("=")) {
 |  | 
 | 
												
													
														
															|  |                 MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(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);
 |  | 
 | 
												
													
														
															|  |                 }
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return boolQueryBuilder;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
											
												
													
														
															|  | @ -320,7 +92,7 @@ public class DataSearchService {
 | 
												
													
														
															|  |         filter.add(queryField);
 |  |         filter.add(queryField);
 | 
												
													
														
															|  |         JSONObject query = new JSONObject();
 |  |         JSONObject query = new JSONObject();
 | 
												
													
														
															|  |         query.put("filter",filter);
 |  |         query.put("filter",filter);
 | 
												
													
														
															|  |         SearchSourceBuilder queryString = getQueryBuilder("data",query.toJSONString());
 |  | 
 | 
												
													
														
															|  | 
 |  |         SearchSourceBuilder queryString = elasticSearchQueryGenerator.getQueryBuilder("data",query.toJSONString());
 | 
												
													
														
															|  |         JSONArray datas = new JSONArray();
 |  |         JSONArray datas = new JSONArray();
 | 
												
													
														
															|  |         JSONObject resultObject = new JSONObject();
 |  |         JSONObject resultObject = new JSONObject();
 | 
												
													
														
															|  |         String _id = "";
 |  |         String _id = "";
 | 
												
											
												
													
														
															|  | @ -425,7 +197,7 @@ public class DataSearchService {
 | 
												
													
														
															|  |     public List<DataBodySignsVO> getDataToBean(String jsonData){
 |  |     public List<DataBodySignsVO> getDataToBean(String jsonData){
 | 
												
													
														
															|  |         List<DataBodySignsVO> result = new ArrayList<>();
 |  |         List<DataBodySignsVO> result = new ArrayList<>();
 | 
												
													
														
															|  |         logger.info("load data from elasticsearch start:" + org.apache.http.client.utils.DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
 |  |         logger.info("load data from elasticsearch start:" + org.apache.http.client.utils.DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
 | 
												
													
														
															|  |         SearchSourceBuilder query = getQueryBuilder("data",jsonData);
 |  | 
 | 
												
													
														
															|  | 
 |  |         SearchSourceBuilder query = elasticSearchQueryGenerator.getQueryBuilder("data",jsonData);
 | 
												
													
														
															|  |         SearchResult esResult = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
 |  |         SearchResult esResult = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
 | 
												
													
														
															|  |         if(null== esResult || esResult.getTotal()==null || esResult.getTotal() == 0){
 |  |         if(null== esResult || esResult.getTotal()==null || esResult.getTotal() == 0){
 | 
												
													
														
															|  |             return result;
 |  |             return result;
 | 
												
											
												
													
														
															|  | @ -445,7 +217,7 @@ public class DataSearchService {
 | 
												
													
														
															|  |      */
 |  |      */
 | 
												
													
														
															|  |     public List<WeRunDataVO> getWeRunDataList(String json){
 |  |     public List<WeRunDataVO> getWeRunDataList(String json){
 | 
												
													
														
															|  |         List<WeRunDataVO> result = new ArrayList<>();
 |  |         List<WeRunDataVO> result = new ArrayList<>();
 | 
												
													
														
															|  |         SearchSourceBuilder query = getQueryBuilder("stepInfoList",json);
 |  | 
 | 
												
													
														
															|  | 
 |  |         SearchSourceBuilder query = elasticSearchQueryGenerator.getQueryBuilder("stepInfoList",json);
 | 
												
													
														
															|  |         SearchResult esResult = elastricSearchHelper.search(ConstantUtils.weRunDataIndex,ConstantUtils.weRunDataType,query.toString());
 |  |         SearchResult esResult = elastricSearchHelper.search(ConstantUtils.weRunDataIndex,ConstantUtils.weRunDataType,query.toString());
 | 
												
													
														
															|  |         if(null != esResult && esResult.getTotal() == 0){
 |  |         if(null != esResult && esResult.getTotal() == 0){
 | 
												
													
														
															|  |             return result;
 |  |             return result;
 | 
												
											
												
													
														
															|  | @ -457,26 +229,4 @@ public class DataSearchService {
 | 
												
													
														
															|  |         return result;
 |  |         return result;
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public static void main(String args[]) {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         init();
 |  | 
 | 
												
													
														
															|  |         String str = "{\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\"filter\":[{\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\t\"andOr\":\"and\",\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\t\"condition\":\"=\",\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\t\"field\":\"usercode\",\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\t\"value\":\"thisisjustatest\"\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t},\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t{\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\t\"andOr\":\"and\",\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\t\"condition\":\"=\",\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\t\"field\":\"step\",\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t\t\"value\":100\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t}\n" +
 |  | 
 | 
												
													
														
															|  |                 "\t]\n" +
 |  | 
 | 
												
													
														
															|  |                 "}\n";
 |  | 
 | 
												
													
														
															|  |         getQueryBuilder("stepInfoList",str);
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | }
 |  | }
 |