package com.yihu.quota.service.view; import com.yihu.ehr.elasticsearch.ElasticSearchPool; import com.yihu.ehr.query.BaseJpaService; import com.yihu.quota.dao.view.ViewDao; import com.yihu.quota.dao.view.ViewDimensionDao; import com.yihu.quota.dao.view.ViewQuotaDao; import com.yihu.quota.dao.view.ViewQuotaFilterDao; 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.model.view.ViewQuotaFilter; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.index.query.QueryBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * @author janseny * @date 2018年9月26日 */ @Service public class ViewService extends BaseJpaService { private static final Logger logger = Logger.getLogger(ViewService.class); @Autowired private ViewDao viewDao; @Autowired private ViewDimensionDao viewDimensionDao; @Autowired private ViewQuotaDao viewQuotaDao; @Autowired private ViewQuotaFilterDao viewQuotaFilterDao; @Autowired private ElasticSearchPool elasticSearchPool; public View findOne(Integer id) { return viewDao.findOne(id); } /** * 获取视图完整规则 * * @param viewCode 视图编码 * @return 视图规则 */ public View getViewRule(String viewCode) { View view = viewDao.findByCode(viewCode); view.setViewFilterList(viewQuotaFilterDao.findByRelationId(view.getId())); view.setViewDimensionList(viewDimensionDao.findByViewId(view.getId())); view.setViewQuotaList(viewQuotaDao.findByViewId(view.getId())); for (ViewQuota viewQuota : view.getViewQuotaList()) { List quotaFilterList = viewQuotaFilterDao.findByRelationId(viewQuota.getId()); viewQuota.setQuotaFilterList(quotaFilterList); } return view; } /** * 获取视图统计结果 * * @param viewCode * @param filters */ public void statViewResult(String viewCode, String filters) { // 获取视图规则 View view = viewDao.findByCode(viewCode); String[] esIndices = view.getEsIndex().split(","); String[] esTypes = view.getEsType().split(","); // 根据视图规则组装 ES 聚合语句 TransportClient transportClient = elasticSearchPool.getClient(); SearchRequestBuilder searchRequest = transportClient.prepareSearch(esIndices).setTypes(esTypes).setSize(0); QueryBuilder queryBuilder = null; if (StringUtils.isNotEmpty(filters) || view.getViewFilterList().size() != 0) { } transportClient.close(); } }