From 63ff298d49e861d705e0d55541b528b9038b9682 Mon Sep 17 00:00:00 2001 From: Du YinHong <1836695061@qq.com> Date: Mon, 24 Aug 2026 14:25:59 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A6=82=E6=9E=9C=E5=88=AB=E5=90=8D=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=EF=BC=8C=E8=A7=A3=E6=9E=90=E5=AD=97=E6=AE=B5=E6=89=80?= =?UTF-8?q?=E5=B1=9E=E5=AE=9E=E4=BD=93=E8=A1=A8=E5=90=8D=E4=BD=9C=E4=B8=BA?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=89=8D=E7=BC=80=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E5=90=8C=E5=90=8D=E5=88=97=E6=AD=A7=E4=B9=89=202.=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E8=BD=AC=E6=8D=A2=E6=97=B6=E5=BC=95=E7=94=A8qualified?= =?UTF-8?q?Column=EF=BC=8C=E9=81=BF=E5=85=8D@TableField/@TableId=20?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=88=97=E5=90=8D=E3=80=81=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E5=91=BD=E5=90=8D=E7=AD=96=E7=95=A5=E5=92=8C=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E5=AD=97=E8=BD=AC=E4=B9=89=E8=A2=AB=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=203.=E5=AD=97=E5=85=B8=E7=BF=BB=E8=AF=91=E6=97=B6=E6=96=B0?= =?UTF-8?q?=E5=A2=9EconvertToString=EF=BC=8C=E6=A0=B9=E6=8D=AE=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E8=BF=94=E5=9B=9E=E5=AF=B9=E5=BA=94=E7=9A=84String?= =?UTF-8?q?=E5=80=BC=EF=BC=8C=E9=98=B2=E6=AD=A2=E6=8A=9B=E5=87=BA=20NullPo?= =?UTF-8?q?interException=E3=80=81=E7=A7=91=E5=AD=A6=E8=AE=A1=E6=95=B0?= =?UTF-8?q?=E6=B3=95=E3=80=81=E5=B0=BE=E9=9A=8F=E9=9B=B6=E7=AD=89=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/StringUtils.java | 2 -- .../core/query/LambdaJoinQueryBuilder.java | 15 ++++++--- .../core/impl/DictTypeTranslationImpl.java | 31 +++++++++++++++++-- 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java index 1a23802b3..acffb78d4 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java @@ -25,8 +25,6 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { public static final String COLON = ":"; - public static final String DOT = "."; - private static final AntPathMatcher ANT_PATH_MATCHER = new AntPathMatcher(); @Deprecated diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaJoinQueryBuilder.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaJoinQueryBuilder.java index 48eaff16c..d3a082077 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaJoinQueryBuilder.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/query/LambdaJoinQueryBuilder.java @@ -1,6 +1,8 @@ package org.dromara.common.mybatis.core.query; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.github.yulichang.toolkit.LambdaUtils; @@ -73,11 +75,16 @@ public final class LambdaJoinQueryBuilder { return this; } for (SFunction column : columns) { - String columnUnder = StringUtils.toUnderScoreCase(LambdaUtils.getName(column)); - if (StringUtils.isNotBlank(alias)) { - columnUnder = alias + StringUtils.DOT + columnUnder; + // 无别名时,解析字段所属实体表名作为默认前缀,避免同名列歧义 + String effectiveAlias = alias; + if (StringUtils.isBlank(effectiveAlias)) { + Class entityClass = LambdaUtils.getEntityClass(column); + TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); + if (tableInfo != null) { + effectiveAlias = tableInfo.getTableName(); + } } - wrapper.groupBy(columnUnder); + wrapper.groupBy(qualifiedColumn(effectiveAlias, column)); } return this; } diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java index 4162e7e3e..c41dcb81e 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java @@ -8,6 +8,7 @@ import org.dromara.common.translation.annotation.TranslationType; import org.dromara.common.translation.constant.TransConstant; import org.dromara.common.translation.core.TranslationInterface; +import java.math.BigDecimal; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.Map; @@ -33,7 +34,8 @@ public class DictTypeTranslationImpl implements TranslationInterface { */ @Override public String translation(Object key, String other) { - if (key.toString() instanceof String dictValue && StringUtils.isNotBlank(other)) { + if (StringUtils.isNotBlank(other)) { + String dictValue = convertToString(key); return dictService.getDictLabel(other, dictValue); } return null; @@ -54,7 +56,8 @@ public class DictTypeTranslationImpl implements TranslationInterface { Map dictMap = dictService.getAllDictByDictType(other); Map result = new LinkedHashMap<>(keys.size()); for (Object key : keys) { - if (key.toString() instanceof String dictValue) { + String dictValue = convertToString(key); + if (dictValue != null) { result.put(key, StreamUtils.join( StreamUtils.filter(Arrays.asList(dictValue.split(",")), StringUtils::isNotBlank), value -> dictMap.get(value.trim()) @@ -63,4 +66,28 @@ public class DictTypeTranslationImpl implements TranslationInterface { } return result; } + + /** + * 类型转换为String + * @param key 转换对象 + * @return string值 + */ + private String convertToString(Object key) { + if (key instanceof String s) { + return s; + } else if (key == null) { + return null; + } else if (key instanceof BigDecimal bd) { + // 规范化数值 + return bd.stripTrailingZeros().toPlainString(); + } else if (key instanceof Integer || key instanceof Long || key instanceof Short || key instanceof Byte) { + return key.toString(); + } else if (key instanceof Double || key instanceof Float) { + // 浮点也用 BigDecimal 规范化 + return new BigDecimal(key.toString()).stripTrailingZeros().toPlainString(); + } else { + // 其他类型按需处理,或干脆返回 null + return key.toString(); + } + } }