6.0 KiB
6.0 KiB
代码调整记录 - 2025-01-18 - wuzhen - 统计分析API 404错误修复
📋 变更概述
变更时间: 2025-01-18 10:00:00
变更人员: wuzhen
变更类型: API接口修复
影响范围: 后端 - 统计分析模块
🔧 修复内容
问题描述
前端统计分析页面出现多处404错误:
- 获取学院选项失败: Error: 404
- 获取概览失败: Error: 404
- 获取维度选项失败: Error: 404
根本原因
- API路径不匹配: 前端调用
/xg/statisticsAnalysis/,后端控制器路径为/xg/statistics/analysis/ - 缺失接口: 前端需要的辅助接口(概览、选项等)在后端未实现
- HTTP方法不匹配: 前端使用GET请求,后端部分接口定义为POST
修复方案
1. 修复控制器路径
文件: XgStatisticsAnalysisController.java
// 修复前
@RequestMapping("/xg/statistics/analysis")
// 修复后
@RequestMapping("/xg/statisticsAnalysis")
2. 新增缺失的API接口
在XgStatisticsAnalysisController.java中新增6个接口:
新增接口列表:
GET /overview- 获取统计概览GET /dimensionOptions- 获取统计维度选项GET /collegeOptions- 获取学院选项GET /majorOptions- 获取专业选项GET /classOptions- 获取班级选项GET /chartTypeOptions- 获取图表类型选项
3. 修复HTTP方法
// 修复前
@PostMapping("/college")
public R<XgStatisticsResultVo> statisticsByCollege(@RequestBody XgStatisticsQueryBo queryBo)
// 修复后
@GetMapping("/college")
public R<XgStatisticsResultVo> statisticsByCollege(XgStatisticsQueryBo queryBo)
4. 新增Service方法
在IXgStatisticsAnalysisService.java中新增6个方法:
getStatisticsOverview()- 获取统计概览getStatisticsDimensionOptions()- 获取统计维度选项getCollegeOptions()- 获取学院选项getMajorOptions()- 获取专业选项getClassOptions()- 获取班级选项getChartTypeOptions()- 获取图表类型选项
5. 实现Service方法
在XgStatisticsAnalysisServiceImpl.java中实现所有新增方法:
- 统计概览: 查询学生、学院、专业、班级总数
- 维度选项: 返回13个统计维度选项
- 学院选项: 从数据库查询学院列表
- 专业选项: 根据学院查询专业列表
- 班级选项: 根据学院和专业查询班级列表
- 图表类型: 返回4种图表类型选项
6. 新增Mapper方法
在XgStatisticsAnalysisMapper.java中新增7个方法:
countTotalStudents()- 统计学生总数countTotalColleges()- 统计学院总数countTotalMajors()- 统计专业总数countTotalClasses()- 统计班级总数getCollegeOptions()- 获取学院选项getMajorOptions()- 获取专业选项getClassOptions()- 获取班级选项
7. 新增SQL查询
在XgStatisticsAnalysisMapper.xml中新增7个SQL查询:
<!-- 统计学生总数 -->
<select id="countTotalStudents" resultType="java.lang.Long">
SELECT COUNT(1) FROM xg_student_info WHERE deleted = 0
</select>
<!-- 获取学院选项 -->
<select id="getCollegeOptions" resultType="java.util.Map">
SELECT college_id as value, college_name as label
FROM xg_college_info WHERE deleted = 0 ORDER BY college_name
</select>
✅ 验证结果
API接口验证
/xg/statisticsAnalysis/overview- 获取统计概览/xg/statisticsAnalysis/dimensionOptions- 获取维度选项/xg/statisticsAnalysis/collegeOptions- 获取学院选项/xg/statisticsAnalysis/majorOptions- 获取专业选项/xg/statisticsAnalysis/classOptions- 获取班级选项/xg/statisticsAnalysis/chartTypeOptions- 获取图表类型选项
功能验证
- 统计概览数据正确返回
- 维度选项包含13个统计维度
- 学院选项从数据库正确查询
- 专业选项支持按学院筛选
- 班级选项支持按学院和专业筛选
- 图表类型选项包含4种类型
📊 影响评估
正面影响
- ✅ 解决前端页面404错误
- ✅ 完善统计分析API体系
- ✅ 提供完整的选项数据支持
- ✅ 支持统计概览展示
风险评估
- ⚠️ 低风险: 新增接口,不影响现有功能
- ⚠️ 兼容性: 修改路径可能影响其他调用方(需验证)
🔍 技术细节
新增接口权限配置
所有新增接口都配置了相应的权限注解:
@SaCheckPermission("xg:statistics:analysis:overview")
@SaCheckPermission("xg:statistics:analysis:dimension")
@SaCheckPermission("xg:statistics:analysis:college")
数据库查询优化
-- 使用COUNT(DISTINCT)避免重复计算
SELECT COUNT(DISTINCT college_id) FROM xg_class_info WHERE deleted = 0
-- 支持条件查询
SELECT major_id as value, major_name as label
FROM xg_major_info WHERE deleted = 0
<if test="collegeCode != null and collegeCode != ''">
AND college_id = #{collegeCode}
</if>
选项数据格式统一
所有选项接口返回统一格式:
{
"value": "选项值",
"label": "选项标签"
}
📚 相关文档
- 前端API文件:
web/src/api/xg-xx/statistics.ts - 后端控制器:
backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/controller/XgStatisticsAnalysisController.java - Service实现:
backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/service/impl/XgStatisticsAnalysisServiceImpl.java - Mapper接口:
backend/ruoyi-modules/ruoyi-xg-xx/src/main/java/org/dromara/xg/mapper/XgStatisticsAnalysisMapper.java - SQL查询:
backend/ruoyi-modules/ruoyi-xg-xx/src/main/resources/mapper/xg/XgStatisticsAnalysisMapper.xml
🎯 后续建议
- 权限配置: 在系统菜单中配置对应的按钮权限
- 单元测试: 为新增接口编写单元测试
- 性能优化: 对频繁查询的选项数据添加缓存
- API文档: 更新API文档,包含新增接口说明
修复完成时间: 2025-01-18 10:00:00
接口状态: ✅ 正常
功能状态: ✅ 可用