diff --git a/backend/src/main/java/com/ipsos/provider/mysql/MysqlQueryProvider.java b/backend/src/main/java/com/ipsos/provider/mysql/MysqlQueryProvider.java index d4e4cf7..01841ce 100644 --- a/backend/src/main/java/com/ipsos/provider/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/com/ipsos/provider/mysql/MysqlQueryProvider.java @@ -222,7 +222,7 @@ public class MysqlQueryProvider extends QueryProvider { } String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i); // 处理纵轴字段 - yFields.add(getYFields(y, originField, fieldAlias)); + yFields.add(getYFields(y, originField, fieldAlias, table)); // 处理纵轴过滤 yWheres.addAll(getYWheres(y, originField, fieldAlias)); // 处理纵轴排序 @@ -976,7 +976,7 @@ public class MysqlQueryProvider extends QueryProvider { return list; } - private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias) { + private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias, String tableName) { String fieldName = ""; if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) { fieldName = MySQLConstants.AGG_COUNT; @@ -987,6 +987,8 @@ public class MysqlQueryProvider extends QueryProvider { String cast = String.format(MySQLConstants.CAST, originField, y.getDeType() == 2 ? MySQLConstants.DEFAULT_INT_FORMAT : MySQLConstants.DEFAULT_FLOAT_FORMAT); String agg = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), cast); fieldName = String.format(MySQLConstants.CAST, agg, MySQLConstants.DEFAULT_FLOAT_FORMAT); + } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "ratio")) { + fieldName = "sum(" + originField + ")/(SELECT sum(" + y.getOriginName() + ") FROM " + tableName + ")*100"; } else { String cast = String.format(MySQLConstants.CAST, originField, y.getDeType() == 2 ? MySQLConstants.DEFAULT_INT_FORMAT : MySQLConstants.DEFAULT_FLOAT_FORMAT); fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), cast); @@ -997,6 +999,9 @@ public class MysqlQueryProvider extends QueryProvider { .fieldAlias(fieldAlias) .build(); } + private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias) { + return this.getYFields(y, originField, fieldAlias, null); + } private List getYWheres(ChartViewFieldDTO y, String originField, String fieldAlias) { List list = new ArrayList<>(); diff --git a/data/ehcache/users_info.data b/data/ehcache/users_info.data index cb78739..ae933d1 100644 Binary files a/data/ehcache/users_info.data and b/data/ehcache/users_info.data differ diff --git a/data/ehcache/users_info.index b/data/ehcache/users_info.index index 71e995c..a6d7c47 100644 Binary files a/data/ehcache/users_info.index and b/data/ehcache/users_info.index differ diff --git a/data/ehcache/users_permissions_info.data b/data/ehcache/users_permissions_info.data index 5a04321..71bb4c2 100644 Binary files a/data/ehcache/users_permissions_info.data and b/data/ehcache/users_permissions_info.data differ diff --git a/data/ehcache/users_permissions_info.index b/data/ehcache/users_permissions_info.index index b9e45cd..3a2f7a0 100644 Binary files a/data/ehcache/users_permissions_info.index and b/data/ehcache/users_permissions_info.index differ diff --git a/data/ehcache/users_roles_info.data b/data/ehcache/users_roles_info.data index 434d9a1..a97a73e 100644 Binary files a/data/ehcache/users_roles_info.data and b/data/ehcache/users_roles_info.data differ diff --git a/data/ehcache/users_roles_info.index b/data/ehcache/users_roles_info.index index d7719b6..8489806 100644 Binary files a/data/ehcache/users_roles_info.index and b/data/ehcache/users_roles_info.index differ diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 8720f15..93c94ac 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -672,6 +672,7 @@ export default { min: '最小值', stddev_pop: '标准差', var_pop: '方差', + ratio: '百分比', quick_calc: '快速计算', show_name_set: '显示名设置', color: '颜色', diff --git a/frontend/src/views/chart/components/drag-item/ChartDragItem.vue b/frontend/src/views/chart/components/drag-item/ChartDragItem.vue index 7276b28..957b148 100644 --- a/frontend/src/views/chart/components/drag-item/ChartDragItem.vue +++ b/frontend/src/views/chart/components/drag-item/ChartDragItem.vue @@ -40,7 +40,7 @@ {{ item.name }} {{ - $t("chart." + item.summary) + $t('chart.' + item.summary) }} @@ -86,7 +86,7 @@ item.name }} {{ - $t("chart." + item.summary) + $t('chart.' + item.summary) }} - {{ $t("chart.summary") }} - ({{ $t("chart." + item.summary) }}) + {{ $t('chart.summary') }} + ({{ $t('chart.' + item.summary) }}) @@ -115,66 +115,59 @@ {{ $t("chart.count") }} + >{{ $t('chart.count') }} {{ $t("chart.sum") }} + >{{ $t('chart.sum') }} {{ $t("chart.avg") }} + >{{ $t('chart.avg') }} {{ $t("chart.max") }} + >{{ $t('chart.max') }} {{ $t("chart.min") }} + >{{ $t('chart.min') }} {{ $t("chart.stddev_pop") }} + >{{ $t('chart.stddev_pop') }} {{ $t("chart.var_pop") }} + >{{ $t('chart.var_pop') }} @@ -189,31 +182,31 @@ - {{ $t("chart.dateStyle") }} - ({{ $t("chart." + item.dateStyle) }}) + {{ $t('chart.dateStyle') }} + ({{ $t('chart.' + item.dateStyle) }}) {{ - $t("chart.y") + $t('chart.y') }} {{ - $t("chart.y_M") + $t('chart.y_M') }} {{ - $t("chart.y_M_d") + $t('chart.y_M_d') }} {{ - $t("chart.H_m_s") + $t('chart.H_m_s') }} {{ - $t("chart.y_M_d_H_m") + $t('chart.y_M_d_H_m') }} {{ - $t("chart.y_M_d_H_m_s") + $t('chart.y_M_d_H_m_s') }} @@ -228,20 +221,20 @@ - {{ $t("chart.datePattern") }} - ({{ $t("chart." + item.datePattern) }}) + {{ $t('chart.datePattern') }} + ({{ $t('chart.' + item.datePattern) }}) - {{ $t("chart.date_sub") }}(1990-01-01) - {{ $t("chart.date_split") }}(1990/01/01) + {{ $t('chart.date_sub') }}(1990-01-01) + {{ $t('chart.date_split') }}(1990/01/01) @@ -259,22 +252,22 @@ - {{ $t("chart.sort") }} - ({{ $t("chart." + item.sort) }}) + {{ $t('chart.sort') }} + ({{ $t('chart.' + item.sort) }}) {{ - $t("chart.none") + $t('chart.none') }} {{ - $t("chart.asc") + $t('chart.asc') }} {{ - $t("chart.desc") + $t('chart.desc') }} @@ -284,7 +277,7 @@ divided :command="beforeClickItem('remove')" > - {{ $t("chart.delete") }} + {{ $t('chart.delete') }} @@ -294,94 +287,94 @@