Files
hzdyjs/docs/变更管理/code-adjust-record-2025-01-26-毕业生信息管理后端服务开发.md
T
2025-07-30 23:24:43 +08:00

9.9 KiB
Raw Blame History

毕业生信息管理后端服务开发完成

时间: 2025-01-26 23:45:00
开发者: AI Assistant
模块: 招生就业管理 - 毕业生信息管理
任务类型: 后端服务开发

📋 开发完成概览

🎯 开发成果

文件类型 数量 功能描述
Mapper接口 1个 数据访问层,包含基础查询和统计方法
Service接口 1个 业务逻辑接口,定义服务契约
Service实现类 1个 业务逻辑实现,包含完整的CRUD和统计功能
Controller控制器 1个 REST API接口层,提供22个API接口

📁 创建的文件清单

1. ZsjyGraduateInfoMapper.java(Mapper接口)

  • 路径: backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/mapper/ZsjyGraduateInfoMapper.java
  • 继承: BaseMapperPlus<ZsjyGraduateInfo, ZsjyGraduateInfoVo>
  • 方法数量: 16个自定义方法
  • 核心功能:
    • 分页查询和列表查询
    • 学号和身份证号唯一性查询
    • 8个统计方法(专业、学院、就业状态、单位性质、地域、薪资、年份、总体统计)
    • 按学院、专业、班级分类查询
    • 待审核数量统计

2. IZsjyGraduateInfoService.java(Service接口)

  • 路径: backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/service/IZsjyGraduateInfoService.java
  • 方法数量: 23个方法
  • 核心功能:
    • 基础CRUD操作(查询、新增、修改、删除)
    • 数据校验方法(学号、身份证号唯一性)
    • 审核功能(单个审核、批量审核)
    • 统计功能(8个维度的统计)
    • 分类查询功能

3. ZsjyGraduateInfoServiceImpl.java(Service实现类)

  • 路径: backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/service/impl/ZsjyGraduateInfoServiceImpl.java
  • 代码行数: 380+行
  • 核心特性:
    • 事务管理: 关键操作使用@Transactional
    • 数据校验: 完整的业务逻辑校验
    • 唯一性校验: 学号和身份证号重复检查
    • 业务规则: 就业状态相关字段联动校验
    • 审核功能: 支持单个和批量审核
    • 查询构建: 动态查询条件构建

4. ZsjyGraduateInfoController.java(Controller控制器)

  • 路径: backend/ruoyi-modules/ruoyi-zsjy/src/main/java/org/dromara/zsjy/controller/ZsjyGraduateInfoController.java
  • API接口数量: 22个REST接口
  • 请求映射: /zsjy/graduate
  • 权限控制: 每个接口都有@SaCheckPermission注解

🔧 API接口设计详情

基础CRUD接口(7个)

方法 路径 权限 描述
GET /list zsjy:graduate:list 分页查询毕业生信息列表
POST /export zsjy:graduate:export 导出毕业生信息(Excel)
GET /{id} zsjy:graduate:query 获取毕业生详细信息
POST / zsjy:graduate:add 新增毕业生信息
PUT / zsjy:graduate:edit 修改毕业生信息
DELETE /{ids} zsjy:graduate:remove 批量删除毕业生信息

业务查询接口(6个)

方法 路径 权限 描述
GET /student/{studentNo} zsjy:graduate:query 根据学号查询
GET /idcard/{idCard} zsjy:graduate:query 根据身份证号查询
GET /checkStudentNo - 校验学号唯一性
GET /checkIdCard - 校验身份证号唯一性
GET /pendingCount zsjy:graduate:query 查询待审核数量

审核功能接口(2个)

方法 路径 权限 描述
PUT /audit/{id} zsjy:graduate:audit 审核毕业生信息
PUT /batchAudit zsjy:graduate:audit 批量审核毕业生信息

统计功能接口(7个)

方法 路径 权限 描述
GET /statistics/overall zsjy:graduate:statistics 总体就业统计
GET /statistics/major zsjy:graduate:statistics 按专业统计
GET /statistics/college zsjy:graduate:statistics 按学院统计
GET /statistics/employment zsjy:graduate:statistics 按就业状态统计
GET /statistics/company zsjy:graduate:statistics 按单位性质统计
GET /statistics/region zsjy:graduate:statistics 按地域分布统计
GET /statistics/salary zsjy:graduate:statistics 按薪资范围统计
GET /statistics/year zsjy:graduate:statistics 按年份统计

分类查询接口(3个)

方法 路径 权限 描述
GET /college/{collegeId} zsjy:graduate:query 按学院查询
GET /major/{majorId} zsjy:graduate:query 按专业查询
GET /class/{classId} zsjy:graduate:query 按班级查询

🛡️ 安全特性

权限控制

  • 基础权限: zsjy:graduate:list、zsjy:graduate:query、zsjy:graduate:add、zsjy:graduate:edit、zsjy:graduate:remove
  • 业务权限: zsjy:graduate:audit、zsjy:graduate:statistics、zsjy:graduate:export
  • 权限粒度: 接口级别权限控制,支持细分操作权限

数据校验

  • 输入验证: Bean Validation注解验证
  • 业务校验: 学号和身份证号唯一性校验
  • 逻辑校验: 入学年份与毕业年份逻辑关系校验
  • 状态联动: 就业状态与相关字段的联动校验

安全防护

  • 重复提交: @RepeatSubmit防止重复提交
  • 参数验证: @NotNull、@NotBlank、@NotEmpty参数校验
  • 事务管理: 关键操作事务回滚保护

🎯 业务逻辑特色

数据完整性保障

  1. 唯一性约束: 学号和身份证号在应用层和数据库层双重保障
  2. 业务逻辑校验: 入学年份不能大于等于毕业年份
  3. 状态联动校验:
    • 已就业状态下,就业单位名称必填
    • 升学状态下,升学院校必填

审核流程管理

  1. 默认状态: 新增毕业生信息默认为"待审核"状态
  2. 审核记录: 自动记录审核时间、审核人、审核意见
  3. 批量操作: 支持批量审核提高操作效率

查询功能完善

  1. 多维度查询: 支持按姓名、学号、身份证号、就业状态等多字段查询
  2. 分类查询: 支持按学院、专业、班级进行数据筛选
  3. 模糊查询: 姓名、学号等字段支持模糊匹配

📊 统计功能设计

统计维度(8个)

  1. 总体统计: 整体就业率、升学率等关键指标
  2. 专业维度: 各专业就业情况对比
  3. 学院维度: 各学院就业数据汇总
  4. 就业状态: 各种就业状态分布统计
  5. 单位性质: 国企、私企、外企等分布
  6. 地域分布: 就业地区分析
  7. 薪资水平: 薪资范围分布统计
  8. 历年趋势: 多年度就业数据对比

统计特性

  • 参数化查询: 支持按毕业年份筛选统计数据
  • 灵活组合: 可单独或组合使用多个统计维度
  • 数据完整: 统计结果包含数量、百分比等详细信息

🔄 开发规范遵循

代码规范

  • ✅ 命名规范: 遵循驼峰命名和语义化命名
  • ✅ 注释完整: 类、方法、参数都有详细注释
  • ✅ 异常处理: 业务异常统一抛出RuntimeException
  • ✅ 日志记录: 关键操作添加@Log注解

架构规范

  • ✅ 分层架构: Controller → Service → Mapper清晰分层
  • ✅ 依赖注入: 使用@RequiredArgsConstructor构造器注入
  • ✅ VO/BO模式: 严格区分视图对象和业务对象
  • ✅ 统一响应: 使用R<T>和TableDataInfo<T>统一响应格式

数据库规范

  • ✅ 实体映射: 继承BaseMapperPlus获得基础CRUD能力
  • ✅ 查询构建: 使用LambdaQueryWrapper构建动态查询
  • ✅ 分页支持: 集成MyBatis-Plus分页功能
  • ✅ 事务管理: 关键操作使用事务保护

🚀 后续开发建议

阶段二:Mapper SQL实现(预计1-2天)

  1. 创建XML映射文件: 实现Mapper接口中的自定义查询方法
  2. 优化查询性能: 编写高效的SQL语句
  3. 统计SQL实现: 实现复杂的统计查询逻辑

阶段三:前端页面开发(预计3-5天)

  1. 列表页面: 毕业生信息查询、筛选、导出功能
  2. 表单页面: 新增、编辑毕业生信息
  3. 统计页面: 各种维度的统计图表展示
  4. 审核页面: 批量审核操作界面

阶段四:系统集成测试(预计1天)

  1. API接口测试: 验证所有REST接口功能
  2. 业务流程测试: 完整的业务操作流程测试
  3. 性能测试: 大数据量下的查询和统计性能

📝 技术要点总结

🔑 关键技术实现

  1. 动态查询构建: 基于MyBatis-Plus的LambdaQueryWrapper实现灵活的条件查询
  2. 数据映射转换: 使用MapstructUtils实现BO与Entity之间的自动转换
  3. 分页查询优化: 集成MyBatis-Plus分页插件,支持高效的分页查询
  4. 参数校验体系: Bean Validation + 自定义业务校验的两层验证机制

🎯 业务亮点

  1. 完整的审核流程: 支持单个和批量审核,记录审核轨迹
  2. 多维度统计分析: 8个维度的就业统计,满足不同层面的数据分析需求
  3. 灵活的查询体系: 支持精确查询、模糊查询、分类查询等多种查询模式
  4. 数据完整性保障: 应用层和数据库层双重唯一性约束

✅ 完成状态

  • ✅ Mapper接口: 100%完成(16个方法)
  • ✅ Service接口: 100%完成(23个方法)
  • ✅ Service实现: 100%完成(380+行代码)
  • ✅ Controller接口: 100%完成(22个REST API)
  • ⏳ Mapper XML: 待开发(下一阶段)
  • ⏳ 前端页面: 待开发
  • ⏳ 权限配置: 待配置

🎉 毕业生信息管理后端服务开发完成!现在可以进行Mapper SQL实现或编译测试。