跳到主要内容

部门岗位管理

目录

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

简介

本文件围绕“部门岗位管理”主题,系统化梳理组织架构管理、岗位配置与人员分配的核心能力,覆盖以下方面:

  • 部门数据模型设计:层级结构、负责人、排序、状态等字段说明
  • 岗位管理机制:岗位设置、岗位与角色关联、岗位人员配置
  • 完整的部门与岗位 API 接口文档:部门树获取、岗位列表查询、人员分配等
  • 组织架构树构建、岗位权限继承、人员调动的技术实现要点
  • 实际代码示例路径与最佳实践建议,强调其在系统权限控制与人员管理中的关键作用

项目结构

部门与岗位管理位于系统模块中,采用“API 接口层 → 控制器层 → 服务层 → 数据访问层”的分层架构,并通过 Feign RPC 对外暴露能力,便于 BPM 等其他模块集成。

Mermaid Diagram Code:

graph TB
subgraph "系统模块"
DC["DeptController<br/>REST 接口"]
PC["PostController<br/>REST 接口"]
DA["DeptApi<br/>Feign 接口"]
PA["PostApi<br/>Feign 接口"]
DAI["DeptApiImpl<br/>Feign 实现"]
PAI["PostApiImpl<br/>Feign 实现"]
DM["DeptMapper<br/>MyBatis Mapper"]
PM["PostMapper<br/>MyBatis Mapper"]
DO_D["DeptDO<br/>部门实体"]
DO_P["PostDO<br/>岗位实体"]
end
subgraph "业务模块"
BPM["BPM 模块<br/>流程候选策略"]
end
DC --> DA
PC --> PA
DA --> DAI
PA --> PAI
DAI --> DM
PAI --> PM
DM --> DO_D
PM --> DO_P
BPM --> DA
BPM --> PA

图表来源

章节来源

核心组件

  • 部门控制器:提供部门的创建、更新、删除、查询、列表与简单列表等接口
  • 岗位控制器:提供岗位的创建、更新、删除、查询、分页、导出与简单列表等接口
  • 部门 API:对外暴露部门的 RPC 查询与校验能力
  • 岗位 API:对外暴露岗位的 RPC 查询与校验能力
  • 部门/岗位实体:定义部门与岗位的数据结构与字段约束
  • 部门/岗位 Mapper:封装查询条件与分页逻辑

章节来源

架构总览

部门与岗位管理采用“控制器 + 服务 + 数据访问 + DTO/VO/DO”的分层设计,通过 Feign 将能力暴露为 RPC 接口,供 BPM 等模块使用。权限控制通过注解在控制器层生效,保证操作安全。

Mermaid Diagram Code:

sequenceDiagram
participant C as "客户端"
participant DC as "DeptController"
participant PC as "PostController"
participant DA as "DeptApi"
participant PA as "PostApi"
participant DAI as "DeptApiImpl"
participant PAI as "PostApiImpl"
participant DM as "DeptMapper"
participant PM as "PostMapper"
C->>DC : "POST /system/dept/create"
DC->>DA : "调用部门 RPC"
DA->>DAI : "转发到实现"
DAI->>DM : "持久化部门"
DM-->>DAI : "返回结果"
DAI-->>DA : "返回结果"
DA-->>DC : "返回结果"
DC-->>C : "返回部门ID"
C->>PC : "GET /system/post/page"
PC->>PA : "调用岗位 RPC"
PA->>PAI : "转发到实现"
PAI->>PM : "分页查询岗位"
PM-->>PAI : "返回结果"
PAI-->>PA : "返回结果"
PA-->>PC : "返回结果"
PC-->>C : "返回岗位分页"

图表来源

详细组件分析

部门数据模型与 API

  • 数据模型字段
    • 部门标识、名称、父部门标识、排序、负责人、联系方式、状态等
    • 支持租户隔离的基础实体
  • 关键接口
    • 创建、更新、删除、按条件查询、获取精简列表、获取单个部门
  • 与 BPM 的集成
    • BPM 任务候选策略可基于部门负责人或成员计算候选人

Mermaid Diagram Code:

classDiagram
class DeptDO {
+Long id
+String name
+Long parentId
+Integer sort
+Long leaderUserId
+String phone
+String email
+Integer status
}
class DeptController {
+createDept()
+updateDept()
+deleteDept()
+getDeptList()
+getSimpleDeptList()
+getDept()
}
class DeptApi {
+getDept()
+getDeptList()
+validateDeptList()
+getChildDeptList()
}
class DeptApiImpl {
+getDept()
+getDeptList()
+validateDeptList()
+getChildDeptList()
}
class DeptMapper {
+selectList()
+selectByParentIdAndName()
+selectCountByParentId()
+selectListByParentId()
+selectListByLeaderUserId()
}
DeptController --> DeptApi : "调用"
DeptApiImpl --> DeptMapper : "使用"
DeptApiImpl --> DeptDO : "返回"

图表来源

章节来源

岗位数据模型与 API

  • 数据模型字段
    • 岗位标识、名称、编码、排序、状态、备注等
  • 关键接口
    • 创建、更新、删除、按条件查询、分页查询、导出、获取精简列表
  • 与 BPM 的集成
    • BPM 可基于岗位作为候选人策略之一

Mermaid Diagram Code:

classDiagram
class PostDO {
+Long id
+String name
+String code
+Integer sort
+Integer status
+String remark
}
class PostController {
+createPost()
+updatePost()
+deletePost()
+getPost()
+getSimplePostList()
+getPostPage()
+export()
}
class PostApi {
+validPostList()
+getPostList()
}
class PostApiImpl {
+validPostList()
+getPostList()
}
class PostMapper {
+selectList()
+selectPage()
+selectByName()
+selectByCode()
}
PostController --> PostApi : "调用"
PostApiImpl --> PostMapper : "使用"
PostApiImpl --> PostDO : "返回"

图表来源

章节来源

组织架构树构建与权限继承

  • 组织架构树构建
    • 通过父部门标识形成层级关系;支持获取子部门列表以构建树形结构
  • 权限继承
    • BPM 任务候选策略可基于部门负责人或成员,实现权限沿组织链路的传递
  • 人员调动
    • 通过更新用户所属部门与岗位,结合数据权限规则,实现权限范围变更

Mermaid Diagram Code:

flowchart TD
Start(["开始"]) --> LoadRoot["加载根部门集合"]
LoadRoot --> BuildTree["递归构建子部门树"]
BuildTree --> HasChildren{"是否存在子部门"}
HasChildren --> |是| AddChildren["添加子部门节点"]
HasChildren --> |否| Done["完成"]
AddChildren --> Iterate["遍历子部门"]
Iterate --> HasChildren
Done --> End(["结束"])

图表来源

章节来源

岗位权限继承与人员配置

  • 岗位权限继承
    • BPM 可将岗位作为候选人策略,结合岗位状态与排序,实现权限的岗位维度继承
  • 人员配置
    • 用户绑定岗位后,系统可据此推导其职责边界与审批范围

Mermaid Diagram Code:

sequenceDiagram
participant BPM as "BPM 引擎"
participant Strategy as "部门负责人候选策略"
participant DA as "DeptApi"
participant PA as "PostApi"
BPM->>Strategy : "计算候选人"
Strategy->>DA : "获取部门信息"
DA-->>Strategy : "返回部门信息"
Strategy->>PA : "校验岗位列表"
PA-->>Strategy : "返回岗位有效性"
Strategy-->>BPM : "返回候选人集合"

图表来源

章节来源

依赖关系分析

  • 控制器依赖服务接口,服务接口依赖 Mapper 与 DO/DTO
  • API 层通过 Feign 对外暴露,供 BPM 等模块调用
  • 数据访问层基于通用 Mapper 封装查询条件,支持分页与多条件组合

Mermaid Diagram Code:

graph LR
DC["DeptController"] --> DA["DeptApi"]
PC["PostController"] --> PA["PostApi"]
DA --> DAI["DeptApiImpl"]
PA --> PAI["PostApiImpl"]
DAI --> DM["DeptMapper"]
PAI --> PM["PostMapper"]
DM --> DO_D["DeptDO"]
PM --> DO_P["PostDO"]

图表来源

章节来源

性能考量

  • 分页查询:岗位分页接口默认使用无分页上限参数,导出场景建议一次性拉取全量数据
  • 条件查询:部门与岗位均支持多条件组合查询,建议在高并发场景下对热点字段建立索引
  • RPC 调用:Feign 接口应避免在热路径上频繁调用,必要时引入缓存或批量查询
  • 数据权限:结合租户与数据权限规则,避免跨域查询导致的性能问题

故障排查指南

章节来源

结论

部门与岗位管理通过清晰的分层架构与 RPC 接口,实现了组织架构与职责边界的统一管理。配合 BPM 的候选人策略,能够有效支撑权限继承与人员配置,满足复杂业务场景下的权限控制需求。建议在生产环境中关注分页与查询性能、RPC 调用频率与缓存策略,并完善数据权限规则以保障安全性。

附录

部门 API 接口清单

  • 获取单个部门
    • 方法:GET
    • 路径:/system/dept/get
    • 权限:system:dept:query
    • 请求参数:id(部门编号)
    • 返回:部门响应 VO
    • 参考路径:DeptController.java
  • 获取部门列表
    • 方法:GET
    • 路径:/system/dept/list
    • 权限:system:dept:query
    • 请求参数:名称、状态等条件
    • 返回:部门列表
    • 参考路径:DeptController.java
  • 获取部门精简列表
    • 方法:GET
    • 路径:/system/dept/simple-list 或 /system/dept/list-all-simple
    • 描述:仅返回启用状态的部门,用于前端下拉
    • 返回:精简部门列表
    • 参考路径:DeptController.java
  • 创建/更新/删除部门
    • 方法:POST/PUT/DELETE
    • 路径:/system/dept/create、/system/dept/update、/system/dept/delete
    • 权限:system:dept:create、system:dept:update、system:dept:delete
    • 参考路径:DeptController.java

章节来源

岗位 API 接口清单

  • 获取单个岗位
    • 方法:GET
    • 路径:/system/post/get
    • 权限:system:post:query
    • 请求参数:id(岗位编号)
    • 返回:岗位响应 VO
    • 参考路径:PostController.java
  • 获取岗位分页列表
    • 方法:GET
    • 路径:/system/post/page
    • 权限:system:post:query
    • 请求参数:分页与筛选条件
    • 返回:岗位分页结果
    • 参考路径:PostController.java
  • 获取岗位精简列表
    • 方法:GET
    • 路径:/system/post/simple-list 或 /system/post/list-all-simple
    • 描述:仅返回启用状态的岗位,按排序返回
    • 返回:精简岗位列表
    • 参考路径:PostController.java
  • 导出岗位数据
    • 方法:GET
    • 路径:/system/post/export
    • 权限:system:post:export
    • 返回:Excel 文件
    • 参考路径:PostController.java
  • 创建/更新/删除岗位
    • 方法:POST/PUT/DELETE
    • 路径:/system/post/create、/system/post/update、/system/post/delete
    • 权限:system:post:create、system:post:update、system:post:delete
    • 参考路径:PostController.java

章节来源

部门与岗位 RPC 接口

  • 部门 RPC
    • 获取单个部门:GET /system/dept/get
    • 获取部门列表:GET /system/dept/list
    • 校验部门列表:GET /system/dept/valid
    • 获取子部门列表:GET /system/dept/list-child
    • 参考路径:DeptApi.java
  • 岗位 RPC
    • 校验岗位列表:GET /system/post/valid
    • 获取岗位列表:GET /system/post/list
    • 参考路径:PostApi.java

章节来源

数据模型字段说明

  • 部门(DeptDO)
    • 字段:id、name、parentId、sort、leaderUserId、phone、email、status
    • 参考路径:DeptDO.java
  • 岗位(PostDO)
    • 字段:id、name、code、sort、status、remark
    • 参考路径:PostDO.java

章节来源

最佳实践

  • 组织架构树构建
    • 使用父部门标识与子部门查询接口,递归构建树形结构
    • 参考路径:DeptApi.java
  • 岗位权限继承
    • 将岗位作为 BPM 候选策略之一,结合状态与排序,确保职责边界清晰
    • 参考路径:PostApi.java
  • 人员配置
    • 用户变动部门或岗位时,同步更新相关权限与数据范围
    • 参考路径:DeptApi.java

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答