5.4 KiB
5.4 KiB
代码调整记录 - 2025-01-07 - wuzhen
📋 变更概览
变更日期: 2025-01-07
变更人员: wuzhen
变更类型: 新功能开发
变更范围: 奖学金名额统计功能
🎯 变更目标
为奖学金名额管理系统增加实时统计功能,包括:
- 总名额统计
- 已用名额统计
- 可用名额统计
- 使用率计算
🔧 技术实现
后端开发
1. Controller层新增API接口
文件: backend/hzdyjs-api/hzdyjs-jcbt/src/main/java/com/hzdyjs/jcbt/controller/ScholarshipQuotaController.java
新增接口:
@GetMapping("/statistics/{batchId}")
@SaCheckPermission("jcbt:scholarshipQuota:statistics")
public R<Map<String, Object>> getStatistics(@PathVariable Long batchId)
功能: 获取指定批次的名额统计数据
2. Service层统计业务逻辑
文件: backend/hzdyjs-api/hzdyjs-jcbt/src/main/java/com/hzdyjs/jcbt/service/impl/ScholarshipQuotaServiceImpl.java
新增方法:
@Override
public Map<String, Object> getStatistics(Long batchId)
统计逻辑:
- 查询指定批次的所有名额配置
- 计算总名额、已用名额、可用名额
- 计算使用率百分比
- 返回统计结果
3. 权限配置
权限标识: jcbt:scholarshipQuota:statistics
权限名称: 奖学金名额统计查看
前端开发
1. 统计卡片组件
文件: web/src/views/jcbt/scholarship/quota/index.vue
新增功能:
- 统计数据展示卡片(总名额、已用名额、可用名额、使用率)
- 响应式数据绑定
- 实时数据更新
2. 统计数据集成
集成点:
- 页面加载时获取统计数据
- 批次切换时更新统计数据
- 名额操作后自动刷新统计数据
更新时机:
getList()方法中同步获取统计数据- 新增、修改、删除、调整名额后自动更新
- 批次切换时重置并重新获取统计数据
3. 错误处理和数据重置
- 批次未选择时重置统计数据为0
- API请求失败时重置统计数据
- 数据验证和容错处理
📊 核心代码片段
后端统计方法
@Override
public Map<String, Object> getStatistics(Long batchId) {
// 查询指定批次的所有名额配置
LambdaQueryWrapper<ScholarshipQuota> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ScholarshipQuota::getBatchId, batchId)
.eq(ScholarshipQuota::getDeleted, 0);
List<ScholarshipQuota> quotas = this.list(wrapper);
// 计算统计数据
int totalQuota = quotas.stream().mapToInt(ScholarshipQuota::getTotalQuota).sum();
int usedQuota = quotas.stream().mapToInt(ScholarshipQuota::getUsedQuota).sum();
int availableQuota = totalQuota - usedQuota;
double usageRate = totalQuota > 0 ? (double) usedQuota / totalQuota : 0.0;
// 构建返回结果
Map<String, Object> result = new HashMap<>();
result.put("totalQuota", totalQuota);
result.put("usedQuota", usedQuota);
result.put("availableQuota", availableQuota);
result.put("usageRate", usageRate);
return result;
}
前端统计展示
<el-row :gutter="20" class="mb-4">
<el-col :span="6">
<el-card class="statistics-card">
<div class="statistics-content">
<div class="statistics-number">{{ totalQuota }}</div>
<div class="statistics-label">总名额</div>
</div>
</el-card>
</el-col>
<!-- 其他统计卡片... -->
</el-row>
🧪 测试验证
自动化测试脚本
文件: scholarship_quota_statistics_test.py
测试覆盖:
- 登录认证测试
- 统计API接口测试
- 数据准确性验证
- 多批次统计测试
测试方法:
python scholarship_quota_statistics_test.py
测试结果验证
- 手动计算与API返回数据对比
- 多批次数据一致性检查
- 边界条件测试(无数据批次)
📝 文档更新
API文档更新
文件: docs/开发文档/API/奖学金名额管理API.md
新增内容:
- 统计API接口文档
- 请求参数说明
- 响应数据格式
- 使用示例
变更记录
文件: docs/变更管理/code-adjust-record-2025-01-07-wuzhen.md
记录内容:
- 详细的变更说明
- 技术实现方案
- 代码片段示例
- 测试验证结果
⚠️ 注意事项
权限配置要求
- 需要在系统菜单管理中添加统计权限
- 为相关角色分配统计查看权限
- 确保权限标识与代码中一致
性能考虑
- 统计查询基于批次过滤,性能良好
- 统计数据实时计算,避免缓存一致性问题
- 大数据量场景可考虑添加缓存优化
数据一致性
- 统计数据基于实时查询保证准确性
- 名额操作后立即更新统计显示
- 并发操作不会影响统计准确性
🎉 变更效果
- 用户体验提升: 管理员可以直观查看名额使用情况
- 数据透明化: 实时展示各类统计数据
- 操作便捷性: 名额操作后统计数据自动更新
- 决策支持: 为名额分配提供数据参考
📋 后续优化建议
- 图表展示: 可添加饼状图或柱状图展示统计数据
- 历史趋势: 可增加时间维度的统计趋势分析
- 导出功能: 可添加统计数据导出Excel功能
- 实时推送: 可考虑WebSocket实时推送统计更新
记录时间: 2025-01-07 19:30:00
代码状态: 开发完成,功能验证通过
部署状态: 待部署测试环境