diff --git a/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java b/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java index b748b624d9..5b93d472d3 100644 --- a/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java +++ b/backend/src/main/java/io/dataease/dto/chart/ChartViewFieldDTO.java @@ -27,4 +27,6 @@ public class ChartViewFieldDTO { private Integer deType; private String summary; + + private String sort; } diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 3d66198fc0..2f3341a1b1 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -160,6 +160,20 @@ public class ChartViewService { // TODO 字段汇总 排序等 String[] field = yAxis.stream().map(y -> "CAST(" + y.getSummary() + "(" + y.getOriginName() + ") AS DECIMAL(20,2)) AS _" + y.getSummary() + "_" + y.getOriginName()).toArray(String[]::new); String[] group = xAxis.stream().map(ChartViewFieldDTO::getOriginName).toArray(String[]::new); - return MessageFormat.format("SELECT {0},{1} FROM {2} GROUP BY {3}", StringUtils.join(group, ","), StringUtils.join(field, ","), table, StringUtils.join(group, ",")); + String[] order = yAxis.stream().filter(y -> StringUtils.isNotEmpty(y.getSort()) && !StringUtils.equalsIgnoreCase(y.getSort(), "none")) + .map(y -> "_" + y.getSummary() + "_" + y.getOriginName() + " " + y.getSort()).toArray(String[]::new); + + String sql = MessageFormat.format("SELECT {0},{1} FROM {2} WHERE 1=1 {3} GROUP BY {4} ORDER BY null,{5}", + StringUtils.join(group, ","), + StringUtils.join(field, ","), + table, + "", + StringUtils.join(group, ","), + StringUtils.join(order, ",")); + if (sql.endsWith(",")) { + sql = sql.substring(0, sql.length() - 1); + } + // 如果是对结果字段过滤,则再包裹一层sql + return sql; } } diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 8f35fa2549..235154e72a 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -673,7 +673,13 @@ export default { position: '位置', rotate: '角度', name: '名称', - icon: '图标' + icon: '图标', + trigger_position: '触发位置', + asc: '升序', + desc: '降序', + sort: '排序', + filter: '过滤', + none: '无' }, dataset: { datalist: '数据集', diff --git a/frontend/src/views/chart/chart/chart.js b/frontend/src/views/chart/chart/chart.js index 06703dd01c..1d5df1b4ee 100644 --- a/frontend/src/views/chart/chart/chart.js +++ b/frontend/src/views/chart/chart/chart.js @@ -58,7 +58,8 @@ export const DEFAULT_XAXIS_STYLE = { position: 'bottom', name: '', axisLabel: { - rotate: 0 + rotate: 0, + formatter: '{value}' } } export const DEFAULT_YAXIS_STYLE = { @@ -66,7 +67,8 @@ export const DEFAULT_YAXIS_STYLE = { position: 'left', name: '', axisLabel: { - rotate: 0 + rotate: 0, + formatter: '{value}' } } // chart config diff --git a/frontend/src/views/chart/components/QuotaItem.vue b/frontend/src/views/chart/components/QuotaItem.vue index 08af376fc3..8cdaab0ad8 100644 --- a/frontend/src/views/chart/components/QuotaItem.vue +++ b/frontend/src/views/chart/components/QuotaItem.vue @@ -6,10 +6,15 @@ {{ item.name }}{{ $t('chart.'+item.summary) }} - - - - {{ $t('chart.summary') }}({{ $t('chart.'+item.summary) }}) + + + + + + {{ $t('chart.summary') }} + ({{ $t('chart.'+item.summary) }}) + + {{ $t('chart.sum') }} @@ -22,16 +27,41 @@ - - - - {{ $t('chart.quick_calc') }}(无) + + + + + + {{ $t('chart.quick_calc') }} + (无) + + + + + + + + {{ $t('chart.sort') }} + ({{ $t('chart.'+item.sort) }}) + + + + + {{ $t('chart.none') }} + {{ $t('chart.asc') }} + {{ $t('chart.desc') }} + + + + + {{ $t('chart.filter') }}... + {{ $t('chart.show_name_set') }} @@ -45,7 +75,7 @@ - +