fix(图表): 修复透视表条件样式日期字段动态值无效

This commit is contained in:
wisonic
2026-03-04 19:59:55 +08:00
committed by wisonic-s
parent 81b72175bd
commit 5b38511f7b
4 changed files with 32 additions and 18 deletions

View File

@@ -245,21 +245,25 @@ public class DefaultChartHandler extends AbstractChartPlugin {
return list;
}
protected List<ChartViewFieldDTO> getAssistFields(List<ChartSeniorAssistDTO> list, List<ChartViewFieldDTO> yAxis) {
protected List<ChartViewFieldDTO> getAssistFields(List<ChartSeniorAssistDTO> list, List<ChartViewFieldDTO> axis) {
return getAssistFields(list, axis, SQLConstants.FIELD_ALIAS_Y_PREFIX);
}
protected List<ChartViewFieldDTO> getAssistFields(List<ChartSeniorAssistDTO> list, List<ChartViewFieldDTO> axis, String prefix) {
List<ChartViewFieldDTO> res = new ArrayList<>();
for (ChartSeniorAssistDTO dto : list) {
DatasetTableFieldDTO curField = dto.getCurField();
ChartViewFieldDTO yField = null;
ChartViewFieldDTO targetField = null;
String alias = "";
for (int i = 0; i < yAxis.size(); i++) {
ChartViewFieldDTO field = yAxis.get(i);
for (int i = 0; i < axis.size(); i++) {
ChartViewFieldDTO field = axis.get(i);
if (Objects.equals(field.getId(), curField.getId())) {
yField = field;
alias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
targetField = field;
alias = String.format(prefix, i);
break;
}
}
if (ObjectUtils.isEmpty(yField)) {
if (ObjectUtils.isEmpty(targetField)) {
continue;
}

View File

@@ -3,6 +3,7 @@ package io.dataease.chart.charts.impl.table;
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
import io.dataease.chart.charts.impl.GroupChartHandler;
import io.dataease.constant.DeTypeConstants;
import io.dataease.constant.SQLConstants;
import io.dataease.engine.constant.ExtFieldConstant;
import io.dataease.engine.sql.SQLProvider;
import io.dataease.engine.trans.Dimension2SQLObj;
@@ -44,7 +45,16 @@ public class TablePivotHandler extends GroupChartHandler {
var originSql = result.getQuerySql();
var dynamicAssistFields = getDynamicThresholdFields(view);
var yAxis = formatResult.getAxisMap().get(ChartAxis.yAxis);
var assistFields = getAssistFields(dynamicAssistFields, yAxis);
var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
var dimAxis = new ArrayList<>(xAxis);
var xAxisExt = formatResult.getAxisMap().get(ChartAxis.xAxisExt);
if (xAxisExt != null) {
dimAxis.addAll(xAxisExt);
}
var yAssistFields = getAssistFields(dynamicAssistFields, yAxis);
var assistFields = new ArrayList<>(yAssistFields);
var xAssistFields = getAssistFields(dynamicAssistFields, dimAxis, SQLConstants.FIELD_ALIAS_X_PREFIX);
assistFields.addAll(xAssistFields);
if (CollectionUtils.isNotEmpty(assistFields)) {
var req = new DatasourceRequest();
req.setIsCross(crossDs);

View File

@@ -425,7 +425,7 @@ onMounted(() => {
/>
</el-select>
</el-col>
<el-col :span="12" style="display: flex; align-items: center">
<el-col :offset="1" :span="11" style="display: flex; align-items: center">
<el-radio-group
class="icon-radio-group"
v-model="alignConfig.align"

View File

@@ -726,7 +726,7 @@ export function getConditions(chart: Chart) {
for (let i = 0; i < conditions.length; i++) {
const fieldItem = conditions[i]
if (!fieldItem.conditions) continue;
for (let j = 0; j < fieldItem.conditions.length; j++) {
const rule = fieldItem.conditions[j]
let targets = []
@@ -775,7 +775,7 @@ export function getConditions(chart: Chart) {
if (rowData?.id && rowData?.field === rowData.id) {
return null
}
return {
fill: mappingColor(value, defaultValueColor, rules, 'color', filedValueMap, rowData)
}
@@ -811,7 +811,7 @@ export function getConditions(chart: Chart) {
export function mappingColor(value, defaultColor, rules, type, filedValueMap?, rowData?) {
let color = null
// If called from old code (rules is a single field object), adapt it
if (rules && !Array.isArray(rules) && rules.conditions) {
const field = rules;
@@ -823,12 +823,12 @@ export function mappingColor(value, defaultColor, rules, type, filedValueMap?, r
let flag = false
const t = rule
let tv, max, min
let checkValue = value;
if (sourceField.dataeaseName && rowData) {
checkValue = rowData[sourceField.dataeaseName];
if (sourceField.dataeaseName && rowData?.[sourceField.dataeaseName]) {
checkValue = rowData[sourceField.dataeaseName]
}
if (t.type === 'dynamic') {
if (t.term === 'between') {
max = parseFloat(getValue(t.dynamicMaxField, filedValueMap, rowData))
@@ -844,7 +844,7 @@ export function mappingColor(value, defaultColor, rules, type, filedValueMap?, r
tv = t.value
}
}
const val = checkValue;
if (sourceField.deType === 2 || sourceField.deType === 3 || sourceField.deType === 4) {
@@ -1012,7 +1012,7 @@ export function mappingColor(value, defaultColor, rules, type, filedValueMap?, r
}
}
}
if (!color) {
color = defaultColor;
}