QueryController.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.yihu.wlyy.statistics.controller;
  2. import com.alibaba.druid.sql.ast.SQLExpr;
  3. import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
  4. import com.alibaba.druid.sql.parser.ParserException;
  5. import com.alibaba.druid.sql.parser.SQLExprParser;
  6. import com.alibaba.druid.sql.parser.Token;
  7. import com.google.gson.JsonObject;
  8. import com.yihu.wlyy.statistics.etl.save.es.ElasticFactory;
  9. import com.yihu.wlyy.statistics.model.job.ElasticsearchService;
  10. import com.yihu.wlyy.statistics.util.DateUtil;
  11. import com.yihu.wlyy.statistics.util.ElasticsearchUtil;
  12. import com.yihu.wlyy.statistics.vo.SaveModel;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import io.swagger.annotations.ApiParam;
  16. import org.elasticsearch.action.search.SearchResponse;
  17. import org.json.JSONArray;
  18. import org.json.JSONObject;
  19. import org.nlpcn.es4sql.jdbc.ObjectResult;
  20. import org.nlpcn.es4sql.jdbc.ObjectResultsExtractor;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.util.StringUtils;
  23. import org.springframework.web.bind.annotation.RequestMapping;
  24. import org.springframework.web.bind.annotation.RequestMethod;
  25. import org.springframework.web.bind.annotation.RequestParam;
  26. import org.springframework.web.bind.annotation.RestController;
  27. import org.nlpcn.es4sql.domain.Select;
  28. import org.nlpcn.es4sql.parse.ElasticSqlExprParser;
  29. import org.nlpcn.es4sql.parse.SqlParser;
  30. import org.nlpcn.es4sql.query.AggregationQueryAction;
  31. import org.nlpcn.es4sql.query.DefaultQueryAction;
  32. import org.nlpcn.es4sql.query.SqlElasticSearchRequestBuilder;
  33. import java.util.Date;
  34. import java.util.HashMap;
  35. import java.util.List;
  36. import java.util.Map;
  37. /**
  38. * Created by chenweida on 2017/7/1.
  39. */
  40. @RestController
  41. @RequestMapping("/quotaQuery")
  42. @Api(description = "指标查询")
  43. public class QueryController {
  44. @Autowired
  45. private ElasticsearchUtil elasticsearchUtil;
  46. @ApiOperation(value = "查询某几个指标某个层级的列表")
  47. @RequestMapping(value = "/getQuotasList", method = RequestMethod.GET)
  48. public Map<String,List<SaveModel>> getQuotasList(
  49. @ApiParam(name = "ids", value = "指标id,多个逗号分割", required = true) @RequestParam(value = "ids", required = true) String ids,
  50. @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code,
  51. @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel,
  52. @ApiParam(name = "childrenArealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "childrenArealevel", required = true) String childrenArealevel,
  53. @ApiParam(name = "timeLevel", value = " 1增量的指标 2到达量的指标", required = true) @RequestParam(value = "timeLevel", required = true) String timeLevel,
  54. @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) {
  55. //如果日期是空初始化是今天
  56. if (StringUtils.isEmpty(date)) {
  57. date = DateUtil.dateToStrShort(new Date());
  58. }
  59. Map<String,List<SaveModel>> jo = new HashMap<>();
  60. for (String id : ids.split(",")) {
  61. jo.put("index_" + id, elasticsearchUtil.findOneDateQuotaByChllevel(id, code, date, timeLevel, arealevel, childrenArealevel));
  62. }
  63. return jo;
  64. }
  65. @ApiOperation(value = "查询某个1级维度指标")
  66. @RequestMapping(value = "/getQuotaLevel1", method = RequestMethod.GET)
  67. public List<SaveModel> getQuotaLevel1(
  68. @ApiParam(name = "id", value = "指标id", required = true) @RequestParam(value = "id", required = true) String id,
  69. @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code,
  70. @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel,
  71. @ApiParam(name = "timeLevel", value = " 1增量的指标 2到达量的指标", required = true) @RequestParam(value = "timeLevel", required = true) String timeLevel,
  72. @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) {
  73. //如果日期是空初始化是今天
  74. if (StringUtils.isEmpty(date)) {
  75. date = DateUtil.dateToStrShort(new Date());
  76. }
  77. List<SaveModel> saveModels = elasticsearchUtil.findOneDateQuotaLevel1(id, code, date, timeLevel, arealevel);
  78. return saveModels;
  79. }
  80. @ApiOperation(value = "查询某个2级维度指标")
  81. @RequestMapping(value = "/getQuotaLevel2", method = RequestMethod.GET)
  82. public List<SaveModel> getQuotaLevel2(
  83. @ApiParam(name = "id", value = "指标id", required = true) @RequestParam(value = "id", required = true) String id,
  84. @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code,
  85. @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel,
  86. @ApiParam(name = "timeLevel", value = " 1增量的指标 2到达量的指标", required = true) @RequestParam(value = "timeLevel", required = true) String timeLevel,
  87. @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) {
  88. //如果日期是空初始化是今天
  89. if (StringUtils.isEmpty(date)) {
  90. date = DateUtil.dateToStrShort(new Date());
  91. }
  92. List<SaveModel> saveModels = elasticsearchUtil.findOneDateQuotaLevel2(id, code, date, timeLevel, arealevel);
  93. return saveModels;
  94. }
  95. @ApiOperation(value = "查询某个指标某个层级的折线图")
  96. @RequestMapping(value = "/getQuotasLine", method = RequestMethod.GET)
  97. public List<SaveModel> getQuotasLine(
  98. @ApiParam(name = "id", value = "指标id", required = true) @RequestParam(value = "id", required = true) String id,
  99. @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code,
  100. @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel,
  101. @ApiParam(name = "timeLevel", value = " 1增量的指标 2到达量的指标", required = true) @RequestParam(value = "timeLevel", required = true) String timeLevel,
  102. @ApiParam(name = "startDate", value = "时间(yyyy-MM-dd)", required = false) @RequestParam(value = "startDate", required = true) String startDate,
  103. @ApiParam(name = "endDate", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "endDate", required = false) String endDate,
  104. @ApiParam(name = "interval", value = "1日 2周 3月", required = false) @RequestParam(value = "interval", required = false) String interval
  105. ) {
  106. //如果日期是空初始化是今天
  107. if (StringUtils.isEmpty(endDate)) {
  108. endDate = DateUtil.dateToStrShort(new Date());
  109. }
  110. List<SaveModel> saveModels = elasticsearchUtil.findQuotaLines(id, code, startDate, endDate, timeLevel, arealevel, interval);
  111. return saveModels;
  112. }
  113. @ApiOperation(value = "查询某几个指标的到达量")
  114. @RequestMapping(value = "/getQuotas", method = RequestMethod.GET)
  115. public Map<String,List<SaveModel>> getQuotas(
  116. @ApiParam(name = "ids", value = "指标id,多个逗号分割", required = true) @RequestParam(value = "ids", required = true) String ids,
  117. @ApiParam(name = "code", value = "指标的code", required = true) @RequestParam(value = "code", required = true) String code,
  118. @ApiParam(name = "arealevel", value = "指标的level(1 省 2 市 3 区县 4 机构 5团队)", required = true) @RequestParam(value = "arealevel", required = true) String arealevel,
  119. @ApiParam(name = "date", value = "时间(yyyy-MM-dd),不传默认查今天", required = false) @RequestParam(value = "date", required = false) String date) {
  120. Map<String,List<SaveModel>> returnMap=new HashMap<>();
  121. for (String id : ids.split(",")) {
  122. returnMap.put("index_" + id, elasticsearchUtil.findOneDateQuota(id, code, date, "2", arealevel));
  123. }
  124. return returnMap;
  125. }
  126. }