diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..c5f3f6b9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/klp-admin/src/main/java/com/klp/web/controller/system/SysDictDataController.java b/klp-admin/src/main/java/com/klp/web/controller/system/SysDictDataController.java index 5c9cf14f..fd0a2693 100644 --- a/klp-admin/src/main/java/com/klp/web/controller/system/SysDictDataController.java +++ b/klp-admin/src/main/java/com/klp/web/controller/system/SysDictDataController.java @@ -11,7 +11,6 @@ import com.klp.common.core.page.TableDataInfo; import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; import com.klp.system.service.ISysDictDataService; -import com.klp.system.service.ISysDictTypeService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -32,7 +31,6 @@ import java.util.List; public class SysDictDataController extends BaseController { private final ISysDictDataService dictDataService; - private final ISysDictTypeService dictTypeService; /** * 查询字典数据列表 @@ -72,7 +70,7 @@ public class SysDictDataController extends BaseController { */ @GetMapping(value = "/type/{dictType}") public R> dictType(@PathVariable("dictType") String dictType) { - List data = dictTypeService.selectDictDataByType(dictType); + List data = dictDataService.selectDictDataByTypeRealtime(dictType); if (ObjectUtil.isNull(data)) { data = new ArrayList<>(); } diff --git a/klp-admin/src/main/java/com/klp/web/controller/system/SysDictTypeController.java b/klp-admin/src/main/java/com/klp/web/controller/system/SysDictTypeController.java index 29c6107d..9240d0e1 100644 --- a/klp-admin/src/main/java/com/klp/web/controller/system/SysDictTypeController.java +++ b/klp-admin/src/main/java/com/klp/web/controller/system/SysDictTypeController.java @@ -50,6 +50,14 @@ public class SysDictTypeController extends BaseController { ExcelUtil.exportExcel(list, "字典类型", SysDictType.class, response); } + /** + * 按字典类型编码精确查询(避免 /list 条件对 dict_type 使用 LIKE 时下划线通配问题;供页内齿轮等使用) + */ + @GetMapping("/byType/{dictType}") + public R getByDictType(@PathVariable String dictType) { + return R.ok(dictTypeService.selectDictTypeByType(dictType)); + } + /** * 查询字典类型详细 * diff --git a/klp-system/src/main/java/com/klp/system/service/ISysDictDataService.java b/klp-system/src/main/java/com/klp/system/service/ISysDictDataService.java index 26fd2082..159b4af4 100644 --- a/klp-system/src/main/java/com/klp/system/service/ISysDictDataService.java +++ b/klp-system/src/main/java/com/klp/system/service/ISysDictDataService.java @@ -41,6 +41,11 @@ public interface ISysDictDataService { */ SysDictData selectDictDataById(Long dictCode); + /** + * 按字典类型查询字典数据(直查库)。用于 HTTP `/dict/data/type/{type}`,避免 Spring Cache 在无界面操作灌数后仍返回空。 + */ + List selectDictDataByTypeRealtime(String dictType); + /** * 批量删除字典数据信息 * diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysDictDataServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysDictDataServiceImpl.java index 6da11872..ba34d0ec 100644 --- a/klp-system/src/main/java/com/klp/system/service/impl/SysDictDataServiceImpl.java +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysDictDataServiceImpl.java @@ -15,6 +15,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.CachePut; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; /** @@ -81,6 +82,18 @@ public class SysDictDataServiceImpl implements ISysDictDataService { return baseMapper.selectById(dictCode); } + /** + * 按类型查字典数据(直查数据库,不走 {@link com.klp.system.service.impl.SysDictTypeServiceImpl#selectDictDataByType} 的 Spring Cache)。 + * SQL 脚本直插或外部改表后,仍需立即在「按类型」HTTP 接口中可见,避免长期使用空缓存。 + */ + @Override + public List selectDictDataByTypeRealtime(String dictType) { + if (StringUtils.isBlank(dictType)) { + return Collections.emptyList(); + } + return baseMapper.selectDictDataByType(dictType); + } + /** * 批量删除字典数据信息 * diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysDictTypeServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysDictTypeServiceImpl.java index f45b3e23..c37d958e 100644 --- a/klp-system/src/main/java/com/klp/system/service/impl/SysDictTypeServiceImpl.java +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysDictTypeServiceImpl.java @@ -119,7 +119,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService @Cacheable(cacheNames = CacheNames.SYS_DICT, key = "#dictType") @Override public SysDictType selectDictTypeByType(String dictType) { - return baseMapper.selectById(new LambdaQueryWrapper().eq(SysDictType::getDictType, dictType)); + return baseMapper.selectOne(new LambdaQueryWrapper().eq(SysDictType::getDictType, dictType)); } /** diff --git a/klp-ui/src/api/system/dict/type.js b/klp-ui/src/api/system/dict/type.js index a0254baa..c56593b8 100644 --- a/klp-ui/src/api/system/dict/type.js +++ b/klp-ui/src/api/system/dict/type.js @@ -58,3 +58,11 @@ export function optionselect() { method: 'get' }) } + +/** 按字典类型编码精确查询 sys_dict_type(路径需编码) */ +export function getDictTypeByCode(dictType) { + return request({ + url: '/system/dict/type/byType/' + encodeURIComponent(dictType), + method: 'get' + }) +} diff --git a/klp-ui/src/components/DictSelect/index.vue b/klp-ui/src/components/DictSelect/index.vue index 63e2b1c4..c43a94be 100644 --- a/klp-ui/src/components/DictSelect/index.vue +++ b/klp-ui/src/components/DictSelect/index.vue @@ -2,6 +2,7 @@
@@ -37,7 +38,7 @@ @@ -145,14 +146,17 @@