forked from github/dataease
commit
611b55ab5c
@ -1,11 +1,32 @@
|
|||||||
package io.dataease.chart.charts.impl.mix;
|
package io.dataease.chart.charts.impl.mix;
|
||||||
|
|
||||||
|
import io.dataease.chart.utils.ChartDataBuild;
|
||||||
|
import io.dataease.extensions.view.dto.AxisFormatResult;
|
||||||
|
import io.dataease.extensions.view.dto.ChartAxis;
|
||||||
|
import io.dataease.extensions.view.dto.ChartViewDTO;
|
||||||
|
import io.dataease.extensions.view.dto.CustomFilterResult;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class DualLineMixHandler extends GroupMixHandler {
|
public class DualLineMixHandler extends GroupMixHandler {
|
||||||
@Getter
|
@Getter
|
||||||
private final String type = "chart-mix-dual-line";
|
private final String type = "chart-mix-dual-line";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> buildNormalResult(ChartViewDTO view, AxisFormatResult formatResult, CustomFilterResult filterResult, List<String[]> data) {
|
||||||
|
boolean isDrill = filterResult
|
||||||
|
.getFilterList()
|
||||||
|
.stream()
|
||||||
|
.anyMatch(ele -> ele.getFilterType() == 1);
|
||||||
|
var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
|
||||||
|
var xAxisExt = formatResult.getAxisMap().get(ChartAxis.xAxisExt);
|
||||||
|
var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
|
||||||
|
var xAxisBase = xAxis.subList(0, xAxis.size() - xAxisExt.size());
|
||||||
|
return ChartDataBuild.transMixChartDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill, true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -55,11 +55,19 @@ public class MixHandler extends YoyChartHandler {
|
|||||||
.getFilterList()
|
.getFilterList()
|
||||||
.stream()
|
.stream()
|
||||||
.anyMatch(ele -> ele.getFilterType() == 1);
|
.anyMatch(ele -> ele.getFilterType() == 1);
|
||||||
|
if (StringUtils.equals((String) formatResult.getContext().get("isRight"), "isRight")) {
|
||||||
|
var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
|
||||||
|
var xAxisExt = formatResult.getAxisMap().get(ChartAxis.xAxisExt);
|
||||||
|
var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
|
||||||
|
var xAxisBase = xAxis.subList(0, xAxis.size() - xAxisExt.size());
|
||||||
|
return ChartDataBuild.transMixChartDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill, true);
|
||||||
|
}
|
||||||
|
|
||||||
var xAxisBase = (List<ChartViewFieldDTO>) formatResult.getContext().get("xAxisBase");
|
var xAxisBase = (List<ChartViewFieldDTO>) formatResult.getContext().get("xAxisBase");
|
||||||
var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
|
var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
|
||||||
var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
|
var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
|
||||||
var xAxisExt = formatResult.getAxisMap().get(ChartAxis.xAxisExt);
|
var xAxisExt = formatResult.getAxisMap().get(ChartAxis.xAxisExt);
|
||||||
var result = ChartDataBuild.transMixChartDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill);
|
var result = ChartDataBuild.transMixChartDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill, false);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,11 +105,6 @@ public class MixHandler extends YoyChartHandler {
|
|||||||
|
|
||||||
AxisFormatResult formatResult2 = new AxisFormatResult();
|
AxisFormatResult formatResult2 = new AxisFormatResult();
|
||||||
var axisMap = new HashMap<ChartAxis, List<ChartViewFieldDTO>>();
|
var axisMap = new HashMap<ChartAxis, List<ChartViewFieldDTO>>();
|
||||||
axisMap.put(ChartAxis.xAxis, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.xAxis)));
|
|
||||||
axisMap.put(ChartAxis.extStack, new ArrayList<>());
|
|
||||||
axisMap.put(ChartAxis.xAxisExt, new ArrayList<>());
|
|
||||||
axisMap.put(ChartAxis.extBubble, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.extBubble)));
|
|
||||||
axisMap.put(ChartAxis.yAxisExt, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.yAxisExt)));
|
|
||||||
axisMap.put(ChartAxis.extLabel, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.extLabel)));
|
axisMap.put(ChartAxis.extLabel, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.extLabel)));
|
||||||
axisMap.put(ChartAxis.extTooltip, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.extTooltip)));
|
axisMap.put(ChartAxis.extTooltip, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.extTooltip)));
|
||||||
axisMap.put(ChartAxis.drill, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.drill)));
|
axisMap.put(ChartAxis.drill, new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.drill)));
|
||||||
@ -110,18 +113,16 @@ public class MixHandler extends YoyChartHandler {
|
|||||||
|
|
||||||
// 计算右轴,包含 xAxis,xAxisExt,yAxisExt,需要去掉 group 和 stack
|
// 计算右轴,包含 xAxis,xAxisExt,yAxisExt,需要去掉 group 和 stack
|
||||||
var xAxis = new ArrayList<>(view.getXAxis());
|
var xAxis = new ArrayList<>(view.getXAxis());
|
||||||
var extStack = formatResult2.getAxisMap().get(ChartAxis.extStack);
|
var extBubble = new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.extBubble));
|
||||||
var xAxisExt = formatResult2.getAxisMap().get(ChartAxis.xAxisExt);
|
|
||||||
//xAxis = xAxis.subList(0, xAxis.size() - extStack.size() - xAxisExt.size());
|
|
||||||
var extBubble = formatResult2.getAxisMap().get(ChartAxis.extBubble);
|
|
||||||
xAxis.addAll(extBubble);
|
xAxis.addAll(extBubble);
|
||||||
var dillAxis = (ArrayList<ChartViewFieldDTO>) formatResult.getContext().get("dillAxis");
|
var dillAxis = (ArrayList<ChartViewFieldDTO>) formatResult.getContext().get("dillAxis");
|
||||||
xAxis.addAll(dillAxis);
|
xAxis.addAll(dillAxis);
|
||||||
formatResult2.getAxisMap().put(ChartAxis.xAxis, xAxis);
|
formatResult2.getAxisMap().put(ChartAxis.xAxis, xAxis);
|
||||||
formatResult2.getAxisMap().put(ChartAxis.xAxisExt, extBubble);
|
formatResult2.getAxisMap().put(ChartAxis.xAxisExt, extBubble);
|
||||||
var yAxisExt = formatResult2.getAxisMap().get(ChartAxis.yAxisExt);
|
var yAxisExt = new ArrayList<>(formatResult.getAxisMap().get(ChartAxis.yAxisExt));
|
||||||
formatResult2.getAxisMap().put(ChartAxis.yAxis, yAxisExt);
|
formatResult2.getAxisMap().put(ChartAxis.yAxis, yAxisExt);
|
||||||
formatResult2.getContext().remove("yoyFiltered");
|
formatResult2.getContext().remove("yoyFiltered");
|
||||||
|
formatResult2.getContext().put("isRight", "isRight");
|
||||||
|
|
||||||
|
|
||||||
formatResult.getContext().put("subAxisMap", axisMap);
|
formatResult.getContext().put("subAxisMap", axisMap);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package io.dataease.chart.utils;
|
package io.dataease.chart.utils;
|
||||||
|
|
||||||
import io.dataease.api.chart.dto.*;
|
import io.dataease.api.chart.dto.ScatterChartDataDTO;
|
||||||
|
import io.dataease.api.chart.dto.Series;
|
||||||
import io.dataease.extensions.view.dto.*;
|
import io.dataease.extensions.view.dto.*;
|
||||||
import io.dataease.i18n.Lang;
|
import io.dataease.i18n.Lang;
|
||||||
import io.dataease.i18n.Translator;
|
import io.dataease.i18n.Translator;
|
||||||
@ -423,7 +424,7 @@ public class ChartDataBuild {
|
|||||||
axisChartDataDTO.setValue(new BigDecimal(0));
|
axisChartDataDTO.setValue(new BigDecimal(0));
|
||||||
}
|
}
|
||||||
axisChartDataDTO.setCategory(StringUtils.defaultIfBlank(yAxis.get(j).getChartShowName(), yAxis.get(j).getName()));
|
axisChartDataDTO.setCategory(StringUtils.defaultIfBlank(yAxis.get(j).getChartShowName(), yAxis.get(j).getName()));
|
||||||
buildDynamicValue(view, axisChartDataDTO, row, size, ObjectUtils.isNotEmpty(extBubble)?extSize-1:extSize);
|
buildDynamicValue(view, axisChartDataDTO, row, size, ObjectUtils.isNotEmpty(extBubble) ? extSize - 1 : extSize);
|
||||||
// pop
|
// pop
|
||||||
if (ObjectUtils.isNotEmpty(extBubble)) {
|
if (ObjectUtils.isNotEmpty(extBubble)) {
|
||||||
try {
|
try {
|
||||||
@ -504,6 +505,11 @@ public class ChartDataBuild {
|
|||||||
|
|
||||||
// antV组合图形
|
// antV组合图形
|
||||||
public static Map<String, Object> transMixChartDataAntV(List<ChartViewFieldDTO> xAxisBase, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> xAxisExt, List<ChartViewFieldDTO> yAxis, ChartViewDTO view, List<String[]> data, boolean isDrill) {
|
public static Map<String, Object> transMixChartDataAntV(List<ChartViewFieldDTO> xAxisBase, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> xAxisExt, List<ChartViewFieldDTO> yAxis, ChartViewDTO view, List<String[]> data, boolean isDrill) {
|
||||||
|
return transMixChartDataAntV(xAxisBase, xAxis, xAxisExt, yAxis, view, data, isDrill, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, Object> transMixChartDataAntV(List<ChartViewFieldDTO> xAxisBase, List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> xAxisExt, List<ChartViewFieldDTO> yAxis, ChartViewDTO view, List<String[]> data, boolean isDrill, boolean isLine) {
|
||||||
|
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
|
||||||
List<Series> series = new ArrayList<>();
|
List<Series> series = new ArrayList<>();
|
||||||
@ -571,8 +577,16 @@ public class ChartDataBuild {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
axisChartDataDTO.setValue(new BigDecimal(0));
|
axisChartDataDTO.setValue(new BigDecimal(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
String category = StringUtils.defaultIfBlank(b.toString(),
|
String category = StringUtils.defaultIfBlank(b.toString(),
|
||||||
StringUtils.defaultIfBlank(yAxis.get(j).getChartShowName(), yAxis.get(j).getName()));
|
StringUtils.defaultIfBlank(yAxis.get(j).getChartShowName(), yAxis.get(j).getName()));
|
||||||
|
|
||||||
|
if (isLine) {
|
||||||
|
if (ObjectUtils.isEmpty(xAxisExt)) {
|
||||||
|
category = StringUtils.defaultIfBlank(yAxis.get(j).getChartShowName(), yAxis.get(j).getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
axisChartDataDTO.setCategory(category);
|
axisChartDataDTO.setCategory(category);
|
||||||
categories.add(category);
|
categories.add(category);
|
||||||
|
|
||||||
@ -1764,7 +1778,7 @@ public class ChartDataBuild {
|
|||||||
List<Map<String, Object>> tableRow = (List<Map<String, Object>>) map.get("tableRow");
|
List<Map<String, Object>> tableRow = (List<Map<String, Object>>) map.get("tableRow");
|
||||||
final int xEndIndex = detailIndex;
|
final int xEndIndex = detailIndex;
|
||||||
Map<String, List<String[]>> groupDataList = detailData.stream().collect(Collectors.groupingBy(item -> "(" + StringUtils.join(ArrayUtils.subarray(item, 0, xEndIndex), ")-de-(") + ")"));
|
Map<String, List<String[]>> groupDataList = detailData.stream().collect(Collectors.groupingBy(item -> "(" + StringUtils.join(ArrayUtils.subarray(item, 0, xEndIndex), ")-de-(") + ")"));
|
||||||
String extBubbleDataeaseName = ObjectUtils.isNotEmpty(extBubble)?extBubble.get(0).getDataeaseName():"";
|
String extBubbleDataeaseName = ObjectUtils.isNotEmpty(extBubble) ? extBubble.get(0).getDataeaseName() : "";
|
||||||
tableRow.forEach(row -> {
|
tableRow.forEach(row -> {
|
||||||
BigDecimal rowValue = row.get(extBubbleDataeaseName) == null ? BigDecimal.ZERO : new BigDecimal(row.get(extBubbleDataeaseName).toString());
|
BigDecimal rowValue = row.get(extBubbleDataeaseName) == null ? BigDecimal.ZERO : new BigDecimal(row.get(extBubbleDataeaseName).toString());
|
||||||
String key = xAxis.stream().map(x -> String.format(format, row.get(x.getDataeaseName()).toString())).collect(Collectors.joining("-de-"));
|
String key = xAxis.stream().map(x -> String.format(format, row.get(x.getDataeaseName()).toString())).collect(Collectors.joining("-de-"));
|
||||||
@ -1773,16 +1787,16 @@ public class ChartDataBuild {
|
|||||||
Map<String, Object> temp = new HashMap<>();
|
Map<String, Object> temp = new HashMap<>();
|
||||||
for (int i = 0; i < realDetailFields.size(); i++) {
|
for (int i = 0; i < realDetailFields.size(); i++) {
|
||||||
ChartViewFieldDTO realDetailField = realDetailFields.get(i);
|
ChartViewFieldDTO realDetailField = realDetailFields.get(i);
|
||||||
if(StringUtils.equalsIgnoreCase(extBubbleDataeaseName,realDetailField.getDataeaseName())){
|
if (StringUtils.equalsIgnoreCase(extBubbleDataeaseName, realDetailField.getDataeaseName())) {
|
||||||
temp.put(realDetailField.getDataeaseName(), rowValue);
|
temp.put(realDetailField.getDataeaseName(), rowValue);
|
||||||
}else{
|
} else {
|
||||||
temp.put(realDetailField.getDataeaseName(), detailArr[detailIndex + i]);
|
temp.put(realDetailField.getDataeaseName(), detailArr[detailIndex + i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return temp;
|
return temp;
|
||||||
})).collect(Collectors.toList());
|
})).collect(Collectors.toList());
|
||||||
//详情只要一个
|
//详情只要一个
|
||||||
row.put("details", !detailValueMapList.isEmpty() ?Collections.singletonList(detailValueMapList.getFirst()):detailValueMapList);
|
row.put("details", !detailValueMapList.isEmpty() ? Collections.singletonList(detailValueMapList.getFirst()) : detailValueMapList);
|
||||||
});
|
});
|
||||||
// 先过滤掉所有记录数字段
|
// 先过滤掉所有记录数字段
|
||||||
List<ChartViewFieldDTO> filterCountAxis = fields.stream()
|
List<ChartViewFieldDTO> filterCountAxis = fields.stream()
|
||||||
|
Loading…
Reference in New Issue
Block a user