From 4500a0b9b65d97e65862f6e43816dc4f37c720e6 Mon Sep 17 00:00:00 2001 From: Du YinHong <1836695061@qq.com> Date: Mon, 24 Aug 2026 10:42:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=9B=AE=E7=9A=84=20?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=86=E4=BB=80=E4=B9=88=E9=97=AE=E9=A2=98?= =?UTF-8?q?(=E8=AF=B7=E6=8F=90=E4=BA=A4=E5=88=B0dev=E5=88=86=E6=94=AF)=201?= =?UTF-8?q?.DictTypeTranslationImpl=E7=9A=84=E4=BF=AE=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E5=89=8D=E6=96=B9=E4=BC=A0=E5=85=A5=E4=BA=86?= =?UTF-8?q?=E9=9D=9EString=E5=AD=97=E6=AE=B5=EF=BC=8C=E4=BE=8B=E5=A6=82?= =?UTF-8?q?=EF=BC=9A=E6=88=91=E4=BC=A0=E5=85=A51.13=E7=9A=84BigDecimal?= =?UTF-8?q?=E6=98=AF=E6=97=A0=E6=B3=95=E5=92=8C1.13=E7=9A=84String?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E7=9A=84=EF=BC=8C=E6=89=80=E4=BB=A5=E6=B2=A1?= =?UTF-8?q?=E8=BD=AC=E6=88=90=E5=8A=9F=EF=BC=8C=202.LambdaJoinQueryBuilder?= =?UTF-8?q?=E4=B8=AD=E5=8A=A0=E5=85=A5=E4=B8=A4=E7=A7=8DgroupBy=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E5=9B=A0=E4=B8=BA=E7=9B=AE=E5=89=8D=E7=9A=84?= =?UTF-8?q?join=E6=9F=A5=E8=AF=A2=E5=BC=95=E7=94=A8selectAs=E4=BD=BF?= =?UTF-8?q?=E7=94=A8GROUP=5FCONCAT=E6=88=96=E8=80=85=E7=B1=BB=E4=BC=BCSQL?= =?UTF-8?q?=E8=AF=AD=E5=8F=A5=E9=9C=80=E8=A6=81groupBy=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=96=B9=E6=B3=95=E4=BD=BF=E7=94=A8=E6=9D=A5=E5=BC=95?= =?UTF-8?q?=E7=94=A8=20=E6=94=B9=E5=8A=A8=E9=80=BB=E8=BE=91=20=E8=BF=99?= =?UTF-8?q?=E4=B9=88=E5=86=99=E7=9A=84=E6=80=9D=E8=B7=AF(=E8=AE=A9?= =?UTF-8?q?=E4=BD=9C=E8=80=85=E6=9B=B4=E5=A5=BD=E7=9A=84=E7=90=86=E8=A7=A3?= =?UTF-8?q?=E4=BD=A0=E7=9A=84=E6=84=8F=E5=9B=BE)=201.=E5=B0=86=E4=BC=A0?= =?UTF-8?q?=E5=85=A5=E5=AD=97=E6=AE=B5=E8=BD=AC=E5=8C=96=E4=B8=BAString?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=AF=B9=E6=AF=94=202.=E4=BD=BF=E7=94=A8wrap?= =?UTF-8?q?per.groupBy=EF=BC=8C=E7=84=B6=E5=90=8E=E9=81=8D=E5=8E=86?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=BF=9B=E8=A1=8CgroupBy=20=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=20=E9=83=BD=E5=81=9A=E4=BA=86=E5=93=AA=E4=BA=9B?= =?UTF-8?q?=E6=B5=8B=E8=AF=95(=E6=9C=AA=E7=BB=8F=E8=BF=87=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E4=B8=8D=E9=87=87=E7=BA=B3)=201.=E5=B7=B2=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E4=BC=A0=E5=85=A5BigDecimal=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E6=88=90=E5=8A=9F=202.=E5=9C=A8=E5=A4=9A=E6=9D=A1sql=E8=AF=AD?= =?UTF-8?q?=E5=8F=A5=E6=B5=8B=E8=AF=95=E8=BF=87=E5=90=8E=E5=9D=87=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E5=AE=9E=E7=8E=B0=E7=B1=BB=E4=BC=BCselectAs("GROUP=5F?= =?UTF-8?q?CONCAT(m=5Fchild.name=20SEPARATOR=20'=E3=80=81')",=20MaterialVo?= =?UTF-8?q?::getChildrenStatus)=E7=9A=84=E5=8A=9F=E8=83=BD?= 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 | 33 +++++++++++++++++++ .../core/impl/DictTypeTranslationImpl.java | 4 +-- 3 files changed, 37 insertions(+), 2 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 acffb78d4..1a23802b3 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,6 +25,8 @@ 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 b97e558d4..48eaff16c 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 @@ -49,6 +49,39 @@ public final class LambdaJoinQueryBuilder { return this; } + /** + * 添加分组查询。 + * + * @param columns 分组字段 + * @return 当前联表查询构造辅助对象 + */ + @SafeVarargs + public final LambdaJoinQueryBuilder groupBy(SFunction... columns) { + return groupBy(null, columns); + } + + /** + * 添加分组查询。 + * + * @param alias 表别名 + * @param columns 分组字段 + * @return 当前联表查询构造辅助对象 + */ + @SafeVarargs + public final LambdaJoinQueryBuilder groupBy(String alias, SFunction... columns) { + if (columns == null) { + return this; + } + for (SFunction column : columns) { + String columnUnder = StringUtils.toUnderScoreCase(LambdaUtils.getName(column)); + if (StringUtils.isNotBlank(alias)) { + columnUnder = alias + StringUtils.DOT + columnUnder; + } + wrapper.groupBy(columnUnder); + } + 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 ea13812a2..4162e7e3e 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 @@ -33,7 +33,7 @@ public class DictTypeTranslationImpl implements TranslationInterface { */ @Override public String translation(Object key, String other) { - if (key instanceof String dictValue && StringUtils.isNotBlank(other)) { + if (key.toString() instanceof String dictValue && StringUtils.isNotBlank(other)) { return dictService.getDictLabel(other, dictValue); } return null; @@ -54,7 +54,7 @@ public class DictTypeTranslationImpl implements TranslationInterface { Map dictMap = dictService.getAllDictByDictType(other); Map result = new LinkedHashMap<>(keys.size()); for (Object key : keys) { - if (key instanceof String dictValue) { + if (key.toString() instanceof String dictValue) { result.put(key, StreamUtils.join( StreamUtils.filter(Arrays.asList(dictValue.split(",")), StringUtils::isNotBlank), value -> dictMap.get(value.trim())