ViewService.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.yihu.quota.service.view;
  2. import com.yihu.ehr.elasticsearch.ElasticSearchPool;
  3. import com.yihu.ehr.query.BaseJpaService;
  4. import com.yihu.quota.dao.view.ViewDao;
  5. import com.yihu.quota.dao.view.ViewDimensionDao;
  6. import com.yihu.quota.dao.view.ViewQuotaDao;
  7. import com.yihu.quota.dao.view.ViewQuotaFilterDao;
  8. import com.yihu.quota.model.cube.Cube;
  9. import com.yihu.quota.model.view.View;
  10. import com.yihu.quota.model.view.ViewDimension;
  11. import com.yihu.quota.model.view.ViewQuota;
  12. import com.yihu.quota.model.view.ViewQuotaFilter;
  13. import org.apache.commons.lang3.StringUtils;
  14. import org.apache.log4j.Logger;
  15. import org.elasticsearch.action.search.SearchRequestBuilder;
  16. import org.elasticsearch.client.transport.TransportClient;
  17. import org.elasticsearch.index.query.QueryBuilder;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import java.util.List;
  21. /**
  22. * @author janseny
  23. * @date 2018年9月26日
  24. */
  25. @Service
  26. public class ViewService extends BaseJpaService<View, ViewDao> {
  27. private static final Logger logger = Logger.getLogger(ViewService.class);
  28. @Autowired
  29. private ViewDao viewDao;
  30. @Autowired
  31. private ViewDimensionDao viewDimensionDao;
  32. @Autowired
  33. private ViewQuotaDao viewQuotaDao;
  34. @Autowired
  35. private ViewQuotaFilterDao viewQuotaFilterDao;
  36. @Autowired
  37. private ElasticSearchPool elasticSearchPool;
  38. public View findOne(Integer id) {
  39. return viewDao.findOne(id);
  40. }
  41. /**
  42. * 获取视图完整规则
  43. *
  44. * @param viewCode 视图编码
  45. * @return 视图规则
  46. */
  47. public View getViewRule(String viewCode) {
  48. View view = viewDao.findByCode(viewCode);
  49. view.setViewFilterList(viewQuotaFilterDao.findByRelationId(view.getId()));
  50. view.setViewDimensionList(viewDimensionDao.findByViewId(view.getId()));
  51. view.setViewQuotaList(viewQuotaDao.findByViewId(view.getId()));
  52. for (ViewQuota viewQuota : view.getViewQuotaList()) {
  53. List<ViewQuotaFilter> quotaFilterList = viewQuotaFilterDao.findByRelationId(viewQuota.getId());
  54. viewQuota.setQuotaFilterList(quotaFilterList);
  55. }
  56. return view;
  57. }
  58. /**
  59. * 获取视图统计结果
  60. *
  61. * @param viewCode
  62. * @param filters
  63. */
  64. public void statViewResult(String viewCode, String filters) {
  65. // 获取视图规则
  66. View view = viewDao.findByCode(viewCode);
  67. String[] esIndices = view.getEsIndex().split(",");
  68. String[] esTypes = view.getEsType().split(",");
  69. // 根据视图规则组装 ES 聚合语句
  70. TransportClient transportClient = elasticSearchPool.getClient();
  71. SearchRequestBuilder searchRequest = transportClient.prepareSearch(esIndices).setTypes(esTypes).setSize(0);
  72. QueryBuilder queryBuilder = null;
  73. if (StringUtils.isNotEmpty(filters) || view.getViewFilterList().size() != 0) {
  74. }
  75. transportClient.close();
  76. }
  77. }