IAPM:基于 Spring Boot + Vue3 的企业内部审计项目管理系统------从手工审计到数字化闭环的探索与实践
一句话概要 :IAPM(Internal Audit Project Management)是一套面向企业内部审计部门的全流程数字化管理平台,覆盖从审计计划制定、项目启动、现场执行、问题记录、报告出具到整改跟踪的完整审计生命周期,帮助审计团队告别纸质底稿和散落在线文档中的审计痕迹,实现审计项目的标准化、流程化和闭环管理。
在线体验 :http://111.229.112.227:19000/login演示账号 :
zhangwei@iapm.com/ 密码:admin123源码获取 :发送您的邮箱至
1049630498@qq.com,获取源码
一、背景:为什么需要一套内审管理系统?
1.1 内部审计的行业痛点
内部审计作为企业治理的"第三道防线",承担着评价和改善风险管理、内部控制及治理流程有效性的重要职责。然而,许多企业的审计部门在实际工作中面临着诸多挑战:
- 流程碎片化:审计计划用 Word 写、审计底稿用 Excel 记、审计报告用邮件发、整改反馈靠电话催------信息散落在不同工具和渠道中,缺乏统一管理。
- 过程难追溯:审计人员的工作过程(进场、取证、访谈)无法留下系统性记录,项目结束后难以复盘,审计质量难以评估。
- 整改易流失:审计发现的问题往往在报告出具后就"石沉大海",整改落实情况靠人工跟踪,超期问题无人预警,审计成果难以转化为管理价值。
- 协作效率低:审计组内部成员之间、内审与被审计单位之间、内审与外部审计机构之间缺乏高效的在线协作通道,信息传递滞后。
- 数据分析薄弱:缺乏对审计项目数量、执行进度、问题分类、整改完成率等维度的数据统计,审计管理层难以做出数据驱动的决策。
1.2 数字化转型的必然趋势
随着《中华人民共和国内部审计法》的深入实施和企业数字化转型的全面推进,内部审计工作正从"经验驱动"向"数据驱动"转变。建设一套覆盖审计全流程的信息化系统,已成为企业提升审计质量、强化风险管控的必然选择。
IAPM 正是在这样的背景下应运而生------用技术手段将审计标准嵌入业务流程,让每一步都有迹可循、有据可查。
二、系统意义:IAPM 带来什么价值?
2.1 对审计人员:减负提效
| 传统方式 | IAPM 方式 |
|---|---|
| 手工编写审计方案,反复修改版本混乱 | 在线编制审计方案,版本集中管理 |
| Excel 记录审计底稿,文件散落各处 | 系统化录入进度记录,附件统一归档 |
| 问题发现靠口头汇报、邮件流转 | 问题在线登记,状态实时追踪(疑点→确认→消除) |
| 报告征求意见靠纸质流转 | 报告在线上传,征求意见稿与终稿分阶段管理 |
2.2 对审计管理层:全局掌控
- 项目看板:首页 Dashboard 直观展示审计计划总数、执行中项目数、整改跟踪数,一目了然。
- 流程管控:六阶段状态机(准备→启动→执行→完成→整改→关闭),每个阶段都有明确的操作和产出。
- 统计决策:按计划类型、项目类别、执行状态等多维度统计数据,为审计资源分配提供依据。
2.3 对被审计单位与外审机构:透明协作
- 审计通知在线送达:系统内置通知模块,审计通知书、报告等可在线发布并附加附件。
- 外审协作通道:通过编码机制,外部审计机构无需注册账号即可安全访问指定项目,查看进度、提交问题和报告。
- 整改在线反馈:被审计单位可通过专属编码链接进入整改反馈页面,在线提交整改措施和证明材料。
2.4 对企业治理:审计闭环
审计计划 → 审计执行 → 问题发现 → 审计报告 → 整改跟踪 → 闭环归档
↑ |
└────────────── 经验沉淀,指导下一次计划 ────────────┘
每一个审计发现的问题都能追溯到最终整改结果,实现"发现问题---整改落实---效果验证"的全链路闭环。
三、系统架构:技术选型与整体设计
3.1 技术栈总览
IAPM 采用前后端分离的现代化架构,通过 Docker Compose 实现一键部署。
| 层次 | 技术选型 | 版本 | 选型理由 |
|---|---|---|---|
| 前端框架 | Vue 3 + TypeScript | 3.x | 组合式 API,类型安全,生态成熟 |
| UI 组件库 | Element Plus | - | 企业级管理后台首选,组件丰富 |
| 状态管理 | Pinia | - | Vue 3 官方推荐,轻量高效 |
| 构建工具 | Vite | - | 极速 HMR,开发体验优秀 |
| 后端框架 | Spring Boot | 3.2.5 | Java 生态最成熟的快速开发框架 |
| 编程语言 | Java | 17 | LTS 版本,性能稳定 |
| 安全框架 | Spring Security + JWT | - | 无状态认证,适合前后端分离 |
| ORM 框架 | MyBatis-Plus | 3.5.6 | 简化 CRUD,内置分页和逻辑删除 |
| 数据库 | MySQL | 8.0 | utf8mb4 全字符集,支持完善 |
| API 文档 | Knife4j (OpenAPI 3) | 4.5.0 | 在线交互式 API 文档 |
| Excel 处理 | EasyExcel | 3.3.4 | 大数据量导出性能优异 |
| 部署方案 | Docker Compose | - | 容器化部署,环境一致性保障 |
3.2 系统整体架构图
┌─────────────────────────────────────────────────────────┐
│ 用户浏览器 / 外审终端 │
│ (Vue3 SPA + Element Plus) │
└────────────────────────┬────────────────────────────────┘
│ HTTP / HTTPS
▼
┌─────────────────────────────────────────────────────────┐
│ Nginx 反向代理 (:80) │
│ 静态资源服务 + API 请求转发 │
└────────────────────────┬────────────────────────────────┘
│ /api/**
▼
┌─────────────────────────────────────────────────────────┐
│ Spring Boot 后端 (:8081) │
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌───────────┐ │
│ │Security ││ Controller │ │ Service │ │ Mapper │ │
│ │JWT Filter││ (9个模块) │ │(6个服务) │ │(19个Mapper)│ │
│ └──────────┘ └───────────┘ └──────────┘ └───────────┘ │
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ │
│ │ 全局异常 ││ 文件管理 │ │ 自动填充 │ │
│ │ 处理器 ││ (100MB) │ │ 处理器 │ │
│ └──────────┘ └───────────┘ └──────────┘ │
└────────────────────────┬────────────────────────────────┘
│ JDBC
▼
┌─────────────────────────────────────────────────────────┐
│ MySQL 8.0 数据库 (:3306) │
│ 20张核心表 + utf8mb4 字符集 │
└─────────────────────────────────────────────────────────┘
3.3 后端分层架构
后端代码遵循经典的分层架构,职责清晰:
com.iapm/
├── IapmApplication.java # 应用启动入口
├── common/ # 公共层
│ ├── Result.java # 统一响应结构 {code, message, data}
│ ├── PageResult.java # 分页结果封装
│ ├── BizCode.java # 业务错误码定义
│ ├── BizException.java # 业务异常
│ └── GlobalExceptionHandler.java# 全局异常处理器(@RestControllerAdvice)
│
├── config/ # 配置层
│ ├── SecurityConfig.java # Spring Security 安全配置
│ ├── WebMvcConfig.java # 静态资源映射(/files/**, /media/**)
│ ├── MyBatisPlusConfig.java # 分页插件配置
│ └── MyMetaObjectHandler.java # 创建时间/更新时间自动填充
│
├── security/ # 安全层
│ ├── JwtAuthFilter.java # JWT 认证过滤器
│ └── UserContext.java # 当前用户上下文(ThreadLocal 实现)
│
├── util/ # 工具层
│ ├── JwtUtil.java # JWT 生成与解析(jjwt 0.12.5)
│ └── CodingUtil.java # 外审模块编解码
│
├── dto/ # 数据传输对象(8个)
├── entity/ # 数据库实体类(19个)
├── mapper/ # MyBatis-Plus Mapper(19个)
├── service/ # 业务逻辑层
│ └── impl/ # 服务实现(6个)
└── controller/ # RESTful 控制器(9个)
3.4 前端路由与页面结构
前端基于 Vue Router 实现页面路由,按角色权限划分为三大区域:
/ (BasicLayout)
├── 公开页面(无需登录)
│ ├── /login → 登录
│ ├── /register → 注册
│ ├── /exaudit-return → 外审编码入口
│ ├── /external/:code/* → 外审协作(4个子页面)
│ └── /rectification/:code → 整改反馈入口
│
├── 业务页面(需登录 + 分配公司)
│ ├── /dashboard → 审计看板(首页)
│ ├── /plans → 审计计划列表
│ ├── /plans/:id → 计划详情
│ ├── /plans/:id/start → 项目启动(审计方案编制)
│ ├── /plans/executing → 执行中项目
│ ├── /notices → 通知公告
│ ├── /ex/plans/:id/schedules → 审计进度记录
│ ├── /ex/plans/:id/problems → 审计问题
│ ├── /ex/problems/:id → 问题详情
│ ├── /ex/plans/:id/reports → 审计报告
│ ├── /ex/rectification → 整改跟踪列表
│ ├── /ex/rectification/problems/:id → 整改详情
│ └── /ex/rectification/problems/:projectId/feedback/:problemId → 整改反馈
│
├── 超管页面(需超级管理员权限)
│ ├── /users → 用户管理
│ └── /companies → 单位管理
│
└── 个人设置(所有人)
├── /profile → 个人资料
├── /theme → 主题设置
└── /change-password → 修改密码
3.5 Docker 部署架构
系统采用 Docker Compose 编排,三个容器协同工作:
┌──────────────────────────────────────────────────┐
│ Docker Compose │
│ │
│ ┌─────────┐ ┌───────────┐ ┌────────────┐ │
│ │ MySQL │◄──│ Spring Boot│◄──│ Nginx+Vue │ │
│ │ (:3306) │ │ (:8081) │ │ (:80) │ │
│ └────┬────┘ └─────┬─────┘ └────────────┘ │
│ │ │ │
│ ┌────▼────┐ ┌──────▼──────┐ │
│ │mysql-data│ │server-media │ │
│ │ (Volume) │ │ (Volume) │ │
│ └─────────┘ └─────────────┘ │
└──────────────────────────────────────────────────┘
一键启动:
bash
docker-compose up -d
MySQL 容器在首次启动时会自动执行初始化脚本(建库建表 + 演示数据),实现真正的"开箱即用"。
四、核心功能:覆盖审计全生命周期
4.1 审计项目六阶段状态机
IAPM 的核心设计理念是将审计项目建模为一个有限状态机,每个阶段都有明确的操作和产出:
pl(准备) ──→ st(启动) ──→ ex(执行) ──→ cp(完成) ──→ re(整改) ──→ cl(关闭)
│ │ │ │ │
│ │ │ │ │
制定审计 编制审计方案 现场审计 出具报告 跟踪整改
计划 组建审计组 发现问题 征求意见 闭环归档
下达通知
| 状态码 | 阶段名称 | 核心操作 | 关键产出物 |
|---|---|---|---|
pl |
准备 | 创建审计计划,填写项目名称、年度、类型、依据 | 审计计划 |
st |
启动 | 编制审计方案、添加被审计单位、组建审计组、下发通知 | 审计方案、审计通知书 |
ex |
执行 | 记录审计进度、登记审计问题、上传审计底稿和报告 | 进度记录、问题清单、审计报告 |
cp |
完成 | 审计报告定稿,问题转入整改 | 审计报告终稿 |
re |
整改 | 整改项目跟踪、接收整改反馈、超期预警 | 整改反馈记录 |
cl |
关闭 | 整改完成,项目归档 | 完整审计档案 |
4.2 核心业务模块详解
模块一:审计计划管理
- 支持年度计划 和临时计划两种类型
- 项目类别涵盖常规审计、专项审计、财务收支审计等
- 计划列表支持分页查询、关键字搜索、状态筛选
- 统计接口实时返回各状态项目数量
- 一键启动项目:自动将创建人设为主审,流转到执行阶段
模块二:项目启动与方案编制
- 审计方案:在线填写审计目标、范围、依据、内容、程序、预计时间
- 被审计单位管理:一个项目可关联多个被审计单位及联系人
- 审计组成员管理:三级角色体系(主审 lvl1 / 组员 lvl2 / 其他 lvl3)
- 审计通知:在线签发审计通知书,支持附件上传
模块三:审计执行
- 进度记录:审计人员按日/周记录工作内容,主审可填写反馈意见
- 问题管理 :发现问题在线登记,支持三级状态流转
do(疑点)→co(确认)→el(消除)- 区分
sg(审计建议)和re(需整改)两种问题类型
- 附件管理:进度记录、问题均支持附件上传(图片、文档、压缩包,单文件最大 100MB)
- 报告管理:支持过程稿、终稿分阶段管理,征求意见稿和反馈文件独立归档
模块四:审计通知与报告
- 通知类型支持:审计通知(
audit)、普通通知(nomal)、审计报告(report) - 通知关联计划,可附加多个附件文件
- 报告文件分为四类:过程稿(
pr)、过程稿附件(prfi)、终稿(fi)、终稿附件(fifi)
模块五:整改跟踪(审计闭环的关键)
整改模块是 IAPM 最具业务价值的模块,实现了审计成果到管理价值的转化:
审计问题 → 自动转入整改项目 → 分配整改责任部门和责任人
│
┌─────────┼──────────┐
▼ ▼ ▼
整改中 完成 无法整改
(pr) (co) (un)
核心特性:
- 整改项目:从已完成的审计项目中自动提取需整改问题,生成整改项目
- 整改问题:每条问题包含整改要求、整改期限、责任部门、责任人、是否问责、是否公告等字段
- 整改反馈:被审计单位可多次提交反馈,系统记录每次反馈内容和时间
- 超期预警 :系统自动计算整改状态,通过
warn_status字段标识0正常 /1即将超期 /2已超期
- 在线反馈入口 :通过编码链接
/rectification/:code,被审计单位无需登录即可在线提交整改
模块六:外审协作
IAPM 创新性地引入了外审协作模块,支持与外部审计机构的安全协作:
- 通过编码技术(
CodingUtil)为每个项目生成唯一访问编码 - 外审机构通过
/external/:code访问指定项目 - 可查看审计进度、登记问题、上传报告
- 无需注册账号,编码即权限,安全可控
4.3 数据库设计
系统共设计 20张核心数据表,覆盖审计业务全流程:
| 序号 | 表名 | 说明 |
|---|---|---|
| 1 | company_info |
公司/审计单位信息 |
| 2 | user_profile |
用户信息(含个性化主题配置) |
| 3 | plans_info |
审计计划(核心表) |
| 4 | start_field_info |
启动字段配置(表单) |
| 5 | start_info |
审计方案 |
| 6 | audit_company_info |
被审计单位 |
| 7 | audit_member_info |
审计组成员 |
| 8 | all_notice_info |
通知信息 |
| 9 | all_notice_file_info |
通知附件 |
| 10 | start_file_info |
启动文件 |
| 11 | schedule_info |
审计进度记录 |
| 12 | schedule_file_info |
进度附件 |
| 13 | problem_info |
审计问题 |
| 14 | problem_file_info |
问题附件 |
| 15 | report_file_info |
审计报告文件 |
| 16 | feedback_file_info |
反馈文件(报告阶段) |
| 17 | rectification_project_info |
整改项目 |
| 18 | rectification_problem_info |
整改问题(含预警字段) |
| 19 | rectification_feedback_info |
整改反馈记录 |
| 20 | rectification_feedback_file_info |
整改反馈附件 |
设计特点:
- 全表逻辑删除(
status字段:1有效/0删除),数据安全可追溯 - 自动填充
create_time/update_time,审计痕迹完整 - 关键查询字段建立索引(
plan_id、company_id、status等),保障查询性能 - 字符集统一采用
utf8mb4,支持完整 Unicode 字符
4.4 安全设计
| 安全维度 | 实现方案 |
|---|---|
| 身份认证 | JWT 无状态令牌(jjwt 0.12.5),有效期 10 小时 |
| 密码安全 | BCrypt 哈希加密存储 |
| 权限控制 | 三级权限体系:超级管理员 / 普通用户 / 外审用户 |
| 路由守卫 | 前端路由 meta 标签控制(requireSuperuser / requireCompany / public) |
| 外审安全 | 编码机制,编码即权限,无需账号 |
| 文件安全 | 文件类型白名单限制(jpg/png/pdf/doc/xls/zip 等) |
| API 安全 | Spring Security 过滤器链,非白名单接口强制认证 |
五、应用效果:数字化审计的实践价值
5.1 流程标准化
IAPM 将原本依赖个人经验的审计流程固化为系统化操作步骤:
- 以前:审计方案格式因人而异,审计底稿模板不统一,报告流转靠人工
- 现在:系统统一定义审计方案的七大要素(目标、范围、依据、内容、程序、时间、人员),每一步操作都有标准化界面和必填校验
5.2 过程可追溯
- 审计进度按日记录,主审可逐条反馈
- 审计问题从"发现"到"消除"全程留痕,每次状态变更都有时间戳
- 整改反馈支持多次提交,反馈历史完整保存
- 文件附件与业务记录精确关联,支持按项目、按问题、按阶段检索
5.3 协作在线化
| 协作场景 | 传统方式 | IAPM 方式 |
|---|---|---|
| 审计组内部协作 | 微信群、邮件 | 系统内成员分配,进度和问题实时共享 |
| 审计通知送达 | 纸质签收 | 在线发布,附件即下即用 |
| 报告征求意见 | 邮件往来 | 系统内上传征求意见稿和反馈文件 |
| 外审机构协作 | 线下交接 | 编码即访问,在线查看和提交 |
| 整改反馈 | 电话+邮件 | 专属链接在线提交,附件佐证 |
5.4 数据可视化
Dashboard 首页提供审计业务全景看板:
- 审计业务流程图:直观展示"审计计划→审计执行→整改跟踪"三阶段,点击可快速跳转
- 统计卡片:审计计划总数、执行中项目数、整改跟踪数等关键指标一目了然
- 多维度筛选:计划列表支持按年度、类型、状态等条件筛选,快速定位目标项目
5.5 审计闭环
IAPM 的整改跟踪模块真正实现了审计闭环:
发现问题 → 转入整改 → 分配责任 → 跟踪反馈 → 超期预警 → 闭环验证
↑ |
└────── 整改数据沉淀,形成风险地图,指导下一年计划 ─────┘
整改完成率、超期问题数、问责情况等数据,为管理层提供了量化评估审计效果的依据。
六、技术亮点
6.1 容器化一键部署
通过 Docker Compose 编排 MySQL + Spring Boot + Nginx 三个容器:
- 环境一致性:开发、测试、生产环境完全一致
- 部署简单 :
docker-compose up -d一键启动 - 数据持久化:MySQL 数据和上传文件通过 Volume 持久化
- 健康检查:MySQL 容器内置健康检查,后端容器在数据库就绪后自动启动
- 参数可配:端口、密码等通过环境变量灵活配置
七、总结与展望
7.1 项目价值总结
IAPM 内部审计项目管理系统通过数字化手段,解决了企业内部审计工作中的四大核心问题:
- 流程标准化:六阶段状态机将审计流程固化,减少人为偏差
- 过程透明化:进度记录、问题追踪、文件归档全程在线,审计质量可控
- 协作在线化:审计组、被审计单位、外审机构三方在线协作
- 整改闭环化:问题发现到整改验证全链路跟踪,审计成果真正落地
7.2 未来展望
IAPM 作为一个持续演进的系统,未来可以在以下方向深化:
- 智能审计:引入数据分析模型,实现风险预警和异常自动识别
- 移动端适配:支持移动端查看进度和接收预警通知
- 知识库建设:将历史审计问题和整改经验沉淀为知识库,辅助审计决策
- 报表引擎:集成专业报表工具,支持自定义审计统计报表
- 工作流引擎:引入工作流引擎(如 Flowable),实现更灵活的审批流程配置