From 74494f0f99ec6643bcce9c683284c68bf3987172 Mon Sep 17 00:00:00 2001
From: taojinlong
Date: Thu, 27 Nov 2025 11:58:15 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E3=80=90=E6=95=B0=E6=8D=AE=E9=9B=86?=
=?UTF-8?q?=E3=80=91=E6=95=B0=E6=8D=AE=E9=9B=86=E5=A2=9E=E5=8A=A0=E6=8E=92?=
=?UTF-8?q?=E5=BA=8F=E5=AD=97=E6=AE=B5=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=AF=BC?=
=?UTF-8?q?=E5=87=BA=E6=8E=92=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../chart/server/ChartDataServer.java | 11 ++++-
.../auto/entity/CoreDatasetTableField.java | 16 ++++++-
.../mapper/CoreDatasetTableFieldMapper.java | 2 +-
.../engine/trans/DatasetOrder2SQLObj.java | 43 +++++++++++++++++++
.../dataease/engine/trans/Field2SQLObj.java | 1 +
.../manage/ExportCenterDownLoadManage.java | 18 +++++---
.../resources/db/migration/V2.10.18__ddl.sql | 2 +
.../visualized/data/dataset/form/index.vue | 12 ++++++
.../datasource/dto/DatasetTableFieldDTO.java | 3 ++
9 files changed, 99 insertions(+), 9 deletions(-)
create mode 100644 core/core-backend/src/main/java/io/dataease/engine/trans/DatasetOrder2SQLObj.java
create mode 100644 core/core-backend/src/main/resources/db/migration/V2.10.18__ddl.sql
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) => {
+
+
+
+
+
+
{
+
+
+
+
+
+