1、 立项背景和目标 :
随着国家对青少年体质健康的重视,传统体育测试存在数据采集效率低、标准执行不统一、缺乏科学训练指导等痛点。本项目旨在打造一套“智慧体育精准训练与中考体育智能管理系统”,通过软硬件结合实现体测数据的智能采集、多维分析与精准指导,助力学校提升体育教学质量,规范中考体育模拟考试流程。
2、 核心功能模块介绍 :
- 基础组织架构管理 :支持省、市、校多级数据隔离,包含学校、年级、班级、学生基础档案以及人脸库的维护。
- 评测标准与规则引擎 :内置国家体测标准,支持自定义测试项目、计分规则与等级划分(优秀、良好、及格、不及格,如肺活量、坐位体前屈等体测项目)。
- 设备与智能采集接入 :移动端集成蓝牙(BLE)体测设备与 AI 人脸识别终端,实现无感学生身份核验与成绩自动上报。
- 中考模拟与日常任务 :支持日常体测计划发布、模拟考报名编排,记录实时测试成绩。
- 多维数据分析与报表 :提供学校、班级多维度体测报告与成绩追踪,支持复杂表头与可视化图表的 Excel 导出。
3、 业务流程、功能路径描述 :
管理员在系统后台配置体测项目与评分标准 -> 下发日常体测计划或模拟考任务 -> 教师/考务人员通过移动端 App 或智能设备进行现场检录(人脸识别/扫码) -> 学生进行体测,智能设备通过蓝牙自动回传成绩至云端 -> 系统规则引擎自动计算得分与等级 -> 教师与教育局端实时查看多维度体测统计报表,并根据报告数据调整后续训练方案。
1、整体架构和设计思路 项目采用前后端分离的多模块微服务架构。后端基于 Spring Boot 2.5 + MyBatis-Plus,通过 RuoYi 框架搭建 RBAC 权限与跨机构数据隔离。数据层采用 MySQL 结合 MongoDB(存储人脸等非结构化数据)。性能与调度层引入 Caffeine、Redis 及 Quartz。报表引擎深度定制 FastExcel 与 EasyPoi。前端基于 Vue.js 与 UniApp。
2、负责模块和结果
- 核心数据聚合与SQL优化 :主导成绩管理模块(PhyResults)的大数据量统计。针对多维统计(如 BMI 等)查询慢的瓶颈,重构底层逻辑,提取 item_id=0 的唯一汇总记录进行聚合,替代了昂贵的 COUNT(DISTINCT) 全表扫描。核心接口响应时间降低 60% 以上,极大减少数据库 CPU 开销。
- 复杂报表引擎底层构建 :负责教委/学校端体测报告导出。基于 FastExcel 与 POI 的 XDDFChart,自研支持多级动态表头的导出组件。通过 SheetWriteHandler 将流式工作簿强制向下转型获取底层 XSSFSheet ,实现纯后端原生绘制数据可视化图表。
- 跨机构数据隔离 :针对省、市、校多级架构,在 Service 层结合用户上下文( deptId 及 ancestors 祖级树)与 MyBatis 动态 SQL,实现了灵活的数据水平隔离方案。
3、难点和解决方案
- 难点1:图表报表并发导出导致 OOM 。初期方案依赖前端渲染 Base64 图片传给后端插入 Excel,高并发时极易触发 OOM 且图片模糊。 解决 :弃用图片流,在后端利用 POI 底层 API 读取 Excel 数据区域,由客户端本地矢量渲染图表。彻底解决服务端 OOM 问题并保证图表高清交互。
- 难点2:多模块架构类加载异常 。开发期常遇 NoClassDefFoundError ,排查系 Spring Boot DevTools 热加载导致类加载器不一致及多模块编译不完整。 解决 :规范 Maven 构建流程,统一在父工程 clean install ,调整 devtools 策略,解决热部署类冲突。
- 难点3:低版本 JDK 环境 AES 加密异常 。内网老旧服务器部署时抛出 Illegal key size 异常。 解决 :排查确认为 JDK 1.8(8u161 以下)限制了 128 位密钥长度。通过升级 JDK 或手动替换 JCE 无限制权限策略文件,保障了加密流程运行。