Files
railwaysystem/docs/codebase-audit/02_training_modules_inventory.md
T

18 KiB
Raw Blame History

培训业务模块与 14 组 CRUD 盘点

1. 审计口径

本文件来自对以下实际目录的逐项比对:

  • Controller:RuoYi-Vue/ruoyi-admin/src/main/java/com/ruoyi/web/controller/train/
  • Domain:RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/
  • Mapper:RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/mapper/
  • Service:RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/service/
  • XML:RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/
  • 前端:build_ui/src/views/train/、build_ui/src/api/train/
  • 表设计:doc/学员管理系统数据表设计_20260907_1_.docx

14 组后端均为同一生成式结构:分页列表、Excel 导出、详情、新增、修改、物理批量删除。未发现培训专用 DTO/VO;Controller 直接接收并返回 Domain。ServiceImpl 基本为 Mapper 委托,没有领域校验、跨表编排、事务流程或外部系统调用。

2. 模块逐项盘点

2.1 教师信息

模块名称: 教师信息(train_teacher)

后端:

  • Controller:TrainTeacherController
  • Service:ITrainTeacherService
  • ServiceImpl:TrainTeacherServiceImpl
  • Mapper:TrainTeacherMapper
  • XML:TrainTeacherMapper.xml
  • Domain / Entity:TrainTeacher
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/teacher/index.vue
  • api:build_ui/src/api/train/teacher.js

数据库: 涉及表 train_teacher

当前已有功能:

  1. 教师条件列表、详情、新增、修改、批量删除。
  2. 基于 @Excel 字段注解的导出。
  3. 字段覆盖工号、姓名、性别、出生日期、院系、职称、电话、邮箱及公共审计字段。

明显缺失:

  1. 没有教师与 sys_user 的账号关联。
  2. 没有资质/证书、状态、可授课程、授课范围及教师数据权限。
  3. 删除为物理删除;无导入接口、查重与跨表引用校验。

2.2 学员信息

模块名称: 学员信息(train_student)

后端:

  • Controller:TrainStudentController
  • Service:ITrainStudentService
  • ServiceImpl:TrainStudentServiceImpl
  • Mapper:TrainStudentMapper
  • XML:TrainStudentMapper.xml
  • Domain / Entity:TrainStudent
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/student/index.vue
  • api:build_ui/src/api/train/student.js

数据库: 涉及表 train_student

当前已有功能:

  1. 学员条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存学号、姓名、性别、出生日期、院系、专业、班级、电话。

明显缺失:

  1. 没有学员与 sys_user 的账号关联,也没有身份证/人脸等报到和门禁所需身份数据。
  2. 没有参训/报名关系、学员在某期培训中的状态。
  3. 删除为物理删除;无培训学员导入接口和重复校验。

2.3 课程信息

模块名称: 课程信息(train_course)

后端:

  • Controller:TrainCourseController
  • Service:ITrainCourseService
  • ServiceImpl:TrainCourseServiceImpl
  • Mapper:TrainCourseMapper
  • XML:TrainCourseMapper.xml
  • Domain / Entity:TrainCourse
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/course/index.vue
  • api:build_ui/src/api/train/course.js

数据库: 涉及表 train_course

当前已有功能:

  1. 课程条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 文档、视频、模型链接和模型资源 ID 以文本字段保存。

明显缺失:

  1. 没有课程版本、章节、课次、课表、资源实体及资源关系。
  2. 附件和多资源使用逗号分隔/文本 URL,没有与已有上传能力形成业务关系。
  3. 无课程发布、审核、上下架等动作。

2.4 开班计划

模块名称: 开班计划(train_class_plan)

后端:

  • Controller:TrainClassPlanController
  • Service:ITrainClassPlanService
  • ServiceImpl:TrainClassPlanServiceImpl
  • Mapper:TrainClassPlanMapper
  • XML:TrainClassPlanMapper.xml
  • Domain / Entity:TrainClassPlan
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/plan/index.vue
  • api:build_ui/src/api/train/plan.js

数据库: 涉及表 train_class_plan

当前已有功能:

  1. 计划条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存单个 c_id、单个 t_id、起止时间、地点、招生人数、报名条件、状态。

明显缺失:

  1. 一个计划只有一个课程与一个教师,不能表达一班多课、多教师、逐课次安排。
  2. 没有参训名单、报名审核、开班/结班等状态动作。
  3. 没有教室、实训场地、课程时间冲突校验。

2.5 宿舍信息

模块名称: 宿舍信息(train_dormitory_info)

后端:

  • Controller:TrainDormitoryInfoController
  • Service:ITrainDormitoryInfoService
  • ServiceImpl:TrainDormitoryInfoServiceImpl
  • Mapper:TrainDormitoryInfoMapper
  • XML:TrainDormitoryInfoMapper.xml
  • Domain / Entity:TrainDormitoryInfo
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/dormitory/index.vue(有未提交修改)
  • api:build_ui/src/api/train/dormitory.js(未跟踪)

数据库: 涉及表 train_dormitory_info

当前已有功能:

  1. 当前工作树页面与 API 支持宿舍列表、详情、新增、修改、删除。
  2. 保存楼栋、房间号、床位总数/已用数、门锁序列号、状态。
  3. Controller 同时接受 /train/dorminfo 与 /train/dormitory,该别名改动尚未提交。

明显缺失:

  1. 当前页面没有导出按钮和 v-hasPermi 按钮权限控制;后端仍有导出接口。
  2. 没有独立床位实体、床位占用唯一性或容量一致性校验。
  3. 无楼栋/楼层层级和住宿状态流转。

2.6 宿舍权限分配

模块名称: 宿舍权限分配(train_dorm_auth)

后端:

  • Controller:TrainDormAuthController
  • Service:ITrainDormAuthService
  • ServiceImpl:TrainDormAuthServiceImpl
  • Mapper:TrainDormAuthMapper
  • XML:TrainDormAuthMapper.xml
  • Domain / Entity:TrainDormAuth
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/auth/index.vue
  • api:build_ui/src/api/train/auth.js

数据库: 涉及表 train_dorm_auth

当前已有功能:

  1. 权限记录条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存学员、计划、宿舍、床号、授权起止时间和人脸下发状态。

明显缺失:

  1. 没有实际门锁下发接口、回调、重试、错误详情或操作流水。
  2. 住宿分配与设备授权耦合在一张表,没有独立住宿分配状态。
  3. 没有床位冲突、时段重叠、人员/计划/房间存在性校验。

2.7 教室信息

模块名称: 教室信息(train_classroom_info)

后端:

  • Controller:TrainClassroomInfoController
  • Service:ITrainClassroomInfoService
  • ServiceImpl:TrainClassroomInfoServiceImpl
  • Mapper:TrainClassroomInfoMapper
  • XML:TrainClassroomInfoMapper.xml
  • Domain / Entity:TrainClassroomInfo
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/classroom/index.vue
  • api:页面实际导入 build_ui/src/api/train/info.js;另有未跟踪的 classroom.js

数据库: 涉及表 train_classroom_info

当前已有功能:

  1. 教室列表、详情、新增、修改、删除与导出。
  2. 保存名称、位置、容量、状态。
  3. 当前 Controller 接受 /train/classroominfo、/train/classroom、/train/info 三个前缀,属于未提交兼容改动。

明显缺失:

  1. 前后端权限分别为 train:info:* 和 system:info:*,不一致。
  2. 多个 API 文件/别名并存,规范入口尚未收敛。
  3. 无排课占用、时间冲突与容量校验。

2.8 实训场地

模块名称: 实训场地(train_training_site)

后端:

  • Controller:TrainTrainingSiteController
  • Service:ITrainTrainingSiteService
  • ServiceImpl:TrainTrainingSiteServiceImpl
  • Mapper:TrainTrainingSiteMapper
  • XML:TrainTrainingSiteMapper.xml
  • Domain / Entity:TrainTrainingSite
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/site/index.vue
  • api:build_ui/src/api/train/site.js

数据库: 涉及表 train_training_site

当前已有功能:

  1. 场地条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存名称、位置、容量、配套设备文本、状态。

明显缺失:

  1. 配套设备仅为文本字段,没有设备资产关系。
  2. 无场地排期、占用、冲突和容量校验。
  3. 无场地类型、设备可用状态的独立管理。

2.9 开班报到

模块名称: 开班报到(train_class_report)

后端:

  • Controller:TrainClassReportController
  • Service:ITrainClassReportService
  • ServiceImpl:TrainClassReportServiceImpl
  • Mapper:TrainClassReportMapper
  • XML:TrainClassReportMapper.xml
  • Domain / Entity:TrainClassReport
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/report/index.vue
  • api:build_ui/src/api/train/report.js

数据库: 涉及表 train_class_report

当前已有功能:

  1. 报到记录条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存报到方式、设备号、时间、状态,以及宿舍/教室/场地分配 ID。

明显缺失:

  1. 页面是人工维护 CRUD,没有身份证/人脸设备接入或回调接口。
  2. 没有参训名单作为报到资格来源,也没有防重复报到与状态流转。
  3. 报到事件与三类资源分配耦合,未见原子事务和容量/冲突校验。

2.10 电子班牌

模块名称: 电子班牌设备(train_electronic_board)

后端:

  • Controller:TrainElectronicBoardController
  • Service:ITrainElectronicBoardService
  • ServiceImpl:TrainElectronicBoardServiceImpl
  • Mapper:TrainElectronicBoardMapper
  • XML:TrainElectronicBoardMapper.xml
  • Domain / Entity:TrainElectronicBoard
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/board/index.vue
  • api:build_ui/src/api/train/board.js

数据库: 涉及表 train_electronic_board

当前已有功能:

  1. 班牌设备条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存序列号、绑定教室/计划、IP、显示内容、播放模式、签到类型、在线状态、最后心跳。

明显缺失:

  1. 没有心跳上报、内容发布、设备命令、签到回调等外部接入接口。
  2. 没有设备认证、签名、幂等和离线判定任务。
  3. board_playmode 的设计注释与 board_status 都使用“离线/在线”语义,字段边界不清。

2.11 学员签到

模块名称: 学员签到(train_student_checkin)

后端:

  • Controller:TrainStudentCheckinController
  • Service:ITrainStudentCheckinService
  • ServiceImpl:TrainStudentCheckinServiceImpl
  • Mapper:TrainStudentCheckinMapper
  • XML:TrainStudentCheckinMapper.xml
  • Domain / Entity:TrainStudentCheckin
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/checkin/index.vue
  • api:build_ui/src/api/train/checkin.js

数据库: 涉及表 train_student_checkin

当前已有功能:

  1. 签到记录条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存计划、课程、学员、班牌、签到方式/状态,以及课次起止时间。

明显缺失:

  1. 没有 lesson_id/课次实体;每条签到重复保存课程起止时间。
  2. 没有设备签到接入、二维码生成/核验、迟到早退计算或补签审批。
  3. 没有同一学员同一课次的唯一约束/幂等证据。

2.12 多类型成绩

模块名称: 多类型成绩(train_score_info)

后端:

  • Controller:TrainScoreInfoController
  • Service:ITrainScoreInfoService
  • ServiceImpl:TrainScoreInfoServiceImpl
  • Mapper:TrainScoreInfoMapper
  • XML:TrainScoreInfoMapper.xml
  • Domain / Entity:TrainScoreInfo
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/score/index.vue(未跟踪)
  • api:build_ui/src/api/train/score.js(未跟踪)
  • 只读衍生视图:student-score/index.vue、course-score/index.vue(均未跟踪)

数据库: 涉及表 train_score_info

当前已有功能:

  1. 当前工作树有成绩列表、详情、新增、修改、删除页面/API;后端有导出接口。
  2. 保存课程成绩、实训成绩、考核成绩、来源类型/系统、导入时间。
  3. 学员成绩和课程成绩页面只是调用同一列表接口做筛选;课程成绩页以 examScore 在前端计算显示评级。

明显缺失:

  1. 成绩页面没有按钮权限指令和导出入口,文件仍未纳入 Git。
  2. 没有 Excel 导入接口、外部采集接口、错误反馈、审核/发布/锁定。
  3. 没有权重、综合分公式及版本;代码未计算真正综合成绩。

2.13 学习时长

模块名称: 学习时长统计(train_study_duration)

后端:

  • Controller:TrainStudyDurationController
  • Service:ITrainStudyDurationService
  • ServiceImpl:TrainStudyDurationServiceImpl
  • Mapper:TrainStudyDurationMapper
  • XML:TrainStudyDurationMapper.xml
  • Domain / Entity:TrainStudyDuration
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/duration/index.vue
  • api:build_ui/src/api/train/duration.js

数据库: 涉及表 train_study_duration

当前已有功能:

  1. 时长记录条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存设备类型、起止时间、时长秒数和同步时间。

明显缺失:

  1. 没有设备/外部系统上报接口、外部事件 ID、幂等与异常记录。
  2. 没有由起止时间校验或计算 study_seconds 的业务逻辑。
  3. 无汇总统计接口;所谓“统计”当前仍是明细 CRUD。

2.14 学员画像

模块名称: 学员画像(train_student_portrait)

后端:

  • Controller:TrainStudentPortraitController
  • Service:ITrainStudentPortraitService
  • ServiceImpl:TrainStudentPortraitServiceImpl
  • Mapper:TrainStudentPortraitMapper
  • XML:TrainStudentPortraitMapper.xml
  • Domain / Entity:TrainStudentPortrait
  • DTO / VO:无

前端:

  • views:build_ui/src/views/train/portrait/index.vue
  • api:build_ui/src/api/train/portrait.js

数据库: 涉及表 train_student_portrait

当前已有功能:

  1. 画像记录条件列表、详情、新增、修改、批量删除。
  2. Excel 导出。
  3. 保存总学习时长、平均成绩、签到率、标签和综合描述。

明显缺失:

  1. 没有从签到、成绩、学习时长聚合生成画像的服务。
  2. 没有指标/标签规则、版本、快照历史或生成时间。
  3. 前端只是表格 CRUD,没有雷达图、趋势或画像工作台。

3. 14 组 CRUD 完整度

模块 数据表 Entity Mapper Service Controller 前端 API 前端页面 CRUD 完整度
教师 train_teacher TrainTeacher 接口+XML 接口+Impl TrainTeacherController teacher.js teacher/index.vue 疑似生成但未接通
学员 train_student TrainStudent 接口+XML 接口+Impl TrainStudentController student.js student/index.vue 疑似生成但未接通
课程 train_course TrainCourse 接口+XML 接口+Impl TrainCourseController course.js course/index.vue 疑似生成但未接通
开班计划 train_class_plan TrainClassPlan 接口+XML 接口+Impl TrainClassPlanController plan.js plan/index.vue 疑似生成但未接通
宿舍 train_dormitory_info TrainDormitoryInfo 接口+XML 接口+Impl TrainDormitoryInfoController dormitory.js(未跟踪) dormitory/index.vue(已修改) 疑似生成但未接通
宿舍权限 train_dorm_auth TrainDormAuth 接口+XML 接口+Impl TrainDormAuthController auth.js auth/index.vue 疑似生成但未接通
教室 train_classroom_info TrainClassroomInfo 接口+XML 接口+Impl TrainClassroomInfoController(已修改) info.js(已修改) classroom/index.vue 疑似生成但未接通
实训场地 train_training_site TrainTrainingSite 接口+XML 接口+Impl TrainTrainingSiteController site.js site/index.vue 疑似生成但未接通
开班报到 train_class_report TrainClassReport 接口+XML 接口+Impl TrainClassReportController report.js report/index.vue 疑似生成但未接通
电子班牌 train_electronic_board TrainElectronicBoard 接口+XML 接口+Impl TrainElectronicBoardController board.js board/index.vue 疑似生成但未接通
学员签到 train_student_checkin TrainStudentCheckin 接口+XML 接口+Impl TrainStudentCheckinController checkin.js checkin/index.vue 疑似生成但未接通
多类型成绩 train_score_info TrainScoreInfo 接口+XML 接口+Impl TrainScoreInfoController(已修改) score.js(未跟踪) score/index.vue(未跟踪) 疑似生成但未接通
学习时长 train_study_duration TrainStudyDuration 接口+XML 接口+Impl TrainStudyDurationController duration.js duration/index.vue 疑似生成但未接通
学员画像 train_student_portrait TrainStudentPortrait 接口+XML 接口+Impl TrainStudentPortraitController portrait.js portrait/index.vue 疑似生成但未接通

判断说明

这里的“疑似生成但未接通”不是说缺少 CRUD 文件。相反,14 组的六类后端构件和对应前端页面/API在当前工作树都存在。采用该结论是因为:

  1. 仓库没有培训表 DDL或迁移,无法证明运行数据库有表。
  2. 仓库没有培训 sys_menu/权限初始化 SQL,前后端权限字符串还普遍不一致。
  3. 成绩、宿舍 API及部分页面/Controller适配尚未提交。
  4. 没有端到端测试、接口测试或当前启动验证证据。

若只按“是否具有生成器产出的 CRUD 文件”衡量,14 组均为代码层齐全;若按“用户可从菜单登录并完成 CRUD”衡量,目前没有一组可以由仓库证据确认“完整”。