夜雨聆风学习资料网

ARTICLE · 1023700

源码专题-java0184-基于Spring Boot企业OA管理系统

源码专题-java0184-基于Spring Boot企业OA管理系统

企业OA管理系统:一套面向中小型企业的前后端分离办公自动化实践

  技术视角下的产品拆解:Spring Boot + MyBatis-Plus 后端服务,Vue 2 + Element UI 管理端,覆盖员工日常协作与组织集中管控。
企业 OA(Office Automation,办公自动化)系统解决的不是某一个单点功能,而是把组织内高频、重复、跨角色的事务——人员信息、审批流转、公告知会、工作记录——收敛到一个统一的后台里。本文基于一套已落地运行的企业 OA 管理系统,从工程实现角度梳理它的技术选型、角色权责与值得关注的工程亮点。

一、系统定位与角色模型

系统采用经典的前后端分离架构,后端提供 RESTful 接口,前端基于 Vue 单页应用承载全部管理操作。整体只存在两类后台角色,权责边界清晰:
  • 管理员:组织侧的管控者,负责基础数据、人员、审批结论与公告发布。
  • 用户(员工):业务侧的参与者,负责提交审批、维护个人便签与工作日志、查看公告。
权限通过角色字段在服务端做数据隔离。例如工作审批列表接口会依据当前会话角色,自动把查询条件收敛到 `yonghuId`,员工只能看到自己的申请,管理员看到全量并拥有审核权。

二、后端技术栈

后端是一个标准的 Spring Boot 单体应用,技术选型偏稳健,强调开发效率与可维护性:
  • Spring Boot 2.2.2:内嵌 Tomcat,约定优于配置,统一处理 Web、校验与静态资源。
  • MyBatis + MyBatis-Plus 2.x:在原生 MyBatis 之上提供通用 Mapper 与分页插件,单表 CRUD 几乎零 SQL;复杂联表(如审批单关联员工信息)通过 View 对象与字典转换在 Service 层完成。
  • Apache Shiro:负责认证与授权,配合 Token / Session 机制完成登录态管理。
  • MySQL:业务主存储,库名 qiyeOAguanlixitong,UTF-8 字符集。
  • 百度 AI Java SDK:系统里最具差异化的一层,封装了人脸识别(AipFace)与地图逆地理编码能力。
  • Apache POI:支撑员工信息的 Excel 批量导入。
  • Hutool / FastJson / commons-io:工具层,覆盖字符串、JSON、文件流等通用能力。
  • Thymeleaf + devtools:静态资源托管与开发期热部署。
数据访问层有一个统一的设计习惯:所有实体都配套 `Entity / Dao / Service / Controller / View` 五层,并通过一个通用的 `CommonController` 暴露统计能力(`group`、`value`、`cal`、`newSelectGroupSum`、`newSelectDateGroupSum`),前端图表直接消费这些聚合接口,无需为每张表单独写统计 SQL。

三、前端技术栈

管理端是一个 Vue 2 单页应用,构建工具链为 Vue CLI 4,UI 体系建立在 Element UI 之上:
  • Vue 2.7 + Vue Router(hash 模式)+ Vuex:路由做模块级拆分,Vuex 承载少量全局状态。
  • Element UI 2.13:表单、表格、弹窗等后台组件的主体。
  • Axios:封装为全局 $http,统一携带 Token 与错误拦截。
  • ECharts 4.6(macarons 主题):数据可视化,对接后端聚合接口渲染统计图表。
  • vue-quill-editor:通知公告的富文本编辑与展示。
  • vue-qr:员工凭证 / 签到场景的二维码生成。
  • vue-amap(高德地图):地图选点、位置展示,与后端逆地理编码配合。
  • vue-json-excel + print-js:列表数据导出 Excel、关键单据打印。
  • js-md5:登录口令前端摘要,配合后端校验。
  • svg-sprite-loader:图标以雪碧图方式按需加载,减少请求数。
前端通过 `utils/menu.js` 集中描述角色菜单与按钮权限(查看 / 新增 / 修改 / 删除 / 审核),路由与界面按角色动态呈现,做到同一套代码适配两种权限视角。

四、各角色核心功能

管理员

管理员拥有系统内最完整的管控面,可归纳为四条主线:
  1. 组织与基础数据:管理部门、岗位,以及便签类型、工作类型、公告类型、日志类型、审批状态等字典数据。字典表采用「一张通用表 + code/name 映射」的设计,新增一类枚举无需改表结构,是典型的低代码式扩展。
  2. 人员管理:维护员工(用户)信息,支持 Excel 批量导入,降低初始化成本;可重置密码、维护头像等人脸底图。
  3. 工作审批:查看全部审批单,对员工提交进行「审核」,驱动状态在待审批 / 已通过 / 已拒绝之间流转,形成闭环。
  4. 信息发布与记录:通过富文本发布通知公告;统一管理日志信息;可查看并维护个人便签。

用户(员工)

员工视角聚焦「办事」而非「管控」:
  1. 工作审批:发起审批申请(选择工作类型、填写内容),随后跟踪自己的审批状态。
  2. 个人便签:私有的轻量记事,支持增改删,用于随身备忘。
  3. 日志信息:维护个人工作日志,支持新增、修改、删除。
  4. 通知公告:只读查看管理员发布的公告,保证组织信息触达。
这种「员工发起、管理员裁决」的双向结构,恰好覆盖了 OA 最核心的协作链路。

五、项目亮点

1. 百度 AI 人脸识别比对

后端通过 `AipFace` 提供 `/matchFace` 接口,将两张人脸图以 BASE64 方式做 1:1 比对,分数由百度人脸引擎返回。该能力可作为考勤签到或身份核验的底层支撑,是这套系统区别于普通后台管理模板的关键点。

2. 可配置的工作审批流

审批不是写死的状态机,而是依托「工作类型字典 + 审批状态字典」组合实现。员工按类型提交,管理员审核,状态字段驱动界面与统计,后续新增审批类别只需加字典,不必改动业务代码。

3. 多维度数据统计与可视化

`CommonController` 把分组、求和、按日期汇总等统计能力抽象成通用接口,前端用 ECharts 直接渲染。无论是按部门、按类型还是按时间维度,都能快速产出图表,支撑管理决策。

4. 通用字典表设计

部门、岗位、各类业务类型统一存放在一张字典表中,配合前端的下拉联动接口。这种「配置即数据」的思路显著降低了枚举类需求的迭代成本。

5. 地图能力融入考勤场景

前端接入高德地图用于位置展示,后端提供百度逆地理编码接口,将经纬度解析为可读地址。两者结合,使「在哪提交的审批 / 考勤」具备空间语义。

6. 办公套件一体化

富文本公告、二维码生成、Excel 导入导出、单据打印在同一后台内连贯可用,员工从填报到留痕、从导出到归档形成完整链路,减少在多个工具间切换的成本。

7. 工程化的权限与安全防护

Shiro 做服务端鉴权,角色级数据隔离在服务层生效;登录支持验证码,口令经 MD5 摘要处理;Token / Session 统一托管登录态。前端菜单与按钮权限由 `menu.js` 集中声明,避免越权操作。

六、小结

这套企业 OA 管理系统并没有追求技术上的新奇,而是把「稳」放在第一位:后端用 Spring Boot + MyBatis-Plus 把重复劳动降到最低,前端用 Vue + Element UI 快速搭出可用的管理界面,再叠加百度 AI 人脸、ECharts 可视化、地图与办公套件等能力,构成一套能真正跑起来的组织协作底座。对于中小型团队而言,这种「通用后台框架 + 业务字典驱动」的组合,往往比从零造轮子更划算,也更容易在后续按需扩展。

代码获取

系统非商用,非开源,非无偿!,非无偿!,非无偿!

由本人开发,如需源码,请后台直接联系我并发项目编号,非无偿。

项目有很多,并未全部上传,如果未找到想要的,可直接咨询。源码非无偿!

软件定制及其他业务

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

相关学习资料

返回首页浏览学习资料