diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java index f8e0c1ca9f..c46495afce 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java @@ -200,6 +200,7 @@ public class DataSetTableFieldController { } List list = results.stream().distinct().collect(Collectors.toList()); + list = dataSetFieldService.chineseSort(list, multFieldValuesRequest.getSort()); return list; } @@ -246,7 +247,7 @@ public class DataSetTableFieldController { @DePermission(type = DePermissionType.DATASET) @ApiOperation("时间格式") @PostMapping("dateformats/{tableId}") - public List dateformats(@PathVariable String tableId) throws Exception{ + public List dateformats(@PathVariable String tableId) throws Exception { DatasetTable datasetTable = dataSetTableService.get(tableId); Datasource ds = datasetTable.getMode() == 0 ? datasourceService.get(datasetTable.getDataSourceId()) : engineService.getDeEngine(); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetFieldService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetFieldService.java index b73cf5b5f3..df8e1e5b02 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetFieldService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetFieldService.java @@ -1,8 +1,6 @@ package io.dataease.service.dataset; - - import io.dataease.dto.dataset.DeSortDTO; import java.util.List; @@ -14,4 +12,6 @@ public interface DataSetFieldService { List fieldValues(String fieldId, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception; List fieldValues(List fieldIds, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm) throws Exception; + + List chineseSort(List list, DeSortDTO sortDTO) throws Exception; } diff --git a/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java index da93d0a65e..4ad4eb61e4 100644 --- a/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java +++ b/backend/src/main/java/io/dataease/service/dataset/impl/direct/DirectFieldService.java @@ -1,5 +1,6 @@ package io.dataease.service.dataset.impl.direct; +import cn.hutool.core.collection.CollectionUtil; import com.google.gson.Gson; import io.dataease.commons.exception.DEException; import io.dataease.commons.model.BaseTreeNode; @@ -32,6 +33,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.text.Collator; import java.util.*; import java.util.stream.Collectors; @@ -77,6 +79,26 @@ public class DirectFieldService implements DataSetFieldService { }).collect(Collectors.toList()); } + @Override + public List chineseSort(List list, DeSortDTO sortDTO) throws Exception { + if (ObjectUtils.isEmpty(sortDTO) || CollectionUtil.isEmpty(list)) return list; + String sort = sortDTO.getSort(); + if (!StringUtils.equals(sort, "chinese")) { + return list; + } + String id = sortDTO.getId(); + String sortStr = StringUtils.equalsIgnoreCase("chineseDesc", id) ? "desc" : "asc"; + List result = CollectionUtil.sort(list, (v1, v2) -> { + Collator instance = Collator.getInstance(Locale.CHINESE); + if (StringUtils.equals("desc", sortStr)) { + return instance.compare(v2, v1); + } + return instance.compare(v1, v2); + }); + + return result; + } + @Override public List fieldValues(List fieldIds, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm) throws Exception { String fieldId = fieldIds.get(0); @@ -146,7 +168,7 @@ public class DirectFieldService implements DataSetFieldService { datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), permissionFields, !needSort, ds, customFilter, rowPermissionsTree, deSortFields)); } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.toString())) { String sql = dataTableInfoDTO.getSql(); - if(dataTableInfoDTO.isBase64Encryption()){ + if (dataTableInfoDTO.isBase64Encryption()) { sql = new String(java.util.Base64.getDecoder().decode(sql)); } sql = dataSetTableService.removeVariables(sql, ds.getType()); diff --git a/frontend/src/components/widget/serviceImpl/TextSelectGridServiceImpl.js b/frontend/src/components/widget/serviceImpl/TextSelectGridServiceImpl.js index 2a04dbc96b..d80dc1c4c0 100644 --- a/frontend/src/components/widget/serviceImpl/TextSelectGridServiceImpl.js +++ b/frontend/src/components/widget/serviceImpl/TextSelectGridServiceImpl.js @@ -99,6 +99,9 @@ class TextSelectGridServiceImpl extends WidgetService { isCustomSortWidget() { return true } + isChinesSortWidget() { + return true + } fillValueDerfault(element) { const defaultV = element.options.value === null ? '' : element.options.value.toString() if (element.options.attrs.multiple) { diff --git a/frontend/src/components/widget/serviceImpl/TextSelectServiceImpl.js b/frontend/src/components/widget/serviceImpl/TextSelectServiceImpl.js index 2a28a2d658..3d052e2823 100644 --- a/frontend/src/components/widget/serviceImpl/TextSelectServiceImpl.js +++ b/frontend/src/components/widget/serviceImpl/TextSelectServiceImpl.js @@ -105,7 +105,9 @@ class TextSelectServiceImpl extends WidgetService { isParamWidget() { return true } - + isChinesSortWidget() { + return true + } fillValueDerfault(element) { const defaultV = element.options.value === null ? '' : element.options.value.toString() if (element.options.attrs.multiple) { diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 5dff1fa5ac..ac436f358b 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -931,6 +931,7 @@ export default { password_input_error: 'Original password input error' }, chart: { + chinese: 'Chinese', mark_field: 'Field', mark_value: 'Value', function_style: 'Function style', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 3e3e610b44..04b53e0a1a 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -930,6 +930,7 @@ export default { password_input_error: '原始密碼輸入錯誤' }, chart: { + chinese: '中文', mark_field: '字段', mark_value: '值', function_style: '功能型樣式', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 7a5a527244..343469f9ef 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -929,6 +929,7 @@ export default { password_input_error: '原始密码输入错误' }, chart: { + chinese: '中文', mark_field: '字段', mark_value: '值', function_style: '功能型样式', diff --git a/frontend/src/views/panel/filter/filterMain/FilterSort.vue b/frontend/src/views/panel/filter/filterMain/FilterSort.vue index ede0f604cd..45b22b7ed0 100644 --- a/frontend/src/views/panel/filter/filterMain/FilterSort.vue +++ b/frontend/src/views/panel/filter/filterMain/FilterSort.vue @@ -94,6 +94,43 @@ + + + + {{ $t('chart.chinese') }} + + + + +
    +
  • + {{ node.name }} +
  • +
+
+
+