package io.dataease.chart.manage;
import io.dataease.api.chart.dto.*;
import io.dataease.api.chart.request.ChartDrillRequest;
import io.dataease.api.chart.request.ChartExtRequest;
import io.dataease.api.dataset.dto.SqlVariableDetails;
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
import io.dataease.api.dataset.union.model.SQLMeta;
import io.dataease.api.permissions.auth.dto.BusiPerCheckDTO;
import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO;
import io.dataease.chart.constant.ChartConstants;
import io.dataease.chart.utils.ChartDataBuild;
import io.dataease.constant.AuthEnum;
import io.dataease.dataset.dto.DatasourceSchemaDTO;
import io.dataease.dataset.manage.DatasetGroupManage;
import io.dataease.dataset.manage.DatasetSQLManage;
import io.dataease.dataset.manage.DatasetTableFieldManage;
import io.dataease.dataset.manage.PermissionManage;
import io.dataease.dataset.utils.SqlUtils;
import io.dataease.datasource.provider.CalciteProvider;
import io.dataease.datasource.request.DatasourceRequest;
import io.dataease.dto.dataset.DatasetTableFieldDTO;
import io.dataease.engine.constant.SQLConstants;
import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.*;
import io.dataease.engine.utils.SQLUtils;
import io.dataease.engine.utils.Utils;
import io.dataease.exception.DEException;
import io.dataease.i18n.Translator;
import io.dataease.result.ResultCode;
import io.dataease.system.manage.CorePermissionManage;
import io.dataease.utils.BeanUtils;
import io.dataease.utils.JsonUtil;
import jakarta.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Author Junjun
*/
@Component
public class ChartDataManage {
@Resource
private DatasetTableFieldManage datasetTableFieldManage;
@Resource
private DatasetGroupManage datasetGroupManage;
@Resource
private DatasetSQLManage datasetSQLManage;
@Resource
private CalciteProvider calciteProvider;
@Resource
private ChartViewManege chartViewManege;
@Resource
private PermissionManage permissionManage;
@Resource
private CorePermissionManage corePermissionManage;
public static final String START_END_SEPARATOR = "_START_END_SPLIT";
private static Logger logger = LoggerFactory.getLogger(ChartDataManage.class);
public ChartViewDTO calcData(ChartViewDTO view) throws Exception {
ChartExtRequest chartExtRequest = view.getChartExtRequest();
if (chartExtRequest == null) {
chartExtRequest = new ChartExtRequest();
}
ChartViewDTO chartViewDTO = new ChartViewDTO();
if (ObjectUtils.isEmpty(view)) {
DEException.throwException(ResultCode.DATA_IS_WRONG.code(), Translator.get("i18n_chart_delete"));
}
//如果是excel导出 如果是从仪表板获取图表数据,则仪表板的查询模式,查询结果的数量,覆盖图表对应的属性
if (view.getIsExcelExport()) {
view.setResultMode(ChartConstants.VIEW_RESULT_MODE.CUSTOM);
} else if (ChartConstants.VIEW_RESULT_MODE.CUSTOM.equals(chartExtRequest.getResultMode())) {
view.setResultMode(chartExtRequest.getResultMode());
view.setResultCount(chartExtRequest.getResultCount());
}
List<ChartViewFieldDTO> viewFields = new ArrayList<>(view.getViewFields());
final Map<String, List<ChartViewFieldDTO>> extFieldsMap = new LinkedHashMap<>();
if (ObjectUtils.isNotEmpty(viewFields)) {
viewFields.forEach(field -> {
String busiType = field.getBusiType();
List<ChartViewFieldDTO> list = extFieldsMap.containsKey(busiType) ? extFieldsMap.get(busiType) : new ArrayList<>();
list.add(field);
extFieldsMap.put(field.getBusiType(), list);
});
}
// get all fields
List<ChartViewFieldDTO> allFields = getAllChartFields(view);
List<ChartViewFieldDTO> xAxisBase = new ArrayList<>(view.getXAxis());
List<ChartViewFieldDTO> xAxis = new ArrayList<>(view.getXAxis());
List<ChartViewFieldDTO> xAxisExt = new ArrayList<>(view.getXAxisExt());
if (StringUtils.equalsIgnoreCase(view.getType(), "table-pivot")
|| StringUtils.containsIgnoreCase(view.getType(), "group")
|| ("antv".equalsIgnoreCase(view.getRender()) && "line".equalsIgnoreCase(view.getType()))
|| StringUtils.equalsIgnoreCase(view.getType(), "flow-map")) {
xAxis.addAll(xAxisExt);
}
List<ChartViewFieldDTO> yAxis = new ArrayList<>(view.getYAxis());
if (StringUtils.equalsIgnoreCase(view.getType(), "chart-mix")) {
List<ChartViewFieldDTO> yAxisExt = new ArrayList<>(view.getYAxisExt());
yAxis.addAll(yAxisExt);
}
if (StringUtils.equalsIgnoreCase(view.getRender(), "antv") && StringUtils.equalsAnyIgnoreCase(view.getType(), "gauge", "liquid")) {
List<ChartViewFieldDTO> sizeField = getSizeField(view);
yAxis.addAll(sizeField);
}
List<ChartViewFieldDTO> extStack = new ArrayList<>(view.getExtStack());
List<ChartViewFieldDTO> extBubble = new ArrayList<>(view.getExtBubble());
if (ObjectUtils.isNotEmpty(view.getExtLabel()) && enableExtData(view.getType())) {
List<ChartViewFieldDTO> extLabel = new ArrayList<>(view.getExtLabel());
yAxis.addAll(extLabel);
}
if (ObjectUtils.isNotEmpty(view.getExtTooltip()) && enableExtData(view.getType())) {
List<ChartViewFieldDTO> extTooltip = new ArrayList<>(view.getExtTooltip());
yAxis.addAll(extTooltip);
}
List<ChartFieldCustomFilterDTO> fieldCustomFilter = new ArrayList<>(view.getCustomFilter());
List<ChartViewFieldDTO> drill = new ArrayList<>(view.getDrillFields());
DatasetGroupInfoDTO table = datasetGroupManage.get(view.getTableId(), null);
if (table == null) {
DEException.throwException(ResultCode.DATA_IS_WRONG.code(), Translator.get("i18n_no_ds"));
}
// check permission
BusiPerCheckDTO dto = new BusiPerCheckDTO();
dto.setId(table.getId());
dto.setAuthEnum(AuthEnum.READ);
boolean checked = corePermissionManage.checkAuth(dto);
if (!checked) {
DEException.throwException(Translator.get("i18n_no_datasource_permission"));
}
// column permission
Map<String, ColumnPermissionItem> desensitizationList = new HashMap<>();
List<DatasetTableFieldDTO> columnPermissionFields = permissionManage.filterColumnPermissions(transFields(allFields), desensitizationList, table.getId(), chartExtRequest.getUser());
//将没有权限的列删掉
List<String> dataeaseNames = columnPermissionFields.stream().map(DatasetTableFieldDTO::getDataeaseName).collect(Collectors.toList());
dataeaseNames.add("*");
fieldCustomFilter = fieldCustomFilter.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
extStack = extStack.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.toList());
extBubble = extBubble.stream().filter(item -> !desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName())).collect(Collectors.t
没有合适的资源?快使用搜索试试~ 我知道了~
DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化 DataEase 支
共2000个文件
json:912个
java:637个
vue:354个
需积分: 5 0 下载量 120 浏览量
2024-04-11
14:35:50
上传
评论
收藏 65.42MB ZIP 举报
温馨提示
DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支
资源推荐
资源详情
资源评论
收起资源包目录
DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化 DataEase 支 (2000个子文件)
skin.css 71KB
skin.css 71KB
skin.min.css 60KB
skin.min.css 60KB
skin.mobile.css 24KB
skin.mobile.css 24KB
content.css 24KB
content.inline.css 24KB
content.inline.css 24KB
content.css 23KB
content.min.css 21KB
content.inline.min.css 21KB
content.inline.min.css 21KB
content.min.css 21KB
skin.mobile.min.css 21KB
skin.mobile.min.css 21KB
content.css 2KB
content.css 2KB
content.css 2KB
content.css 2KB
content.min.css 1KB
content.min.css 1KB
content.min.css 1KB
content.min.css 1KB
skin.shadowdom.css 867B
skin.shadowdom.css 867B
skin.shadowdom.min.css 764B
skin.shadowdom.min.css 764B
content.mobile.css 732B
content.mobile.css 732B
content.mobile.min.css 544B
content.mobile.min.css 544B
index.css 185B
mobile.html 413B
index.html 371B
panel.html 367B
ChartDataManage.java 73KB
ChartDataBuild.java 62KB
CalciteProvider.java 52KB
DatasourceServer.java 50KB
ApiUtils.java 26KB
DatasetDataManage.java 26KB
DatasetGroupManage.java 25KB
DatasetSQLManage.java 22KB
ExcelUtils.java 21KB
DatasourceSyncManage.java 18KB
DeFeignRegister.java 18KB
DataVisualizationServer.java 18KB
Utils.java 15KB
TemplateCenterManage.java 14KB
TemplateManageService.java 14KB
ScheduleManager.java 14KB
PermissionManage.java 12KB
ChartViewManege.java 11KB
XpackShareManage.java 10KB
ChartDataServer.java 10KB
CoreChartView.java 10KB
HttpClientUtil.java 10KB
CoreVisualizationManage.java 9KB
WhereTree2Str.java 9KB
DatasetTableFieldManage.java 9KB
SqlparserUtils.java 9KB
DatasourceTaskServer.java 9KB
SqlUtils.java 9KB
MybatisInterceptor.java 9KB
CustomWhere2Str.java 9KB
ExtWhere2Str.java 9KB
MapManage.java 9KB
GridExample.java 8KB
VisualizationLinkJumpService.java 8KB
TreeUtils.java 8KB
RsaUtils.java 8KB
LogUtil.java 7KB
Dimension2SQLObj.java 7KB
Quota2SQLObj.java 7KB
CodingUtil.java 7KB
UserApi.java 6KB
CoreDatasetTableField.java 6KB
DataVisualizationInfo.java 6KB
DatasourceDriverServer.java 6KB
SQLProvider.java 6KB
FileUtils.java 6KB
EngineManage.java 6KB
VisualizationLinkageService.java 6KB
H2EngineProvider.java 5KB
Translator.java 5KB
Field2SQLObj.java 5KB
ResourceMonitorManage.java 5KB
MysqlEngineProvider.java 5KB
VisualizationStoreManage.java 5KB
TenantDatasourceProvider.java 5KB
DataSourceManage.java 5KB
Order2SQLObj.java 5KB
CoreDatasourceTask.java 5KB
SysParameterManage.java 5KB
VisualizationOuterParamsService.java 5KB
DataVisualizationApi.java 5KB
StaticResourceServer.java 4KB
DatasourceApi.java 4KB
CoreDatasetGroup.java 4KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
weixin_45852451
- 粉丝: 1
- 资源: 38
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功