From 92b35a74fed24127b470993dbd3440011eaebb36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Fri, 22 May 2026 13:18:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/controller/DictDataController.java | 42 +++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/xujie/modules/sys/controller/DictDataController.java b/src/main/java/com/xujie/modules/sys/controller/DictDataController.java index 6a3cc2e..fd76e7e 100644 --- a/src/main/java/com/xujie/modules/sys/controller/DictDataController.java +++ b/src/main/java/com/xujie/modules/sys/controller/DictDataController.java @@ -219,30 +219,48 @@ public class DictDataController { } /** - * 查询 字典数据 - * @param site 工厂编码 - * @param dictType 字典类型 - * author zelian_wu - * date 2024-1-4 - * @return + * 查询字典数据(列表,供下拉等使用) + *

优先按请求中的 {@code site} 查询;若无数据且 {@code site} 不是 {@code *},再查 {@code site=*} 的全工厂默认字典; + * 仍无则返回空列表。

+ *

未传 {@code status} 时默认只查在用(Y)。

*/ @PostMapping("/list") public R selectDictDataList(@RequestBody DictDataVo dictDataVo){ if (!StringUtils.hasText(dictDataVo.getSite())){ throw new RuntimeException("工厂编码为空!"); } - if (!StringUtils.hasText(dictDataVo.getDictType()) && dictDataVo.getDictTypeList().isEmpty()){ + boolean typeBlank = !StringUtils.hasText(dictDataVo.getDictType()); + List dictTypeList = dictDataVo.getDictTypeList(); + if (typeBlank && (dictTypeList == null || dictTypeList.isEmpty())){ throw new RuntimeException("字典类型为空!"); } + String currentSite = dictDataVo.getSite().trim(); + List rows = dictDataService.list(buildDictDataListWrapper(dictDataVo, currentSite)); + if (rows.isEmpty() && !"*".equals(currentSite)) { + rows = dictDataService.list(buildDictDataListWrapper(dictDataVo, "*")); + } + return R.ok().put("rows", rows); + } + + /** + * 按指定 site 构造字典列表查询(不含 site 回落逻辑) + */ + private LambdaQueryWrapper buildDictDataListWrapper(DictDataVo dictDataVo, String site) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(DictData::getSite,dictDataVo.getSite()); + wrapper.eq(DictData::getSite, site); if (StringUtils.hasText(dictDataVo.getDictType())){ - wrapper.eq(DictData::getDictType,dictDataVo.getDictType()); + wrapper.eq(DictData::getDictType, dictDataVo.getDictType()); + } + List dictTypeList = dictDataVo.getDictTypeList(); + if (dictTypeList != null && !dictTypeList.isEmpty()){ + wrapper.in(DictData::getDictType, dictTypeList); } - if (!dictDataVo.getDictTypeList().isEmpty()){ - wrapper.in(DictData::getDictType,dictDataVo.getDictTypeList()); + if (StringUtils.hasText(dictDataVo.getStatus())) { + wrapper.eq(DictData::getStatus, dictDataVo.getStatus()); + } else { + wrapper.eq(DictData::getStatus, "Y"); } wrapper.orderByAsc(DictData::getDictSort); - return R.ok().put("rows",dictDataService.list(wrapper)); + return wrapper; } }