部门字典表
引用文件
目录
简介
本文档详细介绍系统中的部门表(system_dept)和字典表(system_dict_data、system_dict_type)的表结构设计与业务实现。内容涵盖:
- 部门表的层级结构设计,包括父部门ID、排序字段、负责人等字段的业务含义
- 字典数据表和字典类型表的设计理念,包括字典类型的分类、字典数据的组织结构
- 字典数据的枚举值设计原则和业务应用场景
- 部门树形结构的构建方法和字典数据的使用示例
- 部门管理、字典维护的典型业务流程
项目结构
该代码库采用模块化架构,部门和字典功能分别由系统模块提供。核心文件分布如下:
- SQL脚本:包含完整的表结构定义和示例数据
- 文档:提供用户操作指南和字段说明
- 业务代码:包含请求VO、API接口和工具类
图表来源
章节来源
核心组件
部门表(system_dept)
部门表采用标准的关系型数据库设计,支持多租户和软删除机制。
核心字段说明:
id: 主键,自增部门IDname: 部门名称,必填parent_id: 父部门ID,默认0表示顶级部门sort: 显示顺序,用于排序显示leader_user_id: 负责人用户IDphone/email/status: 联系信息和状态tenant_id: 租户编号,支持多租户隔离
关键特性:
- 支持无限层级的树形结构
- 通过parent_id建立父子关系
- 支持部门状态管理和软删除
- 多租户隔离设计
字典数据表(system_dict_data)
字典数据表提供灵活的数据字典支持,支持多种业务场景。
核心字段说明:
id: 主键,字典编码label: 字典标签,显示给用户value: 字典键值,实际存储值dict_type: 字典类型,关联字典类型表sort: 排序字段status: 状态控制color_type/css_class: 样式控制remark: 备注说明
设计特点:
- 支持颜色类型和CSS样式定制
- 提供丰富的业务场景枚举值
- 支持启用/禁用状态管理
- 字典键值与标签分离设计
字典类型表(system_dict_type)
字典类型表定义了字典的分类和元数据信息。
核心字段说明:
id: 主键,字典类型IDname: 字典名称,显示名称type: 字典类型,唯一标识符status: 状态控制remark: 备注说明
设计理念:
- 类型驱动的数据字典架构
- 支持业务场景的分类管理
- 统一的命名规范和状态管理
章节来源
架构概览
图表来源
详细组件分析
部门树形结构设计
层级结构原理
部门表通过parent_id字段实现树形结构,支持无限层级的组织架构:
图表来源
关键设计要点
- 父部门ID(parent_id): 0表示顶级部门,非0表示具体父部门
- 排序字段(sort): 控制同级部门的显示顺序
- 负责人字段(leader_user_id): 关联用户表,支持部门负责人管理
- 状态控制(status): 支持启用/停用部门
- 多租户支持: 通过tenant_id实现租户隔离
字典数据设计原则
枚举值设计原则
字典系统遵循以下设计原则:
- 类型驱动: 通过dict_type字段区分不同业务场景
- 键值分离: label用于显示,value用于存储,支持国际化
- 状态管理: 通过status字段控制启用/禁用状态
- 样式定制: 支持color_type和css_class实现视觉化展示
典型业务场景
系统内置了丰富的字典类型,涵盖多个业务领域:
用户管理相关:
system_user_sex: 用户性别枚举user_type: 用户类型分类
系统管理相关:
common_status: 通用状态枚举infra_config_type: 配置类型分类
业务流程相关:
bpm_process_instance_status: 流程实例状态bpm_task_status: 任务状态
支付相关:
pay_channel_code: 支付渠道代码pay_order_status: 订单状态
章节来源
部门树形结构构建方法
数据查询策略
-- 获取顶级部门
SELECT * FROM system_dept WHERE parent_id = 0 AND deleted = 0 ORDER BY sort;
-- 获取指定部门的所有子部门
WITH RECURSIVE dept_tree AS (
SELECT id, name, parent_id, sort, 0 as level
FROM system_dept
WHERE id = ? AND deleted = 0
UNION ALL
SELECT d.id, d.name, d.parent_id, d.sort, dt.level + 1
FROM system_dept d
INNER JOIN dept_tree dt ON d.parent_id = dt.id
WHERE d.deleted = 0
)
SELECT * FROM dept_tree ORDER BY level, sort;
树形结构渲染
前端通常采用递归渲染方式构建部门树:
- 先渲染顶级部门节点
- 递归渲染每个部门的子部门
- 使用sort字段控制显示顺序
- 支持展开/折叠功能
字典数据使用示例
前端使用流程
图表来源
典型使用场景
- 用户性别选择: 使用
system_user_sex字典类型 - 部门状态筛选: 使用
common_status字典类型 - 业务状态展示: 使用各业务模块的专用字典类型
章节来源
依赖分析
图表来源
模块间依赖关系
- system-module: 提供部门和字典的核心业务逻辑
- infra-module: 提供基础设施支持,如代码生成、文件存储等
- framework-module: 提供通用框架能力,如字典框架工具
数据依赖关系
- 部门表依赖用户表(负责人字段)
- 字典数据表依赖字典类型表
- 所有表都支持多租户隔离
章节来源
性能考虑
查询优化策略
- 索引设计: 在parent_id、dict_type、status等常用查询字段上建立索引
- 缓存策略: 字典数据采用本地缓存,减少数据库查询压力
- 分页查询: 对于大量数据的查询使用分页机制
- 批量操作: 支持批量插入和更新操作
存储优化
- 字段类型选择: 合理选择数据类型,避免存储空间浪费
- 字符集设置: 使用utf8mb4支持完整的Unicode字符
- 索引优化: 避免过多的索引影响写入性能
故障排除指南
常见问题及解决方案
部门树形结构异常
问题现象: 部门树显示错乱或循环引用 可能原因:
- parent_id字段存在循环引用
- 数据导入时parent_id设置错误
- 软删除标记异常
解决步骤:
- 检查parent_id字段的完整性
- 验证部门层级关系的合理性
- 清理异常的软删除标记
字典数据显示异常
问题现象: 下拉框显示空白或数据不完整 可能原因:
- 字典类型未正确配置
- 字典数据状态为禁用
- 缓存数据过期
解决步骤:
- 检查字典类型表的配置
- 验证字典数据的状态和排序
- 清理并重新加载字典缓存