From a378533ef7eb7b71c9a864fff9ae2dc02359eff3 Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Wed, 18 Mar 2026 18:05:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E5=B7=A5=E4=BD=8D=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DataAnalysisServiceImpl.java | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/data/src/main/java/com/sdm/data/service/impl/DataAnalysisServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/DataAnalysisServiceImpl.java index 8268cc88..a0255799 100644 --- a/data/src/main/java/com/sdm/data/service/impl/DataAnalysisServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/DataAnalysisServiceImpl.java @@ -372,10 +372,30 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService { return; } - Comparator comparator = Comparator.comparing( - item -> getSortableValue(item, orderBy), - Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER) - ); + Comparator comparator; + if ("createTime".equalsIgnoreCase(orderBy)) { + comparator = Comparator.comparing( + SimulationTaskResultCurveResp::getCreateTime, + Comparator.nullsLast(Comparator.naturalOrder()) + ); + } else if ("formatFileSize".equalsIgnoreCase(orderBy)) { + // 按「字节数」做数值排序 + comparator = Comparator.comparing( + item -> { + if (ObjectUtils.isEmpty(item) || StringUtils.isBlank(item.getFormatFileSize())) { + return null; + } + return FileSizeUtils.parseFileSizeToBytes(item.getFormatFileSize()); + }, + Comparator.nullsLast(Comparator.naturalOrder()) + ); + } else { + // 其他 TAG 字段按字符串字典序排序 + comparator = Comparator.comparing( + item -> getSortableStringValue(item, orderBy), + Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER) + ); + } if ("desc".equalsIgnoreCase(orderType)) { comparator = comparator.reversed(); @@ -384,20 +404,14 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService { data.sort(comparator); } - private String getSortableValue(SimulationTaskResultCurveResp item, String orderBy) { + private String getSortableStringValue(SimulationTaskResultCurveResp item, String orderBy) { if (ObjectUtils.isEmpty(item)) { return null; } - if ("createTime".equalsIgnoreCase(orderBy)) { - return ObjectUtils.isNotEmpty(item.getCreateTime()) ? item.getCreateTime().toString() : null; - } if ("originalName".equalsIgnoreCase(orderBy)) { return item.getOriginalName(); } - if ("formatFileSize".equalsIgnoreCase(orderBy)) { - return String.valueOf(FileSizeUtils.parseFileSizeToBytes(item.getFormatFileSize())); - } TagReq tagReq = item.getTagReq(); if (ObjectUtils.isEmpty(tagReq)) {