Appearance
数据字典管理
**本文引用的文件** - [SysDictController.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-server/src/main/java/com/lenovo/lemes/service/dm/common/controller/SysDictController.java) - [SysDictService.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-server/src/main/java/com/lenovo/lemes/service/dm/common/service/SysDictService.java) - [SysDictMapper.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-server/src/main/java/com/lenovo/lemes/service/dm/common/dao/SysDictMapper.java) - [SysDictDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/entity/SysDictDo.java) - [SysDictVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/vo/model/SysDictVo.java) - [SysDictInfoVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/vo/model/SysDictInfoVo.java) - [SysDictExtVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/vo/model/SysDictExtVo.java) - [dictMixins.js](file://app/devicemate-app/utils/dictMixins.js) - [device.sql](file://docs/ddl/device.sql)目录
简介
本技术文档围绕“数据字典管理系统”展开,系统覆盖字典项的分类管理、字典值的维护、字典层级结构与多语言展示,以及在设备管理中的典型应用(如设备类型分类、设备状态枚举、维修原因分类等)。后端采用 Java 微服务架构,前端基于 uni-app,通过统一的字典 API 提供字典数据查询与缓存能力;数据库层面以 sys_dict 表为核心,配合多语言扩展表实现国际化展示。
项目结构
- 后端模块:lemes-service-dm-common(公共字典服务)
- 控制器层:SysDictController
- 服务层:SysDictService
- 数据访问层:SysDictMapper
- 领域模型与 VO:SysDictDo、SysDictVo、SysDictInfoVo、SysDictExtVo
- 前端模块:devicemate-app
- 工具混入:dictMixins.js 封装字典请求与名称解析
- 数据库脚本:docs/ddl/device.sql 中包含 sys_dict 及相关表结构与注释
图表来源
章节来源
核心组件
- 控制器层:提供分页查询字典目录、按编码查询字典项、保存/删除字典、按编码或编码集合查询字典值、校验字典有效性、按名称与编码查询字典等接口。
- 服务层:封装分页查询、字典项列表、字典详情、保存/删除、缓存字典列表、全量字典、字典有效性校验、按值与编码查询名称等业务逻辑。
- 数据访问层:MyBatis Mapper,提供按名称与编码查询字典的 SQL 映射。
- 领域模型与 VO:
- SysDictDo:字典实体,包含父级 ID、字典编码、字典值、描述、备注、排序、层级、状态等字段。
- SysDictVo:字典目录与数据项通用 VO,支持多语言名称解析。
- SysDictInfoVo:字典详情 VO,包含目录与数据项列表。
- SysDictExtVo:对外扩展 VO,包含字典值、名称、描述及多语言名称列表。
- 前端工具:dictMixins.js 封装统一字典请求与名称解析方法,便于在页面中直接调用。
章节来源
- SysDictController.java:39-155
- SysDictService.java:21-93
- SysDictMapper.java:14-17
- SysDictDo.java:14-52
- SysDictVo.java:24-102
- SysDictInfoVo.java:20-34
- SysDictExtVo.java:19-71
- dictMixins.js:1-33
架构总览
后端采用标准的 MVC 分层架构,控制器负责接收请求与返回响应,服务层承载业务逻辑,数据访问层对接数据库。前端通过统一的字典 API 获取字典数据,支持按编码批量查询与缓存,提升页面渲染效率。
图表来源
详细组件分析
字典实体模型设计
- 字段说明
- 父级关联:parentId 支持字典层级结构(如一级分类与二级分类)。
- 编码与值:dictCode 用于标识字典类型,dictValue 为具体取值。
- 描述与备注:description 与 remark 提供类型说明与补充信息。
- 排序与层级:sort 控制同类型内排序,dictLevel 标识层级(1/2)。
- 状态:dictStatus 控制启用/禁用。
- 多语言支持:SysDictVo 与 SysDictExtVo 内置 nameMls 列表,支持按语言环境动态选择名称。
图表来源
章节来源
API 接口定义
- 分页获取字典类型目录列表
- 方法:POST
- 路径:/sysDict/getCatalogListByPage
- 请求体:SysDictVo
- 返回:分页结果
- 根据字典编码查询数据项列表
- 方法:GET
- 路径:/sysDict/getItemList/
- 返回:数据项列表
- 新增或修改字典
- 方法:POST
- 路径:/sysDict/saveDict
- 请求体:SysDictInfoVo
- 返回:操作结果
- 根据字典编码查询字典详情
- 方法:GET
- 路径:/sysDict/getDictInfo/
- 返回:字典详情
- 批量逻辑删除字典
- 方法:POST
- 路径:/sysDict/deleteDictByIds
- 请求体:Long[]
- 返回:操作结果
- 根据编码查询字典值(单个)
- 方法:GET
- 路径:/sysDict/getDictList
- 参数:code
- 返回:字典值列表(带缓存)
- 批量获取字典(多编码)
- 方法:POST
- 路径:/sysDict/getDictLists
- 请求体:String[]
- 返回:字典映射(带缓存)
- 校验字典有效性
- 方法:POST
- 路径:/sysDict/checkDictIsValid
- 请求体:List<SysDictValidVo>
- 返回:校验结果映射
- 根据字典值与编码查询名称
- 方法:GET
- 路径:/sysDict/getDictNameByDictValue
- 参数:dictValue, dictCode
- 返回:字典项信息
章节来源
设备管理中的应用场景
- 设备类型分类:通过 dictCode 标识“设备类型”,dictValue 为具体类型编码,nameMls 实现多语言显示。
- 设备状态枚举:通过 dictCode 标识“设备状态”,结合 dictValue 与 name 展示状态文本。
- 维修原因分类:通过 dictCode 标识“维修原因”,支持多级分类与排序控制。
- 单据状态:如“报废单据状态”等,可复用字典机制进行统一管理与展示。
章节来源
前端使用示例(概念性说明)
- 在页面中引入 dictMixins.js,调用 getDict(codes) 获取字典映射。
- 使用 getDictName(list, value) 根据字典值解析显示名称。
- 在表单、下拉框、标签等组件中绑定字典值与名称,实现数据展示与业务控制。
章节来源
依赖分析
- 控制器依赖服务层,服务层依赖数据访问层,形成清晰的分层依赖。
- SysDictMapper 提供按名称与编码查询字典的 SQL 映射,支撑多语言名称解析。
- 前端通过统一 API 与后端交互,减少耦合度。
图表来源
性能考虑
- 缓存策略:后端提供按编码获取字典列表与多编码批量获取接口,建议前端在应用启动时预加载常用字典,减少重复请求。
- 多语言解析:在 VO 中内置多语言名称解析方法,避免每次渲染时重复计算。
- 分页与批量:对目录列表与字典项列表提供分页与批量查询接口,降低一次性传输压力。
- 数据库索引:确保字典表的 dictCode、dictValue、parentId 等字段具备合理索引,提升查询性能。
故障排查指南
- 接口返回空数据
- 检查请求参数是否正确(如 dictCode、codes 数组)。
- 确认字典是否已启用(dictStatus)。
- 名称显示为占位符
- 检查 nameMls 是否存在对应语言的名称。
- 确认语言环境参数是否传入。
- 删除失败
- 确认传入的 ID 数组是否为空。
- 检查是否存在外键约束或业务限制。
- 校验失败
- 检查传入的字典值与编码是否匹配,确认字典有效性。
章节来源
结论
本数据字典管理系统通过清晰的分层架构、完善的实体模型与多语言支持,实现了设备管理等业务场景下的字典分类、值维护与展示需求。结合缓存与批量查询策略,可在保证一致性的同时提升系统性能与用户体验。
附录
- 最佳实践
- 统一使用 dictCode 标识字典类型,规范 dictValue 的取值范围。
- 对高频字典进行缓存预加载,减少接口调用。
- 在前端页面中集中使用 dictMixins.js 进行字典解析,保持一致的展示风格。
- 对字典层级与排序进行规范化管理,确保业务逻辑清晰。
- 缓存策略建议
- 应用启动时批量拉取常用字典,按需更新。
- 对多语言名称进行本地化缓存,避免重复解析。
- 定期清理过期字典缓存,确保数据新鲜度。