Przeglądaj źródła

二维表报表 解析

jkzlzhoujie 6 lat temu
rodzic
commit
241366a29f

+ 37 - 17
src/main/java/com/yihu/quota/util/AggregationBuildHandler.java

@ -149,27 +149,43 @@ public class AggregationBuildHandler {
     * @return
     */
    public List<Map<String, Object>> tableDataParsing(String viewCode ,Map<String, Aggregation> map){
        List<String> rowList = new LinkedList<>();
        rowList.add("town_terms");
        rowList.add("total");
        List<String> cloumnList = new ArrayList<>();
        cloumnList.add("total_count_result");
        cloumnList.add("sex_terms");
//        List<String> rowList = new LinkedList<>();
//        rowList.add("town_terms");
//        rowList.add("total");
//        List<String> cloumnList = new ArrayList<>();
//        cloumnList.add("total_count_result");
//        cloumnList.add("sex_terms");
        View view = viewDao.findByCode(viewCode);
//        if(view == null){
//            logger.debug("视图不存在");
//            return null;
//        }
//        rowList = getRowDimensionList(view.getId());
//        cloumnList = getColumnDimensionList(view.getId());
        if(view == null){
            logger.debug("视图不存在");
            return null;
        }
        List<String> rowList = getRowDimensionList(view.getId());
        List<String> cloumnList = getColumnDimensionList(view.getId());
        List<ViewQuota> viewQuotas = viewQuotaDao.findByViewId(view.getId());
//        List<ViewQuotaFilter> viewFilters = viewQuotaFilterDao.findByRelationId(view.getId());
        Map<String, Object> quotaMap = new HashMap<>();
        for(ViewQuota viewQuota :viewQuotas){
            List<ViewQuotaFilter> viewQuotaFilters = viewQuotaFilterDao.findByRelationId(viewQuota.getId());
            String filter = "noFilter";
            if(viewQuotaFilters != null && viewQuotaFilters.size() > 0){
                filter = "yesFilter";
            }
            quotaMap.put(viewQuota.getCode(),filter);
            //指标也作为列维度
            cloumnList.add(viewQuota.getBasicFormulaType() +"-result");
        }
        List<Map<String, Object>> resultList = new LinkedList<Map<String, Object>>();
        //合计行 数据处理 开始
        boolean total = false;
        Map<String, Object> totalResultMap = new HashMap<>();
        totalResultMap.put(rowList.get(0),"total");//默认第一个行维度
        for(String rowAggCode: rowList) {
            if (rowAggCode.contains("total")) {
                total = true;
                for (String cloumnAggCode : cloumnList) {
                    for(String aggCode:map.keySet()) {
                        Aggregation aggregation = map.get(aggCode);
@ -187,8 +203,10 @@ public class AggregationBuildHandler {
                }
            }
        }
        resultList.add(totalResultMap);
        //合计行 数据处理 接收
        if(total){
            resultList.add(totalResultMap);
            //合计行 数据处理 接收
        }
        //非合计数据处理
        for(String rowAggCode: rowList){
@ -362,10 +380,12 @@ public class AggregationBuildHandler {
        // 视图各组组内顶层行维度(升序)
        List<ViewDimension> groupTopRowDimensionList = viewDimensionDao.getGroupTopRowDimensionList(viewId);
        for (ViewDimension viewDimension : groupTopRowDimensionList) {
            String dataType = cubeService.findDimensionDataType("cubeCode:1", viewDimension.getDimensionCode());
            String aggType = "-terms";
            if(dataType.equals("date")){
                aggType = "-date_histogram";
            String dataType = cubeService.findDimensionDataType("cubeCode:1", viewDimension.getDimensionCode());
            if(!StringUtils.isEmpty(dataType)){
                if(dataType.equals("date")){
                    aggType = "-date_histogram";
                }
            }
            rowList.add(viewDimension.getDimensionCode() + aggType);
            List<ViewDimension> otherRowDimensionList = viewDimensionDao.getGroupOtherRowDimensionList(viewId, viewDimension.getGroupRow());