20260923165454

This commit is contained in:
oneao committed 2026-09-23 16:54:54 +08:00
1 parent 0abe3706c8
commit e6935b8fa4
173 files changed
+14975 -2295

No files matched your search

@@ -24,6 +24,7 @@ import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
@@ -325,13 +326,21 @@ public class ExportService {
: requestedOrderBy.trim();
if (orderBy == null || orderBy.isBlank()) {
orderBy = schema.keyField() == null ? null : schema.keyField() + " ASC";
} else if (schema.keyField() != null) {
} else if (schema.keyField() != null && !sortsBy(orderBy, schema.keyField())) {
// 相同排序值以主键打破平局,明细、区间合计与各卷使用同一行顺序。
// 排序子句里已经有主键时不能再追加:同一列出现两次,SQL Server 会直接报错。
orderBy += ", " + schema.keyField() + " ASC";
}
return orderBy == null ? null : dbUtils.buildSafeOrderBy(orderBy);
}
/** 排序子句是否已经排过该列(取每段的首个词,忽略 ASC/DESC) */
private boolean sortsBy(String orderBy, String field) {
return Arrays.stream(orderBy.split(","))
.map(part -> part.trim().split("\\s+")[0])
.anyMatch(name -> name.equalsIgnoreCase(field));
}
String buildSelectSql(
ExportSchema schema,
List<ExportColumn> columns,