From 5a56094e4f0e8dd53c36bc75f667f8ee5ec4867a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=96=87=E6=98=8A?= <15984991+wwh2328692301@user.noreply.gitee.com> Date: Tue, 28 Apr 2026 19:12:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor(dict):=20=E4=BC=98=E5=8C=96=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=92=8C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除不必要的 ISysDictTypeService 依赖,简化 SysDictDataController - 新增 selectDictDataByTypeRealtime 方法,支持实时查询字典数据,避免缓存问题 - 更新 SysDictDataController 中的字典数据查询逻辑,使用新方法 - 在 SysDictTypeController 中添加按字典类型编码精确查询的接口 - 更新前端组件以支持新的字典查询接口,优化字典选择器的加载逻辑 --- .vscode/settings.json | 3 + .../system/SysDictDataController.java | 4 +- .../system/SysDictTypeController.java | 8 + .../system/service/ISysDictDataService.java | 5 + .../service/impl/SysDictDataServiceImpl.java | 13 + .../service/impl/SysDictTypeServiceImpl.java | 2 +- klp-ui/src/api/system/dict/type.js | 8 + klp-ui/src/components/DictSelect/index.vue | 98 +++--- klp-ui/src/views/wms/processSpec/index.vue | 293 +++++++++++++++--- klp-ui/src/views/wms/processSpec/planSpec.vue | 179 ++++++++++- .../sql/mysql/patch_wms_process_spec_dict.sql | 28 ++ 11 files changed, 541 insertions(+), 100 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 script/sql/mysql/patch_wms_process_spec_dict.sql 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 @@