|
@ -4,17 +4,35 @@ import com.yihu.ehr.constants.ApiVersion;
|
|
|
import com.yihu.ehr.util.rest.Envelop;
|
|
|
import com.yihu.quota.model.cube.Cube;
|
|
|
import com.yihu.quota.model.view.View;
|
|
|
import com.yihu.quota.model.view.ViewDimension;
|
|
|
import com.yihu.quota.model.view.ViewQuota;
|
|
|
import com.yihu.quota.service.cube.CubeService;
|
|
|
import com.yihu.quota.service.view.ViewDimensionService;
|
|
|
import com.yihu.quota.service.view.ViewQuotaService;
|
|
|
import com.yihu.quota.service.view.ViewService;
|
|
|
import com.yihu.quota.util.AggregationBuildHandler;
|
|
|
import com.yihu.quota.util.ElasticSearchHandler;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import org.elasticsearch.client.transport.TransportClient;
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
|
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
|
|
|
import org.elasticsearch.search.aggregations.AggregationBuilder;
|
|
|
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
|
|
import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
|
|
|
import org.elasticsearch.search.aggregations.metrics.MetricsAggregationBuilder;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @author janseny
|
|
|
* @date 2018年9月26日
|
|
@ -28,6 +46,14 @@ public class ViewController extends BaseController {
|
|
|
private ViewService viewService;
|
|
|
@Autowired
|
|
|
private CubeService cubeService;
|
|
|
@Autowired
|
|
|
private ViewDimensionService viewDimensionService;
|
|
|
@Autowired
|
|
|
private ViewQuotaService viewQuotaService;
|
|
|
@Autowired
|
|
|
private ElasticSearchHandler elasticSearchHandler;
|
|
|
@Autowired
|
|
|
private AggregationBuildHandler aggregationBuildHandler;
|
|
|
|
|
|
@ApiOperation(value = "添加视图")
|
|
|
@RequestMapping(value = "/addView", method = RequestMethod.GET)
|
|
@ -74,4 +100,71 @@ public class ViewController extends BaseController {
|
|
|
}
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "根据维度配置查询视图数据")
|
|
|
@RequestMapping(value = "/getEsDataGrammar", method = RequestMethod.DELETE)
|
|
|
public Envelop getEsDataGrammar(
|
|
|
@ApiParam(name = "id", value = "视图ID", required = true)
|
|
|
@RequestParam(value = "id", required = true) int id){
|
|
|
Envelop envelop = new Envelop();
|
|
|
envelop.setSuccessFlg(true);
|
|
|
try {
|
|
|
View view = viewService.findOne(id);
|
|
|
List<ViewDimension> viewDimensions = viewDimensionService.findByField("viewId",id);
|
|
|
List<ViewQuota> viewQuotas = viewQuotaService.findByField("viewId",id);
|
|
|
|
|
|
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
envelop.setSuccessFlg(false);
|
|
|
}
|
|
|
return envelop;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 例5:展示2017年区县、性别的就诊人次数,以及合计。
|
|
|
* @return
|
|
|
*/
|
|
|
@ApiOperation(value = "Test 例五 二维表")
|
|
|
@RequestMapping(value = "/test5", method = RequestMethod.DELETE)
|
|
|
public Envelop test5(){
|
|
|
Envelop envelop = new Envelop();
|
|
|
envelop.setSuccessFlg(true);
|
|
|
try {
|
|
|
BoolQueryBuilder boolQueryBuilder = null;
|
|
|
// RangeQueryBuilder rangeQueryStartTime = QueryBuilders.rangeQuery("quotaDate").gte("2017-01-01");
|
|
|
// boolQueryBuilder.must(rangeQueryStartTime);
|
|
|
// RangeQueryBuilder rangeQueryEndTime = QueryBuilders.rangeQuery("quotaDate").lte("2017-12-31");
|
|
|
// boolQueryBuilder.must(rangeQueryEndTime);
|
|
|
|
|
|
TransportClient client = elasticSearchHandler.getTransportClient();
|
|
|
// ValueCountBuilder firstAgg = AggregationBuilders.count("count_result").field("rowkey");
|
|
|
// TermsBuilder secondAgg = AggregationBuilders.terms("合计_性别_terms").field("sex")
|
|
|
// .subAggregation(AggregationBuilders.count("count_result").field("rowkey"));
|
|
|
// TermsBuilder threeAgg = AggregationBuilders.terms("区县_terms").field("area.town")
|
|
|
// .subAggregation(AggregationBuilders.count("合计_count_result").field("rowkey"))
|
|
|
// .subAggregation(AggregationBuilders.terms("性别_terms").field("sex")
|
|
|
// .subAggregation(AggregationBuilders.count("count_result").field("rowkey"))
|
|
|
// );
|
|
|
AbstractAggregationBuilder firstAgg = aggregationBuildHandler.addAggregationBuilder("count","count_result","rowkey");
|
|
|
AbstractAggregationBuilder secondAgg = aggregationBuildHandler.addTermAggregationBuilder("合计_性别_terms","sex","count", "count_result", "rowkey");
|
|
|
AbstractAggregationBuilder threeAgg = aggregationBuildHandler.addTermsBuilder("区县_terms", "area.town")
|
|
|
.subAggregation(aggregationBuildHandler.addAggregationBuilder("count", "合计_count_result", "rowkey"))
|
|
|
.subAggregation(aggregationBuildHandler.addTermsBuilder("性别_terms","sex")
|
|
|
.subAggregation(aggregationBuildHandler.addAggregationBuilder("count", "count_result", "rowkey"))
|
|
|
);
|
|
|
|
|
|
LinkedList<AbstractAggregationBuilder> aggBuildList = new LinkedList<>();
|
|
|
aggBuildList.add(firstAgg);
|
|
|
aggBuildList.add(secondAgg);
|
|
|
aggBuildList.add(threeAgg);
|
|
|
List<Map<String, Object>> resultList = aggregationBuildHandler.structAggregationQuery(client,"patient_event","info", boolQueryBuilder, aggBuildList);
|
|
|
envelop.setDetailModelList(resultList);
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
envelop.setSuccessFlg(false);
|
|
|
}
|
|
|
return envelop;
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|