OA 功能设计
这篇解决什么
协同办公怎么分层:车辆 / 印章 / 会议室 / 用品是台账,用车用印公文出差汇报工单是单据,审批一律交给 BPM。云盘没有流程。读完先对模块边界和表,再进各功能篇。
默认端口 48080,前缀 /admin-api。工程启动见 快速开始。审批接入见 业务表单开发。
业务流程及架构
OA 自己不算流程引擎。台账和单据在 yudao-module-oa;用车、用印等实现 FlowBillService,通过后回调回写。请假演示 oa_leave 在 BPM 模块,不在 OaBillTypeEnum。
示意图:左客户端。中间 OA 读系统部门与用户,单据提交走 Flowable。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 用车 | 车辆台账 + 用车 / 还车两张单 | 用车申请 |
| 用印 | 印章台账 + 一张单,外借在原单归还 | 用印申请 |
| 云盘 | 目录 / 版本 / 权限,无流程 key | 文件管理 |
| 会议室 | 房间档案 + 预订单,后端拦时段冲突 | 会议室预订 |
| 公文 | 发文 / 收文 / 外部收文三条 key | 公文收发 |
| 用品 | 台账 + 领用单 + 发放扣库存 | 办公用品 |
| 出差 | 出差申请与差旅报销两张单 | 出差与报销 |
| 汇报 | 日 / 周 / 月共用 oa_work_report | 工作汇报 |
| 工单 | 菜单在顶栏 /ticket,实现仍在 OA 模块 | 工单 |
不要用目录名当流程 key
用车是 oa_car_apply_bill,不是 oa_car。全部 key 以 OaBillTypeEnum 为准。接待宴请等走流程表单,不在这张枚举里。
数据表 ER
主干表按本仓库 DO 画出。用品还有发放明细,公文还有套红模板和归档,工单还有处理组 / SLA / 回复,图上只留主链。
示意图:按本仓库生成的 ER。云盘不挂流程实例。还车是第二张单,还印不是。
前后端代码
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 模块 | api 枚举 + server 实现 | ruoyi-office/yudao-module-oa/ |
| 单体引入 | yudao-module-oa-server | ruoyi-office/yudao-server/pom.xml |
| 单据枚举 | 类型码 + processDefinitionKey | yudao-module-oa-api/.../OaBillTypeEnum.java |
| 管理端 | OA 目录;工单页在 views/oa/ticket | ruoyi-office-vben/apps/web-antd/src/views/oa/ |
| 移动端 | 业务在 pages-oa | ruoyi-office-uniapp/src/pages-oa/ |
官方菜单:5013 OA(/oa)。车辆 5020,印章 5101,云盘 5122,会议室 5137,公文 5263,用品 5294,出差 5315,汇报 5339。工单顶栏 5534(/ticket),实现仍是 OA。看不到菜单先查角色。

本系统截图:OA → 车辆管理 → 用车申请。模块和菜单已经在跑。

本系统截图:用车单 info。模型路径必须对 carapply/list / info,不要指向已删的 apply/detail。
功能开启
单体 -P boot 时已经依赖 OA 实现,没有单独的「OA 开关」页。启动 YudaoServerApplication 即可。
客户默认包 ruoyi-office-db/dump/latest/:先 schema_*.sql 再 static_data_*.sql,带 oa_* 表、菜单、字典和已发布用车 / 用印等模型。以后改表走 ruoyi-office-db/update/。
「OA 商业版」是裁剪仓:保留 OA / BPM / 系统,去掉 IoT、商城等。本指南按全功能 ALL 写,OA 模块在两个版本里都有。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
101 用车 | oa_car_apply_bill | /oa/car/car-apply-info |
102 还车 | oa_car_return_bill | /oa/car/car-return-info |
103 用印 | oa_seal_apply_bill | /oa/seal/seal-apply-info |
104 会议室 | oa_meeting_room_booking | /oa/meetingroom/booking-info |
105 发文 | oa_office_doc_send | /oa/officedoc/send-info |
106 收文 | oa_office_doc_receive | /oa/officedoc/receive-info |
107 外部收文 | oa_office_doc_outside | /oa/officedoc/outside-info |
108 领用 | oa_supply_apply_bill | /oa/supply/supply-apply-info |
109 出差 | oa_business_trip | /oa/trip/trip-apply-info |
110 差旅报销 | oa_travel_reimburse | /oa/trip/trip-reimburse-info |
111 工作汇报 | oa_work_report | /oa/workreport/work-report-info |
120 工单 | oa_ticket_bill | /ticket/ticket-bill-info |
先对模型再改页面
流程设置里能搜到已发布的 oa_car_apply_bill 等。自定义路径对 list / info,不要指向已删的 apply/detail。
OA_CAR_APPLY_BILL("101", "用车申请单","oa_car_apply_bill"),
OA_SEAL_APPLY_BILL("103", "用印申请单","oa_seal_apply_bill"),摘自 OaBillTypeEnum。第三段才是 Flowable 的 KEY_。
示意图:先库和菜单,再对 key,最后配台账。
旧文 OA 功能开启 已并入本页,请收藏本篇。
