/** * @param dim -- Dimension * @return Dimension */ public static Dimension convertDim2Dim(Dimension dim) { StandardDimension rs = new StandardDimension(dim.getName()); rs.setCaption(dim.getCaption()); rs.setDescription(dim.getDescription()); rs.setTableName(dim.getTableName()); rs.setFacttableCaption(dim.getFacttableCaption()); rs.setFacttableColumn(dim.getFacttableColumn()); rs.setPrimaryKey(dim.getPrimaryKey()); rs.setType(dim.getType()); rs.setVisible(true); rs.setId(dim.getId()); rs.setName(dim.getName()); LinkedHashMap<String, Level> levels = Maps.newLinkedHashMap(); dim.getLevels() .values() .forEach( level -> { level.setDimension(dim); levels.put(level.getName(), level); }); rs.setLevels(levels); return rs; }
/** * 判断是否需要汇总 * * @param questionModel * @return */ private static boolean needSummary(QuestionModel questionModel) { ConfigQuestionModel configQuestionModel = (ConfigQuestionModel) questionModel; for (AxisMeta meta : questionModel.getAxisMetas().values()) { if (meta.getAxisType() == AxisType.ROW) { for (String str : meta.getCrossjoinDims()) { DimensionCondition condition = (DimensionCondition) questionModel.getQueryConditions().get(str); Dimension dim = configQuestionModel.getCube().getDimensions().get(condition.getMetaName()); if (dim != null && dim.getType() == DimensionType.CALLBACK) { if (condition.getQueryDataNodes() != null && condition.getQueryDataNodes().size() == 1) { List<Member> members = dim.getLevels() .values() .toArray(new Level[0])[0] .getMembers( configQuestionModel.getCube(), configQuestionModel.getDataSourceInfo(), configQuestionModel.getRequestParams()); String uniqueName = condition.getQueryDataNodes().get(0).getUniqueName(); if (MetaNameUtil.isAllMemberUniqueName(uniqueName)) { return false; } else if (meta.getCrossjoinDims().size() > 1) { return false; } else if (members.size() == 1) { MiniCubeMember m = (MiniCubeMember) members.get(0); if (m.getChildren() != null && m.getChildren().size() > 1) { return false; } else if (m.getChildren() == null) { return false; } } } else if (CollectionUtils.isEmpty(condition.getQueryDataNodes())) { return false; } return true; } if (condition.getQueryDataNodes() == null || condition.getQueryDataNodes().isEmpty()) { return false; } else { List<QueryData> queryDatas = condition.getQueryDataNodes(); for (QueryData queryData : queryDatas) { if (MetaNameUtil.isAllMemberName(queryData.getUniqueName())) { return false; } else { // TODO 这里需要修改 需要修改为可配置方式 String[] tmp = MetaNameUtil.parseUnique2NameArray(queryData.getUniqueName()); if (tmp[tmp.length - 1].contains(":")) { return false; } } } } } break; } } return true; }