diff --git a/openhis-server-new/openhis-common/src/main/java/com/openhis/common/aspectj/DictAspect.java b/openhis-server-new/openhis-common/src/main/java/com/openhis/common/aspectj/DictAspect.java index 8aba6c518..80c493b2a 100755 --- a/openhis-server-new/openhis-common/src/main/java/com/openhis/common/aspectj/DictAspect.java +++ b/openhis-server-new/openhis-common/src/main/java/com/openhis/common/aspectj/DictAspect.java @@ -100,11 +100,25 @@ public class DictAspect { String dictText = dictAnnotation.dictText(); String dictTable = dictAnnotation.dictTable(); String deleteFlag = dictAnnotation.deleteFlag(); + + // 检查 _dictText 字段是否已被手动填充(如控制器方法中预先查询设置) + // 如果已非空则跳过 SQL 查询,避免覆盖有效值 + String textFieldName = field.getName() + "_dictText"; + try { + Field existingTextField = dto.getClass().getDeclaredField(textFieldName); + existingTextField.setAccessible(true); + Object existingValue = existingTextField.get(dto); + if (existingValue != null && !existingValue.toString().isEmpty()) { + continue; // _dictText 已有值,跳过 + } + } catch (NoSuchFieldException e) { + // _dictText 字段不存在,继续正常流程 + } + // 查询字典值 String dictLabel = queryDictLabel(dictTable, dictCode, dictText, deleteFlag, fieldValue.toString()); - if (dictLabel != null) { + if (dictLabel != null && !dictLabel.isEmpty()) { // 动态生成 _dictText 字段名 - String textFieldName = field.getName() + "_dictText"; try { Field textField = dto.getClass().getDeclaredField(textFieldName); textField.setAccessible(true);