跳到主要内容

部门字典表

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论
  10. 附录

简介

本文档详细介绍系统中的部门表(system_dept)和字典表(system_dict_data、system_dict_type)的表结构设计与业务实现。内容涵盖:

  • 部门表的层级结构设计,包括父部门ID、排序字段、负责人等字段的业务含义
  • 字典数据表和字典类型表的设计理念,包括字典类型的分类、字典数据的组织结构
  • 字典数据的枚举值设计原则和业务应用场景
  • 部门树形结构的构建方法和字典数据的使用示例
  • 部门管理、字典维护的典型业务流程

项目结构

该代码库采用模块化架构,部门和字典功能分别由系统模块提供。核心文件分布如下:

  • SQL脚本:包含完整的表结构定义和示例数据
  • 文档:提供用户操作指南和字段说明
  • 业务代码:包含请求VO、API接口和工具类

Mermaid Diagram Code:

graph TB
subgraph "数据层"
A[system_dept 部门表]
B[system_dict_data 字典数据表]
C[system_dict_type 字典类型表]
end
subgraph "业务层"
D[部门管理模块]
E[字典管理模块]
end
subgraph "展示层"
F[前端界面]
G[管理后台]
end
A --> D
B --> E
C --> E
D --> F
E --> G

图表来源

章节来源

核心组件

部门表(system_dept)

部门表采用标准的关系型数据库设计,支持多租户和软删除机制。

核心字段说明:

  • id: 主键,自增部门ID
  • name: 部门名称,必填
  • parent_id: 父部门ID,默认0表示顶级部门
  • sort: 显示顺序,用于排序显示
  • leader_user_id: 负责人用户ID
  • phone/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: 主键,字典类型ID
  • name: 字典名称,显示名称
  • type: 字典类型,唯一标识符
  • status: 状态控制
  • remark: 备注说明

设计理念:

  • 类型驱动的数据字典架构
  • 支持业务场景的分类管理
  • 统一的命名规范和状态管理

章节来源

架构概览

Mermaid Diagram Code:

classDiagram
class Department {
+long id
+String name
+long parent_id
+int sort
+Long leader_user_id
+String phone
+String email
+byte status
+String creator
+Date create_time
+String updater
+Date update_time
+Bit deleted
+long tenant_id
}
class DictData {
+long id
+int sort
+String label
+String value
+String dict_type
+byte status
+String color_type
+String css_class
+String remark
+String creator
+Date create_time
+String updater
+Date update_time
+Bit deleted
}
class DictType {
+long id
+String name
+String type
+byte status
+String remark
+String creator
+Date create_time
+String updater
+Date update_time
+Bit deleted
}
Department --> Department : "self-reference"
DictData --> DictType : "belongs to"

图表来源

详细组件分析

部门树形结构设计

层级结构原理

部门表通过parent_id字段实现树形结构,支持无限层级的组织架构:

Mermaid Diagram Code:

graph TD
A[顶级部门] --> B[深圳总公司]
A --> C[长沙分公司]
B --> D[研发部门]
B --> E[市场部门]
B --> F[测试部门]
B --> G[财务部门]
B --> H[运维部门]
C --> I[市场部门]
C --> J[财务部门]

图表来源

关键设计要点

  1. 父部门ID(parent_id): 0表示顶级部门,非0表示具体父部门
  2. 排序字段(sort): 控制同级部门的显示顺序
  3. 负责人字段(leader_user_id): 关联用户表,支持部门负责人管理
  4. 状态控制(status): 支持启用/停用部门
  5. 多租户支持: 通过tenant_id实现租户隔离

字典数据设计原则

枚举值设计原则

字典系统遵循以下设计原则:

  1. 类型驱动: 通过dict_type字段区分不同业务场景
  2. 键值分离: label用于显示,value用于存储,支持国际化
  3. 状态管理: 通过status字段控制启用/禁用状态
  4. 样式定制: 支持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;

树形结构渲染

前端通常采用递归渲染方式构建部门树:

  1. 先渲染顶级部门节点
  2. 递归渲染每个部门的子部门
  3. 使用sort字段控制显示顺序
  4. 支持展开/折叠功能

字典数据使用示例

前端使用流程

Mermaid Diagram Code:

sequenceDiagram
participant UI as 前端界面
participant API as 字典API
participant Cache as 本地缓存
participant Server as 后端服务
UI->>API : 请求字典数据
API->>Cache : 检查缓存
alt 缓存命中
Cache-->>API : 返回缓存数据
else 缓存未命中
API->>Server : 调用后端接口
Server-->>API : 返回字典数据
API->>Cache : 写入缓存
end
API-->>UI : 返回字典数据
UI->>UI : 渲染下拉框/单选框

图表来源

典型使用场景

  1. 用户性别选择: 使用system_user_sex字典类型
  2. 部门状态筛选: 使用common_status字典类型
  3. 业务状态展示: 使用各业务模块的专用字典类型

章节来源

依赖分析

Mermaid Diagram Code:

graph LR
subgraph "外部依赖"
A[MySQL数据库]
B[前端框架]
C[Spring Boot]
end
subgraph "内部模块"
D[system-module]
E[infra-module]
F[framework-module]
end
subgraph "核心表"
G[system_dept]
H[system_dict_data]
I[system_dict_type]
end
A --> G
A --> H
A --> I
C --> D
C --> E
C --> F
D --> G
D --> H
D --> I
F --> B

图表来源

模块间依赖关系

  • system-module: 提供部门和字典的核心业务逻辑
  • infra-module: 提供基础设施支持,如代码生成、文件存储等
  • framework-module: 提供通用框架能力,如字典框架工具

数据依赖关系

  • 部门表依赖用户表(负责人字段)
  • 字典数据表依赖字典类型表
  • 所有表都支持多租户隔离

章节来源

性能考虑

查询优化策略

  1. 索引设计: 在parent_id、dict_type、status等常用查询字段上建立索引
  2. 缓存策略: 字典数据采用本地缓存,减少数据库查询压力
  3. 分页查询: 对于大量数据的查询使用分页机制
  4. 批量操作: 支持批量插入和更新操作

存储优化

  1. 字段类型选择: 合理选择数据类型,避免存储空间浪费
  2. 字符集设置: 使用utf8mb4支持完整的Unicode字符
  3. 索引优化: 避免过多的索引影响写入性能

故障排除指南

常见问题及解决方案

部门树形结构异常

问题现象: 部门树显示错乱或循环引用 可能原因:

  • parent_id字段存在循环引用
  • 数据导入时parent_id设置错误
  • 软删除标记异常

解决步骤:

  1. 检查parent_id字段的完整性
  2. 验证部门层级关系的合理性
  3. 清理异常的软删除标记

字典数据显示异常

问题现象: 下拉框显示空白或数据不完整 可能原因:

  • 字典类型未正确配置
  • 字典数据状态为禁用
  • 缓存数据过期

解决步骤:

  1. 检查字典类型表的配置
  2. 验证字典数据的状态和排序
  3. 清理并重新加载字典缓存

性能问题

问题现象: 页面加载缓慢或查询超时 可能原因:

  • 缺少必要的数据库索引
  • 查询语句效率低下
  • 缓存配置不当

解决步骤:

  1. 分析慢查询日志
  2. 添加适当的数据库索引
  3. 优化查询语句和缓存策略

章节来源

结论

本文档详细介绍了部门表和字典表的设计理念、实现细节和使用方法。通过合理的表结构设计和业务逻辑实现,系统能够有效支持复杂的组织架构管理和灵活的数据字典需求。关键设计要点包括:

  1. 部门表设计: 采用parent_id实现树形结构,支持无限层级的组织架构
  2. 字典表设计: 通过类型驱动的架构,支持多业务场景的数据字典管理
  3. 性能优化: 通过缓存、索引和查询优化确保系统性能
  4. 扩展性: 支持多租户和业务扩展,满足不同规模企业的需求

这些设计为后续的功能扩展和业务发展奠定了坚实的基础。

附录

字段完整说明

部门表字段

字段名数据类型必填默认值说明
idbigint自增部门ID
namevarchar(30)空字符串部门名称
parent_idbigint0父部门ID
sortint0显示顺序
leader_user_idbigintNULL负责人用户ID
phonevarchar(11)NULL联系电话
emailvarchar(50)NULL邮箱
statustinyint0部门状态
tenant_idbigint0租户编号

字典数据表字段

字段名数据类型必填默认值说明
idbigint自增字典编码
sortint0字典排序
labelvarchar(100)空字符串字典标签
valuevarchar(100)空字符串字典键值
dict_typevarchar(100)空字符串字典类型
statustinyint0状态(0正常 1停用)
color_typevarchar(100)空字符串颜色类型
css_classvarchar(100)空字符串css 样式
remarkvarchar(500)NULL备注

典型业务流程图

部门管理流程

Mermaid Diagram Code:

flowchart TD
A[创建部门] --> B[验证父部门ID]
B --> C{父部门存在?}
C --> |是| D[创建部门记录]
C --> |否| E[返回错误]
D --> F[更新部门树结构]
F --> G[返回成功]
E --> H[结束]
G --> I[结束]

字典维护流程

Mermaid Diagram Code:

flowchart TD
A[新增字典数据] --> B[验证字典类型]
B --> C{类型存在?}
C --> |是| D[验证键值唯一性]
C --> |否| E[创建字典类型]
D --> F{键值唯一?}
F --> |是| G[插入字典数据]
F --> |否| H[返回错误]
E --> I[创建字典类型]
I --> J[插入字典数据]
G --> K[更新缓存]
H --> L[结束]
K --> M[结束]
L --> N[结束]
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答