Explorar el Código

新增获取视图完整规则方法。

zhangjinjun hace 6 años
padre
commit
c82ddd87c5

+ 12 - 4
src/main/java/com/yihu/quota/controller/ViewController.java

@ -78,7 +78,8 @@ public class ViewController extends BaseController {
            Cube cube = cubeService.findOne(cubeId);
            view.setCode(code);
            view.setName(name);
            view.setDimensionDataset(cube.getIndexName()+"/" + cube.getIndexType());
            view.setEsIndex(cube.getIndexName());
            view.setEsType(cube.getIndexType());
            view.setDisplayType(displayType != null ? displayType : "1");
            view.setIsDrill(isDrill != null ? isDrill : "1");
            viewService.save(view);
@ -100,15 +101,22 @@ public class ViewController extends BaseController {
        return envelop;
    }
    @ApiOperation(value = "获取视图的统计结果")
    @ApiOperation(value = "获取视图的统计结果,并转换成展示的数据格式")
    @RequestMapping(value = ServiceApi.StatisticView.View.GetViewStatisticData, method = RequestMethod.GET)
    public Envelop getViewStatisticData(
            @ApiParam(name = "viewCode", value = "视图编码", required = true)
            @RequestParam(value = "viewCode") String viewCode) {
            @RequestParam(value = "viewCode") String viewCode,
            @ApiParam(name = "filters", value = "过滤条件JSON字符串,如:'[{\"relationType\":\"and\",\"field\":\"event_date\",\"compareType\":\">=\",\"filterValue\":\"2017-06-11\"}]'")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sort", value = "排序JSON字符串,如:'{\"field\":\"event_date\",\"type\":\"asc\"}'")
            @RequestParam(value = "sort", required = false) String sort) {
        Envelop envelop = new Envelop();
        envelop.setSuccessFlg(true);
        try {
            // 根据视图规则,获取统计结果
            viewService.statViewResult(viewCode, filters);
            // 将统计结果,转换成展示的数据格式
            // TODO
        }catch (Exception e){
            e.printStackTrace();

+ 66 - 12
src/main/java/com/yihu/quota/model/view/View.java

@ -7,8 +7,11 @@ import com.yihu.ehr.entity.BaseIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
/**
 * 视图 entity
 *
 * @author janseny
 * @date 2018年9月26日
@ -17,13 +20,28 @@ import javax.persistence.Table;
@Table(name = "olap_view")
public class View extends BaseAssignedEntity {
    public String code; // 视图编码
    public String name; // 视图名称
    public String dimensionDataset; // 多维数据集,ES 的 index/type,拼接成:"index1[,index2...]/type1[,type2...]"
    public String displayType; //  展示类型,1:数值,2:普通表格,3:树形表格,4:饼图,5:折线图,6:柱状图,7:组合图(折线图+柱状图),8:雷达图,9:旭日图。
    public String treeDataType; // 树形数据类型,org_type_tree:机构类型树形数据。
    public String isDrill; // 可钻取,1:可以,2:不可以。
    public String remark; // 备注
    private String code; // 视图编码
    private String name; // 视图名称
    private String esIndex; // 多维数据集的 ES index,多个的话用逗号分隔
    private String esType; // 多维数据集的 ES type,多个的话用逗号分隔
    private String displayType; //  展示类型,1:数值,2:普通表格,3:树形表格,4:饼图,5:折线图,6:柱状图,7:组合图(折线图+柱状图),8:雷达图,9:旭日图。
    private String treeDataType; // 树形数据类型,org_type_tree:机构类型树形数据。
    private String isDrill; // 可钻取,1:可以,2:不可以。
    private String remark; // 备注
    // 临时属性
    /**
     * 视图默认过滤条件
     */
    private List<ViewQuotaFilter> viewFilterList;
    /**
     * 视图维度
     */
    private List<ViewDimension> viewDimensionList;
    /**
     * 视图指标
     */
    private List<ViewQuota> viewQuotaList;
    @Column(name = "code")
    public String getCode() {
@ -43,13 +61,22 @@ public class View extends BaseAssignedEntity {
        this.name = name;
    }
    @Column(name = "dimension_dataset")
    public String getDimensionDataset() {
        return dimensionDataset;
    @Column(name = "es_index")
    public String getEsIndex() {
        return esIndex;
    }
    public void setDimensionDataset(String dimensionDataset) {
        this.dimensionDataset = dimensionDataset;
    public void setEsIndex(String esIndex) {
        this.esIndex = esIndex;
    }
    @Column(name = "es_type")
    public String getEsType() {
        return esType;
    }
    public void setEsType(String esType) {
        this.esType = esType;
    }
    @Column(name = "display_type")
@ -87,4 +114,31 @@ public class View extends BaseAssignedEntity {
    public void setRemark(String remark) {
        this.remark = remark;
    }
    @Transient
    public List<ViewQuotaFilter> getViewFilterList() {
        return viewFilterList;
    }
    public void setViewFilterList(List<ViewQuotaFilter> viewFilterList) {
        this.viewFilterList = viewFilterList;
    }
    @Transient
    public List<ViewDimension> getViewDimensionList() {
        return viewDimensionList;
    }
    @Transient
    public void setViewDimensionList(List<ViewDimension> viewDimensionList) {
        this.viewDimensionList = viewDimensionList;
    }
    public List<ViewQuota> getViewQuotaList() {
        return viewQuotaList;
    }
    public void setViewQuotaList(List<ViewQuota> viewQuotaList) {
        this.viewQuotaList = viewQuotaList;
    }
}

+ 23 - 0
src/main/java/com/yihu/quota/model/view/ViewQuota.java

@ -7,8 +7,11 @@ import com.yihu.ehr.entity.BaseIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
/**
 * 视图指标 entity
 *
 * @author janseny
 * @date 2018年9月26日
@ -26,6 +29,12 @@ public class ViewQuota extends BaseAssignedEntity {
    public String basicFormulaType; // 基础公式:1:求和,2.计数,3:均值,4:最大值,5:最小值,6:去重计数
    public String chartType; // 图表类型,1:折线图,2:柱状图。
    // 临时属性
    /**
     * 指标过滤条件
     */
    public List<ViewQuotaFilter> quotaFilterList;
    @Column(name = "view_id")
    public Integer getViewId() {
        return viewId;
@ -43,6 +52,7 @@ public class ViewQuota extends BaseAssignedEntity {
    public void setDimensionCode(String dimensionCode) {
        this.dimensionCode = dimensionCode;
    }
    @Column(name = "dimension_name")
    public String getDimensionName() {
        return dimensionName;
@ -51,6 +61,7 @@ public class ViewQuota extends BaseAssignedEntity {
    public void setDimensionName(String dimensionName) {
        this.dimensionName = dimensionName;
    }
    @Column(name = "es_index")
    public String getEsIndex() {
        return esIndex;
@ -59,6 +70,7 @@ public class ViewQuota extends BaseAssignedEntity {
    public void setEsIndex(String esIndex) {
        this.esIndex = esIndex;
    }
    @Column(name = "es_type")
    public String getEsType() {
        return esType;
@ -67,6 +79,7 @@ public class ViewQuota extends BaseAssignedEntity {
    public void setEsType(String esType) {
        this.esType = esType;
    }
    @Column(name = "formula_mode")
    public String getFormulaMode() {
        return formulaMode;
@ -75,6 +88,7 @@ public class ViewQuota extends BaseAssignedEntity {
    public void setFormulaMode(String formulaMode) {
        this.formulaMode = formulaMode;
    }
    @Column(name = "basic_formula_type")
    public String getBasicFormulaType() {
        return basicFormulaType;
@ -83,6 +97,7 @@ public class ViewQuota extends BaseAssignedEntity {
    public void setBasicFormulaType(String basicFormulaType) {
        this.basicFormulaType = basicFormulaType;
    }
    @Column(name = "chart_type")
    public String getChartType() {
        return chartType;
@ -92,4 +107,12 @@ public class ViewQuota extends BaseAssignedEntity {
        this.chartType = chartType;
    }
    @Transient
    public List<ViewQuotaFilter> getQuotaFilterList() {
        return quotaFilterList;
    }
    public void setQuotaFilterList(List<ViewQuotaFilter> quotaFilterList) {
        this.quotaFilterList = quotaFilterList;
    }
}

+ 33 - 3
src/main/java/com/yihu/quota/service/view/ViewService.java

@ -10,8 +10,12 @@ 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;
@ -42,18 +46,44 @@ public class ViewService extends BaseJpaService<View, ViewDao> {
        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<ViewQuotaFilter> quotaFilterList = viewQuotaFilterDao.findByRelationId(viewQuota.getId());
            viewQuota.setQuotaFilterList(quotaFilterList);
        }
        return view;
    }
    /**
     * 获取视图统计结果
     *
     * @param viewCode
     * @param filters
     */
    public void statViewResult(String viewCode) {
    public void statViewResult(String viewCode, String filters) {
        // 获取视图规则
        View view = viewDao.findByCode(viewCode);
        List<ViewDimension> viewDimensionList = viewDimensionDao.findByViewId(view.getId());
        List<ViewQuota> viewQuotaList = viewQuotaDao.findByViewId(view.getId());
        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();