|
@@ -562,40 +562,42 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
GameEventProjectVo project = gameEventProjectService.queryById(bo.getProjectId());
|
|
GameEventProjectVo project = gameEventProjectService.queryById(bo.getProjectId());
|
|
|
if (project == null) return false;
|
|
if (project == null) return false;
|
|
|
|
|
|
|
|
- // 自动分析汇总成绩和失误
|
|
|
|
|
- if (bo.getDetails() != null && !bo.getDetails().isEmpty()) {
|
|
|
|
|
- calculateAndSetAggregatePerformance(bo, project);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 判断是否是“纯排名计算”请求(不带具体的录入对象)
|
|
|
|
|
+ boolean isOnlyRecalculate = bo.getAthleteId() == null && bo.getTeamId() == null && (bo.getScoreId() == null || bo.getScoreId() == 0);
|
|
|
|
|
|
|
|
- Boolean result = false;
|
|
|
|
|
|
|
+ Boolean result = true;
|
|
|
|
|
|
|
|
- if (ProjectClassification.TEAM.getValue().equals(project.getClassification())) {
|
|
|
|
|
- // 团体项目:为队伍中的所有运动员创建或更新成绩记录
|
|
|
|
|
- // log.info("处理团体项目成绩更新");
|
|
|
|
|
- result = handleTeamScoreUpdate(bo);
|
|
|
|
|
- } else {
|
|
|
|
|
- // 个人项目:直接更新或插入
|
|
|
|
|
- // log.info("处理个人项目成绩更新,scoreId: {}", bo.getScoreId());
|
|
|
|
|
- if (bo.getScoreId() != null && bo.getScoreId() > 0) {
|
|
|
|
|
- result = updateByBo(bo);
|
|
|
|
|
- // log.info("更新现有成绩记录,结果: {}", result);
|
|
|
|
|
|
|
+ if (!isOnlyRecalculate) {
|
|
|
|
|
+ // 自动分析汇总成绩和失误
|
|
|
|
|
+ if (bo.getDetails() != null && !bo.getDetails().isEmpty()) {
|
|
|
|
|
+ calculateAndSetAggregatePerformance(bo, project);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (ProjectClassification.TEAM.getValue().equals(project.getClassification())) {
|
|
|
|
|
+ // 团体项目:为队伍中的所有运动员创建或更新成绩记录
|
|
|
|
|
+ result = handleTeamScoreUpdate(bo);
|
|
|
} else {
|
|
} else {
|
|
|
- result = insertByBo(bo);
|
|
|
|
|
- // log.info("插入新成绩记录,结果: {}", result);
|
|
|
|
|
|
|
+ // 个人项目:直接更新或插入
|
|
|
|
|
+ if (bo.getScoreId() != null && bo.getScoreId() > 0) {
|
|
|
|
|
+ result = updateByBo(bo);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ result = insertByBo(bo);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- if (result) {
|
|
|
|
|
- // 个人项目:如果传了明细,则保存 (团体项目已在 handleTeamScoreUpdate 中处理过)
|
|
|
|
|
- if ("0".equals(project.getClassification()) && bo.getDetails() != null && !bo.getDetails().isEmpty()) {
|
|
|
|
|
- saveScoreDetails(bo.getScoreId(), bo.getProjectId(), bo.getAthleteId(), null, bo.getDetails());
|
|
|
|
|
|
|
+ if (result) {
|
|
|
|
|
+ // 个人项目:如果传了明细,则保存 (团体项目已在 handleTeamScoreUpdate 中处理过)
|
|
|
|
|
+ if ("0".equals(project.getClassification()) && bo.getDetails() != null && !bo.getDetails().isEmpty()) {
|
|
|
|
|
+ saveScoreDetails(bo.getScoreId(), bo.getProjectId(), bo.getAthleteId(), null, bo.getDetails());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ if (result) {
|
|
|
// 重新计算排名和积分
|
|
// 重新计算排名和积分
|
|
|
recalculateRankingsAndPoints(bo.getEventId(), bo.getProjectId());
|
|
recalculateRankingsAndPoints(bo.getEventId(), bo.getProjectId());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // log.info("成绩更新处理完成,结果: {}", result);
|
|
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|