fix(图表): 仪表盘在动态字段中除数值、数值小数字段以外其他字段类型汇总方式为计数

This commit is contained in:
jianneng-fit2cloud
2025-04-14 09:41:27 +08:00
committed by jianneng-fit2cloud
parent 2b70b3f276
commit 2f00ad4beb
3 changed files with 57 additions and 37 deletions

View File

@@ -21,6 +21,8 @@ import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class NumericalChartHandler extends DefaultChartHandler {
@Override
@@ -67,15 +69,18 @@ public class NumericalChartHandler extends DefaultChartHandler {
String summary = (String) maxField.get("summary");
DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(id);
if (ObjectUtils.isNotEmpty(datasetTableField)) {
if (datasetTableField.getDeType() == 0 || datasetTableField.getDeType() == 1 || datasetTableField.getDeType() == 5) {
if (!StringUtils.containsIgnoreCase(summary, "count")) {
DEException.throwException(Translator.get("i18n_gauge_field_change"));
}
boolean isText = datasetTableField.getDeType() == 0 || datasetTableField.getDeType() == 1 || datasetTableField.getDeType() == 5;
if (isText && !StringUtils.containsIgnoreCase(summary, "count")) {
DEException.throwException(Translator.get("i18n_gauge_field_change"));
}
ChartViewFieldDTO dto = new ChartViewFieldDTO();
BeanUtils.copyBean(dto, datasetTableField);
// 计算字段不支持汇总操作
dto.setSummary(dto.getExtField() == 2 ? "" : summary);
// 文本类型的计算字段时判断originName是否包含表达式如果包含这里取消汇总后续sql中会有默认表达式count,否则将会套一层count导致报错
if (isText) {
String textSummary = (dto.getExtField() == 2 && StringUtils.isNotEmpty(dto.getOriginName()) &&
Pattern.compile("^(.*?)\\(\\[").matcher(dto.getOriginName()).find()) ? "" : "count";
dto.setSummary(textSummary);
}
return dto;
} else {
DEException.throwException(Translator.get("i18n_gauge_field_delete"));