package com.yihu.wlyy.statistics.controller; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.expr.SQLQueryExpr; import com.alibaba.druid.sql.parser.ParserException; import com.alibaba.druid.sql.parser.SQLExprParser; import com.alibaba.druid.sql.parser.Token; import com.google.gson.JsonObject; import com.yihu.wlyy.statistics.etl.save.es.ElasticFactory; import com.yihu.wlyy.statistics.model.job.ElasticsearchService; import com.yihu.wlyy.statistics.util.DateUtil; import com.yihu.wlyy.statistics.util.ElasticsearchUtil; import com.yihu.wlyy.statistics.vo.SaveModel; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.elasticsearch.action.search.SearchResponse; import org.json.JSONArray; import org.json.JSONObject; import org.nlpcn.es4sql.jdbc.ObjectResult; import org.nlpcn.es4sql.jdbc.ObjectResultsExtractor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; 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 org.nlpcn.es4sql.domain.Select; import org.nlpcn.es4sql.parse.ElasticSqlExprParser; import org.nlpcn.es4sql.parse.SqlParser; import org.nlpcn.es4sql.query.AggregationQueryAction; import org.nlpcn.es4sql.query.DefaultQueryAction; import org.nlpcn.es4sql.query.SqlElasticSearchRequestBuilder; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by chenweida on 2017/7/1. */ @RestController @RequestMapping("/quotaQuery") @Api(description = "指标查询") public class QueryController { @Autowired private ElasticsearchUtil elasticsearchUtil; @ApiOperation(value = "查询某几个指标某个层级的列表") @RequestMapping(value = "/getQuotasList", method = RequestMethod.GET) public Map> getQuotasList( @ApiParam(name = "ids", value = "指标id,多个逗号分割", required = true) @RequestParam(value = "ids", required = true) String ids, @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code, @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel, @ApiParam(name = "childrenArealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "childrenArealevel", required = true) String childrenArealevel, @ApiParam(name = "timeLevel", value = " 1增量的指标 2到达量的指标", required = true) @RequestParam(value = "timeLevel", required = true) String timeLevel, @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) { //如果日期是空初始化是今天 if (StringUtils.isEmpty(date)) { date = DateUtil.dateToStrShort(new Date()); } Map> jo = new HashMap<>(); for (String id : ids.split(",")) { jo.put("index_" + id, elasticsearchUtil.findOneDateQuotaByChllevel(id, code, date, timeLevel, arealevel, childrenArealevel)); } return jo; } @ApiOperation(value = "查询某个1级维度指标") @RequestMapping(value = "/getQuotaLevel1", method = RequestMethod.GET) public List getQuotaLevel1( @ApiParam(name = "id", value = "指标id", required = true) @RequestParam(value = "id", required = true) String id, @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code, @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel, @ApiParam(name = "timeLevel", value = " 1增量的指标 2到达量的指标", required = true) @RequestParam(value = "timeLevel", required = true) String timeLevel, @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) { //如果日期是空初始化是今天 if (StringUtils.isEmpty(date)) { date = DateUtil.dateToStrShort(new Date()); } List saveModels = elasticsearchUtil.findOneDateQuotaLevel1(id, code, date, timeLevel, arealevel); return saveModels; } @ApiOperation(value = "查询某个2级维度指标") @RequestMapping(value = "/getQuotaLevel2", method = RequestMethod.GET) public List getQuotaLevel2( @ApiParam(name = "id", value = "指标id", required = true) @RequestParam(value = "id", required = true) String id, @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code, @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel, @ApiParam(name = "timeLevel", value = " 1增量的指标 2到达量的指标", required = true) @RequestParam(value = "timeLevel", required = true) String timeLevel, @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) { //如果日期是空初始化是今天 if (StringUtils.isEmpty(date)) { date = DateUtil.dateToStrShort(new Date()); } List saveModels = elasticsearchUtil.findOneDateQuotaLevel2(id, code, date, timeLevel, arealevel); return saveModels; } @ApiOperation(value = "查询某个指标某个层级的折线图") @RequestMapping(value = "/getQuotasLine", method = RequestMethod.GET) public List getQuotasLine( @ApiParam(name = "id", value = "指标id", required = true) @RequestParam(value = "id", required = true) String id, @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code, @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel, @ApiParam(name = "timeLevel", value = " 1增量的指标 2到达量的指标", required = true) @RequestParam(value = "timeLevel", required = true) String timeLevel, @ApiParam(name = "startDate", value = "时间(yyyy-MM-dd)", required = false) @RequestParam(value = "startDate", required = true) String startDate, @ApiParam(name = "endDate", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "endDate", required = false) String endDate, @ApiParam(name = "interval", value = "1日 2周 3月", required = false) @RequestParam(value = "interval", required = false) String interval ) { //如果日期是空初始化是今天 if (StringUtils.isEmpty(endDate)) { endDate = DateUtil.dateToStrShort(new Date()); } List saveModels = elasticsearchUtil.findQuotaLines(id, code, startDate, endDate, timeLevel, arealevel, interval); return saveModels; } @ApiOperation(value = "查询某几个指标的到达量") @RequestMapping(value = "/getQuotas", method = RequestMethod.GET) public Map> getQuotas( @ApiParam(name = "ids", value = "指标id,多个逗号分割", required = true) @RequestParam(value = "ids", required = true) String ids, @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code, @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel, @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) { Map> returnMap=new HashMap<>(); for (String id : ids.split(",")) { returnMap.put("index_" + id, elasticsearchUtil.findOneDateQuota(id, code, date, "2", arealevel)); } return returnMap; } }