From 3570ea007f47cf8b55a47bc016d16e567445370b Mon Sep 17 00:00:00 2001 From: "Wang.Huan" Date: Sat, 15 Mar 2025 12:14:10 +0800 Subject: [PATCH] =?UTF-8?q?Dict=E5=88=87=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../openhis/common/aspectj/DictAspect.java | 53 ++++++++++--------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/aspectj/DictAspect.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/aspectj/DictAspect.java index 99024529..68e41a1a 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/aspectj/DictAspect.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/aspectj/DictAspect.java @@ -63,33 +63,38 @@ public class DictAspect { if (dto == null) { return; } - // 获取 DTO 类的所有字段 for (Field field : dto.getClass().getDeclaredFields()) { - // 检查字段是否带有 @Dict 注解 - if (field.isAnnotationPresent(Dict.class)) { + field.setAccessible(true); // 设置字段可访问 + Object fieldValue = field.get(dto); // 获取字段值 + + if (fieldValue == null) { + continue; // 如果字段值为空,跳过 + } + // 如果字段是 List 类型,递归处理其中的每个元素 + if (fieldValue instanceof List) { + List list = (List)fieldValue; + for (Object item : list) { + processDict(item); // 递归处理 List 中的每个元素 + } + } else if (field.isAnnotationPresent(Dict.class)) { + // 如果字段带有 @Dict 注解,处理字典值 Dict dictAnnotation = field.getAnnotation(Dict.class); - field.setAccessible(true); // 设置字段可访问 - Object fieldValue = field.get(dto); // 获取字段值 - - if (fieldValue != null) { - String dictCode = dictAnnotation.dictCode(); - String dictText = dictAnnotation.dictText(); - String dictTable = dictAnnotation.dictTable(); - - // 查询字典值 - String dictLabel = queryDictLabel(dictTable, dictCode, dictText, fieldValue.toString()); - if (dictLabel != null) { - try { - // 动态生成 _dictText 字段名 - String textFieldName = field.getName() + "_dictText"; - Field textField = dto.getClass().getDeclaredField(textFieldName); - textField.setAccessible(true); - textField.set(dto, dictLabel); // 设置 _dictText 字段的值 - } catch (NoSuchFieldException e) { - // 如果 _dictText 字段不存在,忽略错误 - e.printStackTrace(); - } + String dictCode = dictAnnotation.dictCode(); + String dictText = dictAnnotation.dictText(); + String dictTable = dictAnnotation.dictTable(); + // 查询字典值 + String dictLabel = queryDictLabel(dictTable, dictCode, dictText, fieldValue.toString()); + if (dictLabel != null) { + try { + // 动态生成 _dictText 字段名 + String textFieldName = field.getName() + "_dictText"; + Field textField = dto.getClass().getDeclaredField(textFieldName); + textField.setAccessible(true); + textField.set(dto, dictLabel); // 设置 _dictText 字段的值 + } catch (NoSuchFieldException e) { + // 如果 _dictText 字段不存在,忽略错误 + e.printStackTrace(); } } }