臭名昭著aTrust隔离计划1.臭名昭著aTrust隔离计划2.VPN原理与aTrust隔离网络实践3.docker-easyconnect到底做了什么4.TUN(tunnel-隧道-虚拟网卡)模式
基于Quartz搭建的个人博客1.Quartz个人博客使用教程2.使用 rsync 增量部署 Quartz 博客3.使用 GitHub Actions 自动部署 Quartz 博客5.域名绑定6.CDN加速Obsidian、双向链接与知识图谱
旅行
行程攻略青岛三日游行程攻略
前端
NginxNginx配置与反向代理入门
Nodenpm与npx的区别
中华财险-公司项目
对外接口文档
基础数据码表对外接口(仅支持rpc调用)业务码表对外接口应用主数据对外接口
基础运营查询版本更新日志详情消息中心对外接口站内信对外接口站内信模板配置手册
权限中心权限中心对外接口文档(最新)权限中心对外接口文档前端ACL-CORE FACADE依赖版本
审计中心审计中心对外接口文档audit-center-facade版本
审批中心工作流迁审批流现状工作流迁审批流API能力替换方案老审批流接口文档审批中心接口文档审批中心业务回调FAQ
账号中心内部系统对接单点登录内部系统对接认证中心三方网页应用登录授权账号中心对外接口文档前端账号中心RPC接口文档账户变更对外广播消息文档账户中心对外接口HRMS外部员工变更广播消息文档HRMS外部员工对外接口
组织员工岗位🔥机构映射SDK接口文档员工岗位变更通知说明组织机构管营一体概念与用法组织员工对外广播消息文档组织员工岗位对外接口文档组织员工岗位对外接口文档前端组织员工岗位数据模型组织员工主数据业务场景案例organization-facade版本
hrms(大型人力资源外包管理系统)
项目架构说明HRMS Maven模块与依赖说明
项目说明0.流程中心模块0.组织模块说明1.业务线模块2.计划模块3.项目模块4.协议模块5.供应商模块6.合约域模块7.外包人员模块*核心:外包人员生命周期
项目运维外包人员项目编制差异排查与修复2.HRMS相关问题排查4.修改externalId(externalId和accountId不一致)
需求-系分
1.内部转外包0723外包人员关联历史内部账号系分新增外包人员关联历史账号内容(紧急0723上线)需求
2.工作岗位0820工作岗位0820需求工作岗位0820需求-系分
3.用工模式调整0917内部人员转外包用工系统需求2内部人员转外包用工系统需求-系分
sso(账号中心-单点登录)
项目架构说明aboss-sso项目架构入门AOP统一日志打印链路Maven多模块项目高级知识OAuth2.0
项目说明1.SSO-OAuth2.0与IDaaS登录流程2.外部账号创建流水号并发问题分析
AI
使用说明
第三方插件&技能简介Archify使用与安装指南Ponytail使用指南
CodexCodex CLI与IDE区别及使用指南Codex Hook单独配置与提交通知Codex MCP安装与使用指南Codex第三方插件安装与使用指南
Agent开发1.LLM、Token、上下文窗口与模型参数2.大模型 API、请求参数与响应结构3.Spring AI ChatClient4.Prompt、System Prompt、Prompt 模板6.结构化输出、JSON Schema7.SSE 流式响应8.会话 ID、聊天记录、Redis9.超时、重试、限流、降级10.完成可运行聊天接口
GitGit常用命令与Obsidian推送排查
Java
面试题Java基础与集合面试题
AtomicInteger原子计数与并发安全ConcurrentHashMap并发安全与计数Java线程、线程池与Future
python
基础Python基础语法
HTTPXHRMS员工详情接口调用(Python HTTPX)

1. 了解概念

“机构”就是公司内部为了管理业务而划分出来的单位,不是建筑物或办事地点。可以把它理解为公司这棵大树上的一个分支:总公司管分公司,分公司管中心支公司,中心支公司下面还会有部门。

第一次看这个模块时,先记住下面这组关系:

总公司 → 分公司 → 中心支公司 → 部门

  • 机构:公司内部的一个管理单位,例如总公司、分公司、中心支公司、支公司或部门。它说明业务由哪个单位负责。
  • 组织:系统把公司里的各个机构,按照“谁管理谁”的关系连起来后形成的整体。例如,总公司管理分公司、分公司管理中心支公司,这套上下级关系就是组织。
  • 组织编码:机构的唯一标识,可以理解为机构的身份证号。机构名称可能变化,系统用编码准确识别它。
  • 经营组织:实际承担经营和管理责任的机构,例如总公司、分公司或中心支公司。部门通常不是经营组织,它更像经营组织下面的具体办事单位。系统以外部组织主数据的类型为准:代码只把 branchOrgType = 0 的机构按经营组织处理。
  • 归属经营组织:系统给人员、项目、计划或协议标注的“由哪家分公司或中心支公司负责”。它不是人员每天工作的具体部门。比如小明在“南京中心支公司理赔部”工作,系统会把小明归到“南京中心支公司”名下;以后统计这个中心支公司有多少外包人员时,就会把小明算进去。

例如,外包人员小明在“南京中心支公司理赔部”工作:理赔部是他的工作部门,南京中心支公司是他的归属经营组织。前者说明“人在哪里做事”,后者说明“这项业务由哪一级公司机构负责”。HRMS 以归属经营组织作为人员统计、计划额度、协议归属和部分数据查询范围的组织依据。

2. 模块有什么用

可以把组织模块理解为 HRMS 使用的“公司机构地图”。它回答的不是“某个人属于哪个部门”,而是“这个部门属于哪一家分公司、这家分公司又归谁管理”。这张地图让系统知道公司内部各个机构之间的上下级关系。

例如,公司有总公司、某省分公司、某市中心支公司和一个具体部门。一名外包人员实际在这个部门工作,但人员、项目、计划和协议在系统中往往需要按其所属的经营机构统计和管理。组织模块就帮助系统沿着机构关系向上找到合适的经营机构,避免把部门、分公司和中心支公司混在一起使用。

组织模块本身不提供“新建分公司、调整部门归属”这类功能。这些组织主数据由外部组织系统维护;HRMS 负责接收并使用它们。它主要做三件事:

  • 记录机构之间的上下级关系,方便查出“某机构及其下级机构”。
  • 为人员、项目、计划和协议找到归属机构,并补充可展示的机构名称。
  • 根据登录账号所在的机构,帮助各业务模块圈定可查询的数据范围。

3. 核心业务逻辑

3.1 组织主数据从哪里来

HRMS 通过 SOFA MQ 订阅外部组织系统的机构变更消息。消息必须包含机构编码、名称、行政管理维度的父机构编码和完整路径;校验通过后,系统把这四项内容写入本地 t_abs_org_basic 表。

本地写入采用“按机构编码替换”的方式:同一个机构再次收到变更消息时,会以最新名称、父级和路径覆盖旧快照,而不是新增一条重复记录。

本地快照主要服务于按路径查询“本机构及全部下级机构”。机构的详细资料、经营组织判断、机构路径与岗位信息,仍主要实时调用外部组织服务和岗位服务获取。

3.2 如何识别归属经营组织

这一段想说明的是:系统知道人员在哪个部门工作后,还要继续确认这个部门属于哪家分公司或中心支公司。因为部门通常不是经营组织,系统不能直接把部门当作人员的归属单位。

例如,公司内部关系如下:

总公司 → 江苏分公司 → 南京中心支公司 → 理赔部

小明在“理赔部”工作。系统从理赔部开始往上查:理赔部不是经营组织,继续往上是南京中心支公司;南京中心支公司是经营组织,于是系统记录:

  • 小明的工作部门:理赔部
  • 小明的归属经营组织:南京中心支公司

这里的“组织路径”只是指这条从部门一路往上的关系:理赔部 → 南京中心支公司 → 江苏分公司 → 总公司。“找最近的经营组织”就是从小明所在的理赔部开始,往上找到的第一家分公司或中心支公司;在这个例子中就是南京中心支公司。

这样做的结果是:系统既保留小明具体在哪个部门工作,也能把小明计入南京中心支公司的人员、计划或协议相关业务中。若江苏分公司查询人员时选择“包含下级机构”,小明也会出现在该分公司的查询结果中。

3.3 组织范围与数据查询

这一节涉及三个容易混淆的问题,可以先用一个例子理解:

总公司 → 江苏分公司 → 南京中心支公司 → 理赔部

小明在南京中心支公司的理赔部工作,所以小明的归属经营组织是“南京中心支公司”。这只是给小明贴上的归属标签,说明小明算在哪家机构名下;它不代表谁都能查看小明。

假设李经理的账号权限组织是“江苏分公司”。他进入外包人员列表时,系统会先用这个权限组织确定李经理可以看的大范围,再根据他有没有选择具体机构、有没有勾选“包含下级机构”决定实际显示什么:

李经理的操作实际查询范围能否看到小明
不指定具体机构江苏分公司及其下级机构能看到,因为南京中心支公司在江苏分公司下面
选择“江苏分公司”,不勾选“包含下级机构”只查江苏分公司本级看不到,因为小明归属南京中心支公司
选择“江苏分公司”,勾选“包含下级机构”江苏分公司及其下级机构能看到
选择“南京中心支公司”,不勾选“包含下级机构”只查归属南京中心支公司的人员,例如小明能看到
选择“南京中心支公司”,勾选“包含下级机构”除了小明,还查南京中心支公司下面各机构的人员;如果没有下级机构,结果与上一行相同能看到

其中:

  • 归属经营组织:数据算在哪家机构名下。例如小明归属南京中心支公司。
  • 权限组织:系统给登录账号划定的“最大查看范围从哪里开始”。例如李经理负责江苏分公司,账号的权限组织是江苏分公司,因此他可以按规则查看江苏分公司及其下级机构的数据;如果张经理的权限组织是南京中心支公司,他通常不能因为自己在江苏分公司下面,就查看江苏分公司其他中心支公司的数据。权限组织说的是“这个账号有权看哪里”,不是“人员或项目归属哪里”。
  • 查询范围:本次页面实际查哪些机构,由权限组织、用户选择的机构和“包含下级机构”共同决定。

待确认:权限组织从哪里来。 外包人员查询请求要求前端传入权限组织编码,HRMS 再据此查询该机构及下级机构。当前代码未显示该编码是在页面上由用户选择,还是由账号/ACL 权限系统自动带出;后续需要查看前端实现或权限系统配置确认。

因此,归属经营组织是“这条数据属于谁”,权限组织是“这个人最多能看多大范围”,查询范围是“这一次实际查哪里”。三者不是同一个概念。

不同模块计算查询范围的方式并不完全一样:

查询场景范围怎么确定例子
外包人员查询根据权限组织、用户选中的机构和“包含下级机构”开关,从本地组织快照查下级李经理权限在江苏分公司,选择“包含下级机构”后,可以查到归属南京中心支公司的人,例如小明
项目查询部分场景先取当前登录账号所属经营组织,再向下取下级机构范围账号所属江苏分公司时,查询范围可包含该分公司下的南京中心支公司
协议查询按账号权限组织所在层级,使用单独的可见范围规则同样是江苏分公司账号,协议页面的范围要按下表计算,不能直接套用外包人员查询规则

协议查询可以继续用同一组机构理解:

总公司 → 江苏分公司 → 南京中心支公司

账号的权限组织协议查询可见范围例子
总公司不额外限制组织范围可以查询各分公司和中心支公司的协议
江苏分公司江苏分公司本身,以及它直接下属的中心支公司可以查询江苏分公司和南京中心支公司的协议
南京中心支公司南京中心支公司本身,以及它的上级江苏分公司可以查询南京中心支公司和江苏分公司的协议;不能据此查看其他分公司的协议

无论哪个模块,用户在页面上选择的筛选机构都必须处于该账号允许查看的范围内,不能跨范围查询。例如,李经理权限在江苏分公司时,不能直接筛选广东分公司。

3.4 对计划与审批的作用

这一部分其实是在说两件事:计划该按哪些机构来算,以及审批该找谁处理

3.4.1 计划:决定哪些机构参与计算

计划可以先理解为“某一年、某家机构可以使用多少外包人员额度”的安排。系统会识别一家经营组织属于总公司、省级分公司、直辖市公司、计划单列市公司还是中心支公司,再决定计划初始化、汇总或导入时应该按哪些机构处理。

例如,系统在生成某年度计划时,不会把所有机构都当成同一种层级处理:江苏分公司和南京中心支公司的计划数据,可能分别参与不同层级的汇总。读这篇笔记时,只需要知道组织模块负责告诉计划模块“这家机构属于哪一类、它和谁是上下级”;额度如何计算是计划模块自己的规则。

3.4.2 审批:决定到哪一级机构、找什么角色

审批可以理解为“把待办交给合适的人”。系统需要同时知道两件事:

系统需要的信息它解决的问题例子
组织层级和组织编码审批人应当在总公司、分公司还是中心支公司一项业务归属南京中心支公司时,流程可以知道南京中心支公司和上级江苏分公司分别是谁
业务线标签在该机构中应找哪类业务角色如果业务属于理赔条线,流程应找理赔相关的负责人,而不是该机构中的任意负责人

可以把它想成“地址 + 职责”:组织层级和组织编码提供审批人的地址,业务线标签提供审批人的职责。例如,一项归属南京中心支公司、属于理赔条线的项目需要审批时,流程可根据组织信息找到南京中心支公司或江苏分公司的审批范围,再根据理赔标签找到该范围内对应的理赔业务人员。

组织模块只负责提供机构层级、机构编码和组织路径等依据;具体审批节点、审批顺序以及每个标签对应谁,由项目、协议和流程配置共同决定。

4. 与其他模块的关系

关联对象组织模块提供的能力关联目的
外包人员管理校验人员归属组织、补充组织名称、按机构及下级筛选防止人员挂到不存在的组织,并控制查询范围
项目与计划管理识别经营组织、地域类型和下级范围按机构维度编制、汇总和维护计划或项目数据
协议管理计算组织权限范围、补充甲方和归属组织名称、识别审批层级控制协议可见范围,并为审批选择相应机构层级
业务线与组织层级共同参与部分审批路由组织确定处理机构,业务线确定该机构内的业务角色
外部组织/岗位/账号服务组织主数据、组织路径、岗位信息、账号所属经营组织HRMS 不拥有这些主数据,以外部服务为准

5. 使用与维护注意事项

  • 组织变更消息必须带完整行政路径。路径缺失或错误会直接影响“包含下级”的查询结果,可能造成少查或多查数据。
  • 本地机构表是同步快照,不等同于外部组织系统的完整主数据。出现组织名称、层级或范围不一致时,应优先核对消息消费是否成功,再核对外部组织服务返回结果。
  • 人员、项目、计划、协议对组织层级的使用方式不同。调整组织层级或权限逻辑前,应分别评估这几类场景,不宜只验证一个列表查询。
  • 消息处理代码记录异常后仍确认消费成功,未见自动重试或死信处理逻辑;若消息格式或落库失败,需要依靠日志和运维手段发现并补偿。这是从当前代码可见的风险,补偿流程是否另有平台保障待确认。
  • 本地落库使用替换写入,适合保存最新快照;代码未显示组织删除或失效消息的处理规则,组织撤销后的本地数据如何清理待确认。

6. 总结

组织模块是 HRMS 跨业务使用的基础能力:外部系统维护组织,HRMS 保留可快速查下级的本地快照,并实时获取组织路径和经营组织信息。它既提供业务归属的共同坐标,也为不同模块的查询范围和审批路由提供依据;但具体权限规则由外包人员、项目和协议等模块各自实现。