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);
}
if (StringUtils.equalsIgnoreCase(view.getType(), "quadrant")) {
List<ChartViewFieldDTO> yAxisExt = new ArrayList<>(view.getYAxisExt());
yAxis.addAll(yAxisExt);
}
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(Collecto
没有合适的资源?快使用搜索试试~ 我知道了~
DataEase 是开源的数据可视化分析工具
共2000个文件
json:906个
java:640个
vue:357个
需积分: 5 0 下载量 164 浏览量
2024-04-21
12:06:41
上传
评论
收藏 65.46MB ZIP 举报
温馨提示
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
DatasetDataManage.java 31KB
ApiUtils.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
DatasetTableFieldManage.java 11KB
XpackShareManage.java 10KB
ChartDataServer.java 10KB
CoreChartView.java 10KB
HttpClientUtil.java 10KB
WhereTree2Str.java 9KB
CoreVisualizationManage.java 9KB
SqlparserUtils.java 9KB
DatasourceTaskServer.java 9KB
SqlUtils.java 9KB
ExtWhere2Str.java 9KB
CustomWhere2Str.java 9KB
MybatisInterceptor.java 9KB
MapManage.java 9KB
VisualizationLinkJumpService.java 8KB
GridExample.java 8KB
TreeUtils.java 8KB
RsaUtils.java 8KB
Dimension2SQLObj.java 7KB
LogUtil.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
Field2SQLObj.java 6KB
H2EngineProvider.java 5KB
Translator.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
VisualizationTemplate.java 4KB
DatasourceApi.java 4KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3651
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- uniapp中tab切换,底部内容跟着移动,相反,底部移动,tab也跟着切换-组件
- 基于JS+TS实现跨平台3D相机控制器-附项目源码-优质项目分享.zip
- 跨相机-基于Rust实现的跨平台相机捕获-附项目源码-优质项目分享.zip
- odise 14离线安装包 大众斯柯达奥迪 5054 6153
- 网页设计期末作业-纯html加css+少量js-盗墓笔记旅游导航网站.rar
- 算法笔记模拟退火.rar
- MATLAB大数据仿真案例-蚁群算法(ACO)用于求解旅行商(TSP)问题.rar
- 基于yolov5的吸烟行为检测源码+模型.zip
- MySQL基础知识-个人笔记.rar
- Project8.ipynb
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功