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.BooleanUtils;
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")
|| StringUtils.equalsIgnoreCase(view.getType(), "bidirectional-bar")
|| StringUtils.equalsIgnoreCase(view.getType(), "quadrant")) {
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);
}
boolean skipBarRange = false;
boolean barRangeDate = false;
if (StringUtils.equalsIgnoreCase(view.getType(), "bar-range")) { //针对区间条形图进行处理
yAxis.clear();
if (CollectionUtils.isNotEmpty(view.getYAxis()) && CollectionUtils.isNotEmpty(view.getYAxisExt())) {
ChartViewFieldDTO axis1 = view.getYAxis().get(0);
ChartViewFieldDTO axis2 = view.getYAxisExt().get(0);
if (StringUtils.equalsIgnoreCase(axis1.getGroupType(), "q") && StringUtils.equalsIgnoreCase(axis2.getGroupType(), "q")) {
yAxis.add(axis1);
yAxis.add(axis2);
} else if (StringUtils.equalsIgnoreCase(axis1.getGroupType(), "d") && axis1.getDeType() == 1 && StringUtils.equalsIgnoreCase(axis2.getGroupType(), "d") && axis2.getDeType() == 1) {
barRangeDate = true;
if (BooleanUtils.isTrue(view.getAggregate())) {
axis1.setSummary("min");
axis2.setSummary("max");
yAxis.add(axis1);
yAxis.add(axis2);
} else {
xAxis.add(axis1);
xAxis.add(axis2);
}
} else {
skipBarRange = true;
}
}
}
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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享
资源推荐
资源详情
资源评论
收起资源包目录
DataEase 是开源的数据可视化分析工具( BI 工具 ) (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 75KB
ChartDataBuild.java 72KB
CalciteProvider.java 54KB
DatasourceServer.java 49KB
DatasetDataManage.java 31KB
SqlparserUtils.java 28KB
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
CoreChartView.java 10KB
XpackShareManage.java 10KB
ChartDataServer.java 10KB
HttpClientUtil.java 10KB
WhereTree2Str.java 9KB
CoreVisualizationManage.java 9KB
SqlUtils.java 9KB
DatasourceTaskServer.java 9KB
ExtWhere2Str.java 9KB
CustomWhere2Str.java 9KB
MybatisInterceptor.java 9KB
MapManage.java 9KB
VisualizationLinkJumpService.java 8KB
GridExample.java 8KB
EngineManage.java 8KB
TreeUtils.java 8KB
RsaUtils.java 8KB
Dimension2SQLObj.java 7KB
LogUtil.java 7KB
Quota2SQLObj.java 7KB
UserApi.java 7KB
CodingUtil.java 7KB
CoreDatasetTableField.java 6KB
DataVisualizationInfo.java 6KB
DatasourceDriverServer.java 6KB
SQLProvider.java 6KB
FileUtils.java 6KB
DataSourceManage.java 6KB
VisualizationLinkageService.java 6KB
Field2SQLObj.java 6KB
H2EngineProvider.java 5KB
Translator.java 5KB
ResourceMonitorManage.java 5KB
MysqlEngineProvider.java 5KB
SysParameterManage.java 5KB
VisualizationStoreManage.java 5KB
TenantDatasourceProvider.java 5KB
Order2SQLObj.java 5KB
CoreDatasourceTask.java 5KB
VisualizationOuterParamsService.java 5KB
DataVisualizationApi.java 5KB
StaticResourceServer.java 4KB
VisualizationTemplate.java 4KB
TemplateLocalParseManage.java 4KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6718
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功