Commit 70a58503 authored by 麻笑宇's avatar 麻笑宇

设备使用场所分布提交,es数据当前有问题,cityCode值暂时写死

parent 82d6266c
......@@ -27,5 +27,5 @@ public interface IScreenService {
Map<String,Object> supervisorCount(ScreenDto screenDto);
Map<String,Object> equipmentInformCount(ScreenDto screenDto);
List<Map<String,Object>> equipmentInformCount(ScreenDto screenDto);
}
......@@ -60,7 +60,7 @@ public class ScreenController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/equipmentInformCount")
@ApiOperation(httpMethod = "POST", value = "大屏设备使用场所统计", notes = "大屏设备使用场所统计")
public ResponseModel<Map<String,Object>> equipmentInformCount(@RequestBody ScreenDto screenDto){
public ResponseModel<List<Map<String,Object>>> equipmentInformCount(@RequestBody ScreenDto screenDto){
return ResponseHelper.buildResponse(screenService.equipmentInformCount(screenDto));
}
}
......@@ -8,22 +8,20 @@ import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.FuzzyQueryBuilder;
import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.Aggregations;
import org.elasticsearch.search.aggregations.metrics.ParsedCardinality;
import org.elasticsearch.search.aggregations.metrics.Sum;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class ScreenImpl implements IScreenService {
......@@ -448,27 +446,92 @@ public class ScreenImpl implements IScreenService {
}
@Override
public Map<String, Object> equipmentInformCount(ScreenDto screenDto) {
public List<Map<String, Object>> equipmentInformCount(ScreenDto screenDto) {
SearchRequest searchRequest = new SearchRequest("idx_biz_view_jg_all");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//设置模糊搜索
FuzzyQueryBuilder queryBuilder = QueryBuilders.fuzzyQuery("USE_REGION_CODE;", screenDto.getCityCode());
searchSourceBuilder.query(queryBuilder);
searchSourceBuilder.query(QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("USE_PLACE_CODE", "##610324"))
.must(QueryBuilders.termsQuery("IS_INTO_MANAGEMENT", true)));
searchSourceBuilder.aggregation(
AggregationBuilders.filter("usePlaceCodeExists",QueryBuilders.existsQuery("USE_PLACE_CODE"))
.subAggregation(AggregationBuilders.terms("USE_PLACE_CODE").field("USE_PLACE_CODE.keyword").size(10))
AggregationBuilders.terms("USE_SITE_CODE").field("USE_SITE_CODE")
);
searchRequest.source(searchSourceBuilder);
Map<String,Integer> dataMap = new HashMap<>();
List<Map<String,Object>> returnList = new ArrayList<>();
try {
// 执行搜索请求
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
// 获取所有聚合结果
Aggregations aggregations = searchResponse.getAggregations();
Terms termsResult = aggregations.get("USE_SITE_CODE");
for (Terms.Bucket bucket : termsResult.getBuckets()) {
String category = bucket.getKeyAsString(); // 或者使用 bucket.getKey() 对于非字符串类型
long docCount = bucket.getDocCount();
dataMap.put(category, (int) docCount);
}
/**
* 6008 住宅小区
* 6009 商业单位
* 6010 学校
* 6012 政府机关
* 6011 医疗机构
* 6013 公共场所
* 6528 工业场所
* 6529 工业场所(户外)
* 6530 养老机构
* 6531 旅游景区
* 6532 游乐场所
*/
Map<String,Object> zhuzhaiMap = new HashMap<>();
zhuzhaiMap.put("name","住宅小区");
zhuzhaiMap.put("value",dataMap.getOrDefault("6008",0));
returnList.add(zhuzhaiMap);
Map<String,Object> shangyeMap = new HashMap<>();
shangyeMap.put("name","商业单位");
shangyeMap.put("value",dataMap.getOrDefault("6009",0));
returnList.add(shangyeMap);
Map<String,Object> xuexiaoMap = new HashMap<>();
xuexiaoMap.put("name","学校");
xuexiaoMap.put("value",dataMap.getOrDefault("6010",0));
returnList.add(xuexiaoMap);
Map<String,Object> zhengfuMap = new HashMap<>();
zhengfuMap.put("name","政府机关");
zhengfuMap.put("value",dataMap.getOrDefault("6012",0));
returnList.add(zhengfuMap);
Map<String,Object> yiliaoMap = new HashMap<>();
yiliaoMap.put("name","医疗机构");
yiliaoMap.put("value",dataMap.getOrDefault("6011",0));
returnList.add(yiliaoMap);
Map<String,Object> gonggongMap = new HashMap<>();
gonggongMap.put("name","公共场所");
gonggongMap.put("value",dataMap.getOrDefault("6013",0));
returnList.add(gonggongMap);
Map<String,Object> gongyeMap = new HashMap<>();
gongyeMap.put("name","工业场所");
gongyeMap.put("value",dataMap.getOrDefault("6528",0));
returnList.add(gongyeMap);
Map<String,Object> gongyeMap1 = new HashMap<>();
gongyeMap1.put("name","工业场所(户外)");
gongyeMap1.put("value",dataMap.getOrDefault("6529",0));
returnList.add(gongyeMap1);
Map<String,Object> yanglaoMap = new HashMap<>();
yanglaoMap.put("name","养老机构");
yanglaoMap.put("value",dataMap.getOrDefault("6530",0));
returnList.add(yanglaoMap);
Map<String,Object> lvyouMap = new HashMap<>();
lvyouMap.put("name","旅游景区");
lvyouMap.put("value",dataMap.getOrDefault("6531",0));
returnList.add(lvyouMap);
Map<String,Object> yuleMap = new HashMap<>();
yuleMap.put("name","游乐场所");
yuleMap.put("value",dataMap.getOrDefault("6532",0));
returnList.add(yuleMap);
} catch (IOException e) {
e.printStackTrace();
}
return Collections.emptyMap();
return returnList;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment