diff --git a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java index ab2f8c7421..92e28d46cd 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java +++ b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java @@ -120,6 +120,11 @@ public class ChartDataServer implements ChartDataApi { TypeReference> listTypeReference = new TypeReference>() { }; viewDTO.setXAxis(JsonUtil.parseList(JsonUtil.toJSONString(sourceFields).toString(), listTypeReference)); + viewDTO.getXAxis().forEach(x -> { + if (x.getOrderChecked()) { + x.setSort("asc"); + } + }); } int curLimit = Math.toIntExact(ExportCenterUtils.getExportLimit("view")); int curDsLimit = Math.toIntExact(ExportCenterUtils.getExportLimit("dataset")); @@ -833,10 +838,12 @@ public class ChartDataServer implements ChartDataApi { } @DeLog(id = "#p0", ot = LogOT.EXPORT, st = LogST.PANEL) - public void exportPanelViewLog(Long id) {} + public void exportPanelViewLog(Long id) { + } @DeLog(id = "#p0", ot = LogOT.EXPORT, st = LogST.SCREEN) - public void exportScreenViewLog(Long id) {} + public void exportScreenViewLog(Long id) { + } } diff --git a/core/core-backend/src/main/java/io/dataease/dataset/dao/auto/entity/CoreDatasetTableField.java b/core/core-backend/src/main/java/io/dataease/dataset/dao/auto/entity/CoreDatasetTableField.java index b1c0654765..636ef712d1 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/dao/auto/entity/CoreDatasetTableField.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/dao/auto/entity/CoreDatasetTableField.java @@ -9,7 +9,7 @@ import java.io.Serializable; *

* * @author fit2cloud - * @since 2025-02-06 + * @since 2025-11-26 */ @TableName("core_dataset_table_field") public class CoreDatasetTableField implements Serializable { @@ -141,6 +141,11 @@ public class CoreDatasetTableField implements Serializable { */ private String params; + /** + * 是否排序 + */ + private Boolean orderChecked; + public Long getId() { return id; } @@ -341,6 +346,14 @@ public class CoreDatasetTableField implements Serializable { this.params = params; } + public Boolean getOrderChecked() { + return orderChecked; + } + + public void setOrderChecked(Boolean orderChecked) { + this.orderChecked = orderChecked; + } + @Override public String toString() { return "CoreDatasetTableField{" + @@ -369,6 +382,7 @@ public class CoreDatasetTableField implements Serializable { ", dateFormat = " + dateFormat + ", dateFormatType = " + dateFormatType + ", params = " + params + + ", orderChecked = " + orderChecked + "}"; } } diff --git a/core/core-backend/src/main/java/io/dataease/dataset/dao/auto/mapper/CoreDatasetTableFieldMapper.java b/core/core-backend/src/main/java/io/dataease/dataset/dao/auto/mapper/CoreDatasetTableFieldMapper.java index 16d3de3b8c..702ea1c0ab 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/dao/auto/mapper/CoreDatasetTableFieldMapper.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/dao/auto/mapper/CoreDatasetTableFieldMapper.java @@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper; *

* * @author fit2cloud - * @since 2025-02-06 + * @since 2025-11-26 */ @Mapper public interface CoreDatasetTableFieldMapper extends BaseMapper { diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/DatasetOrder2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/DatasetOrder2SQLObj.java new file mode 100644 index 0000000000..3a12f36829 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/DatasetOrder2SQLObj.java @@ -0,0 +1,43 @@ +package io.dataease.engine.trans; + +import io.dataease.api.chart.dto.DeSortField; +import io.dataease.constant.SQLConstants; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.model.SQLMeta; +import io.dataease.extensions.datasource.model.SQLObj; +import org.apache.commons.lang3.ObjectUtils; + +import java.util.*; + +/** + * @Author Junjun + */ +public class DatasetOrder2SQLObj { + + public static void getOrders(SQLMeta meta, List sortFields, List originFields) { + SQLObj tableObj = meta.getTable(); + List xOrders = meta.getXOrders() == null ? new ArrayList<>() : meta.getXOrders(); + if (ObjectUtils.isEmpty(tableObj)) { + return; + } + if (ObjectUtils.isNotEmpty(sortFields)) { + for (int i = 0; i < sortFields.size(); i++) { + DeSortField deSortField = sortFields.get(i); + for (int j = 0; j < originFields.size(); j++) { + if (deSortField.getId().equals(originFields.get(j).getId())) { + String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i); + SQLObj order = SQLObj.builder() + .orderField(String.format(SQLConstants.FIELD_DOT, fieldAlias)) + .orderAlias(String.format(SQLConstants.FIELD_DOT, fieldAlias)) + .orderDirection(deSortField.getOrderDirection()).build(); + xOrders.add(order); + } + } + + + } + meta.setXOrders(xOrders); + } + } + +} diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java index 579b37dd63..08a44ad631 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java @@ -152,6 +152,7 @@ public class Field2SQLObj { return SQLObj.builder() .fieldName(fieldName) .fieldAlias(fieldAlias) + .id(f.getId()) .build(); } diff --git a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterDownLoadManage.java b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterDownLoadManage.java index 11f4b1b1f9..eb9db8ac66 100644 --- a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterDownLoadManage.java +++ b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterDownLoadManage.java @@ -2,6 +2,7 @@ package io.dataease.exportCenter.manage; import com.fasterxml.jackson.core.type.TypeReference; +import io.dataease.api.chart.dto.DeSortField; import io.dataease.api.chart.dto.ViewDetailField; import io.dataease.api.chart.request.ChartExcelRequest; import io.dataease.api.chart.request.ChartExcelRequestInner; @@ -24,10 +25,7 @@ import io.dataease.dataset.dao.auto.mapper.CoreDatasetGroupMapper; import io.dataease.dataset.manage.*; import io.dataease.datasource.utils.DatasourceUtils; import io.dataease.engine.sql.SQLProvider; -import io.dataease.engine.trans.Field2SQLObj; -import io.dataease.engine.trans.Order2SQLObj; -import io.dataease.engine.trans.Table2SQLObj; -import io.dataease.engine.trans.WhereTree2Str; +import io.dataease.engine.trans.*; import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; import io.dataease.exportCenter.dao.auto.entity.CoreExportTask; @@ -283,7 +281,17 @@ public class ExportCenterDownLoadManage { Table2SQLObj.table2sqlobj(sqlMeta, null, "(" + sql + ")", crossDs); Field2SQLObj.field2sqlObj(sqlMeta, allFields, allFields, crossDs, dsMap, Utils.getParams(allFields), null, pluginManage); WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap, Utils.getParams(allFields), null, pluginManage); - Order2SQLObj.getOrders(sqlMeta, dto.getSortFields(), allFields, crossDs, dsMap, Utils.getParams(allFields), null, pluginManage); + List sortFields = new ArrayList<>(); + for (DatasetTableFieldDTO field : allFields) { + if (field.getOrderChecked()) { + DeSortField sortField = new DeSortField(); + BeanUtils.copyBean(sortField, field); + sortField.setOrderDirection("asc"); + sortFields.add(sortField); + } + } + dto.setSortFields(sortFields); + DatasetOrder2SQLObj.getOrders(sqlMeta, dto.getSortFields(), allFields); String replaceSql = provider.rebuildSQL(SQLProvider.createQuerySQL(sqlMeta, false, false, false), sqlMeta, crossDs, dsMap); Long totalCount = datasetDataManage.getDatasetTotal(dto, replaceSql, null); Long curLimit = ExportCenterUtils.getExportLimit("dataset"); diff --git a/core/core-backend/src/main/resources/db/migration/V2.10.18__ddl.sql b/core/core-backend/src/main/resources/db/migration/V2.10.18__ddl.sql new file mode 100644 index 0000000000..fef9d3afa7 --- /dev/null +++ b/core/core-backend/src/main/resources/db/migration/V2.10.18__ddl.sql @@ -0,0 +1,2 @@ +alter table `core_dataset_table_field` + add `order_checked` tinyint(1) default 0 null comment '是否排序'; diff --git a/core/core-frontend/src/views/visualized/data/dataset/form/index.vue b/core/core-frontend/src/views/visualized/data/dataset/form/index.vue index 43ff3b9029..69f11d2489 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/form/index.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/form/index.vue @@ -2215,6 +2215,12 @@ const getIconNameCalc = (deType, extField, dimension = false) => { + + + + + + + +