|
@@ -289,16 +289,12 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
|
|
|
|
|
if ("0".equals(classification)) {
|
|
if ("0".equals(classification)) {
|
|
|
// 个人项目:获取运动员数据
|
|
// 个人项目:获取运动员数据
|
|
|
- log.info("处理个人项目数据");
|
|
|
|
|
allDataList = getIndividualProjectData(eventId, projectId, searchValue, pageQuery);
|
|
allDataList = getIndividualProjectData(eventId, projectId, searchValue, pageQuery);
|
|
|
} else {
|
|
} else {
|
|
|
// 团体项目:获取队伍数据
|
|
// 团体项目:获取队伍数据
|
|
|
- log.info("处理团体项目数据");
|
|
|
|
|
allDataList = getTeamProjectData(eventId, projectId, searchValue, pageQuery);
|
|
allDataList = getTeamProjectData(eventId, projectId, searchValue, pageQuery);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- log.info("获取到总数据量: {}", allDataList.size());
|
|
|
|
|
-
|
|
|
|
|
// 计算总数
|
|
// 计算总数
|
|
|
int total = allDataList.size();
|
|
int total = allDataList.size();
|
|
|
|
|
|
|
@@ -308,13 +304,10 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
int startIndex = (pageNum - 1) * pageSize;
|
|
int startIndex = (pageNum - 1) * pageSize;
|
|
|
int endIndex = Math.min(startIndex + pageSize, total);
|
|
int endIndex = Math.min(startIndex + pageSize, total);
|
|
|
|
|
|
|
|
- log.info("分页参数: pageNum={}, pageSize={}, startIndex={}, endIndex={}", pageNum, pageSize, startIndex, endIndex);
|
|
|
|
|
-
|
|
|
|
|
// 获取当前页的数据
|
|
// 获取当前页的数据
|
|
|
List<Map<String, Object>> pageData = new ArrayList<>();
|
|
List<Map<String, Object>> pageData = new ArrayList<>();
|
|
|
if (startIndex <= total) {
|
|
if (startIndex <= total) {
|
|
|
pageData = allDataList.subList(startIndex, endIndex);
|
|
pageData = allDataList.subList(startIndex, endIndex);
|
|
|
- log.info("当前页数据量: {}", pageData.size());
|
|
|
|
|
} else {
|
|
} else {
|
|
|
log.warn("分页索引超出范围: startIndex={}, total={}", startIndex, total);
|
|
log.warn("分页索引超出范围: startIndex={}, total={}", startIndex, total);
|
|
|
}
|
|
}
|
|
@@ -324,7 +317,6 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
page.setRecords(pageData);
|
|
page.setRecords(pageData);
|
|
|
page.setTotal(total);
|
|
page.setTotal(total);
|
|
|
|
|
|
|
|
- log.info("分页结果: 总数={}, 当前页数据量={}", total, pageData.size());
|
|
|
|
|
return TableDataInfo.build(page);
|
|
return TableDataInfo.build(page);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -344,10 +336,9 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
|
|
|
|
|
// 查询参与该项目的运动员
|
|
// 查询参与该项目的运动员
|
|
|
List<GameAthleteVo> athletes = gameAthleteService.queryListByEventIdAndProjectId(eventId, projectId, searchValue);
|
|
List<GameAthleteVo> athletes = gameAthleteService.queryListByEventIdAndProjectId(eventId, projectId, searchValue);
|
|
|
- log.info("查询到运动员数量: {}", athletes.size());
|
|
|
|
|
|
|
|
|
|
for (GameAthleteVo athlete : athletes) {
|
|
for (GameAthleteVo athlete : athletes) {
|
|
|
- log.info("处理运动员: athleteId={}, name={}, teamId={}", athlete.getAthleteId(), athlete.getName(), athlete.getTeamId());
|
|
|
|
|
|
|
+// log.info("处理运动员: athleteId={}, name={}, teamId={}", athlete.getAthleteId(), athlete.getName(), athlete.getTeamId());
|
|
|
|
|
|
|
|
Map<String, Object> data = new HashMap<>();
|
|
Map<String, Object> data = new HashMap<>();
|
|
|
// data.put("id", athlete.getAthleteId());
|
|
// data.put("id", athlete.getAthleteId());
|
|
@@ -403,7 +394,7 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
data.put("teamPerformance", score.getTeamPerformance());
|
|
data.put("teamPerformance", score.getTeamPerformance());
|
|
|
data.put("scoreRank", score.getScoreRank());
|
|
data.put("scoreRank", score.getScoreRank());
|
|
|
data.put("updateTime", score.getUpdateTime());
|
|
data.put("updateTime", score.getUpdateTime());
|
|
|
- log.info("获取到成绩信息: scoreId={}, scorePoint={}", score.getScoreId(), score.getScorePoint());
|
|
|
|
|
|
|
+// log.info("获取到成绩信息: scoreId={}, scorePoint={}", score.getScoreId(), score.getScorePoint());
|
|
|
} else {
|
|
} else {
|
|
|
data.put("scoreId", 0);
|
|
data.put("scoreId", 0);
|
|
|
data.put("scorePoint", 0);
|
|
data.put("scorePoint", 0);
|
|
@@ -411,13 +402,13 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
data.put("teamPerformance", 0.0);
|
|
data.put("teamPerformance", 0.0);
|
|
|
data.put("scoreRank", 0);
|
|
data.put("scoreRank", 0);
|
|
|
data.put("updateTime", "");
|
|
data.put("updateTime", "");
|
|
|
- log.info("未找到成绩信息,使用默认值");
|
|
|
|
|
|
|
+// log.info("未找到成绩信息,使用默认值");
|
|
|
}
|
|
}
|
|
|
data.put("classification", project.getClassification());
|
|
data.put("classification", project.getClassification());
|
|
|
resultList.add(data);
|
|
resultList.add(data);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- log.info("个人项目数据处理完成,返回数据量: {}", resultList.size());
|
|
|
|
|
|
|
+// log.info("个人项目数据处理完成,返回数据量: {}", resultList.size());
|
|
|
return resultList;
|
|
return resultList;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -501,47 +492,47 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
bo.getIndividualPerformance() == null &&
|
|
bo.getIndividualPerformance() == null &&
|
|
|
bo.getTeamPerformance() == null);
|
|
bo.getTeamPerformance() == null);
|
|
|
|
|
|
|
|
- log.info("手动排名计算判断: scoreId={}, athleteId={}, teamId={}, individualPerformance={}, teamPerformance={}, isManualRanking={}",
|
|
|
|
|
- bo.getScoreId(), bo.getAthleteId(), bo.getTeamId(), bo.getIndividualPerformance(), bo.getTeamPerformance(), isManualRankingCalculation);
|
|
|
|
|
|
|
+// log.info("手动排名计算判断: scoreId={}, athleteId={}, teamId={}, individualPerformance={}, teamPerformance={}, isManualRanking={}",
|
|
|
|
|
+// bo.getScoreId(), bo.getAthleteId(), bo.getTeamId(), bo.getIndividualPerformance(), bo.getTeamPerformance(), isManualRankingCalculation);
|
|
|
|
|
|
|
|
if (isManualRankingCalculation) {
|
|
if (isManualRankingCalculation) {
|
|
|
// 手动排名计算:直接重新计算排名和积分
|
|
// 手动排名计算:直接重新计算排名和积分
|
|
|
- log.info("检测到手动排名计算请求,跳过成绩更新,直接计算排名");
|
|
|
|
|
|
|
+// log.info("检测到手动排名计算请求,跳过成绩更新,直接计算排名");
|
|
|
Boolean result = recalculateRankingsAndPoints(bo.getEventId(), bo.getProjectId());
|
|
Boolean result = recalculateRankingsAndPoints(bo.getEventId(), bo.getProjectId());
|
|
|
- log.info("手动排名计算完成,结果: {}", result);
|
|
|
|
|
|
|
+// log.info("手动排名计算完成,结果: {}", result);
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 获取项目信息,判断是个人项目还是团体项目
|
|
// 获取项目信息,判断是个人项目还是团体项目
|
|
|
GameEventProjectVo project = gameEventProjectService.queryById(bo.getProjectId());
|
|
GameEventProjectVo project = gameEventProjectService.queryById(bo.getProjectId());
|
|
|
- log.info("项目信息: projectId: {}, classification: {}", bo.getProjectId(),
|
|
|
|
|
- project != null ? project.getClassification() : "null");
|
|
|
|
|
|
|
+// log.info("项目信息: projectId: {}, classification: {}", bo.getProjectId(),
|
|
|
|
|
+// project != null ? project.getClassification() : "null");
|
|
|
|
|
|
|
|
Boolean result = false;
|
|
Boolean result = false;
|
|
|
|
|
|
|
|
if (project != null && ProjectClassification.TEAM.getValue().equals(project.getClassification())) {
|
|
if (project != null && ProjectClassification.TEAM.getValue().equals(project.getClassification())) {
|
|
|
// 团体项目:为队伍中的所有运动员创建或更新成绩记录
|
|
// 团体项目:为队伍中的所有运动员创建或更新成绩记录
|
|
|
- log.info("处理团体项目成绩更新");
|
|
|
|
|
|
|
+// log.info("处理团体项目成绩更新");
|
|
|
result = handleTeamScoreUpdate(bo);
|
|
result = handleTeamScoreUpdate(bo);
|
|
|
} else {
|
|
} else {
|
|
|
// 个人项目:直接更新或插入
|
|
// 个人项目:直接更新或插入
|
|
|
- log.info("处理个人项目成绩更新,scoreId: {}", bo.getScoreId());
|
|
|
|
|
|
|
+// log.info("处理个人项目成绩更新,scoreId: {}", bo.getScoreId());
|
|
|
if (bo.getScoreId() != null && bo.getScoreId() > 0) {
|
|
if (bo.getScoreId() != null && bo.getScoreId() > 0) {
|
|
|
result = updateByBo(bo);
|
|
result = updateByBo(bo);
|
|
|
- log.info("更新现有成绩记录,结果: {}", result);
|
|
|
|
|
|
|
+// log.info("更新现有成绩记录,结果: {}", result);
|
|
|
} else {
|
|
} else {
|
|
|
result = insertByBo(bo);
|
|
result = insertByBo(bo);
|
|
|
- log.info("插入新成绩记录,结果: {}", result);
|
|
|
|
|
|
|
+// log.info("插入新成绩记录,结果: {}", result);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (result) {
|
|
if (result) {
|
|
|
// 重新计算排名和积分
|
|
// 重新计算排名和积分
|
|
|
- log.info("开始重新计算排名和积分");
|
|
|
|
|
|
|
+// log.info("开始重新计算排名和积分");
|
|
|
recalculateRankingsAndPoints(bo.getEventId(), bo.getProjectId());
|
|
recalculateRankingsAndPoints(bo.getEventId(), bo.getProjectId());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- log.info("成绩更新处理完成,结果: {}", result);
|
|
|
|
|
|
|
+// log.info("成绩更新处理完成,结果: {}", result);
|
|
|
return result;
|
|
return result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -556,14 +547,14 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
List<GameAthleteVo> teamAthletes = gameAthleteService.queryListByEventIdAndProjectId(
|
|
List<GameAthleteVo> teamAthletes = gameAthleteService.queryListByEventIdAndProjectId(
|
|
|
bo.getEventId(), bo.getProjectId(), null);
|
|
bo.getEventId(), bo.getProjectId(), null);
|
|
|
|
|
|
|
|
- log.info("找到参与项目的运动员数量: {}", teamAthletes.size());
|
|
|
|
|
|
|
+// log.info("找到参与项目的运动员数量: {}", teamAthletes.size());
|
|
|
|
|
|
|
|
// 过滤出属于指定队伍的运动员
|
|
// 过滤出属于指定队伍的运动员
|
|
|
List<GameAthleteVo> relevantAthletes = teamAthletes.stream()
|
|
List<GameAthleteVo> relevantAthletes = teamAthletes.stream()
|
|
|
.filter(athlete -> athlete.getTeamId() != null && athlete.getTeamId().equals(bo.getTeamId()))
|
|
.filter(athlete -> athlete.getTeamId() != null && athlete.getTeamId().equals(bo.getTeamId()))
|
|
|
.toList();
|
|
.toList();
|
|
|
|
|
|
|
|
- log.info("队伍 {} 的运动员数量: {}", bo.getTeamId(), relevantAthletes.size());
|
|
|
|
|
|
|
+// log.info("队伍 {} 的运动员数量: {}", bo.getTeamId(), relevantAthletes.size());
|
|
|
|
|
|
|
|
if (relevantAthletes.isEmpty()) {
|
|
if (relevantAthletes.isEmpty()) {
|
|
|
log.warn("未找到队伍 {} 的运动员", bo.getTeamId());
|
|
log.warn("未找到队伍 {} 的运动员", bo.getTeamId());
|
|
@@ -572,7 +563,7 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
|
|
|
|
|
// 为每个运动员创建或更新成绩记录
|
|
// 为每个运动员创建或更新成绩记录
|
|
|
for (GameAthleteVo athlete : relevantAthletes) {
|
|
for (GameAthleteVo athlete : relevantAthletes) {
|
|
|
- log.info("处理运动员 {} 的成绩记录", athlete.getAthleteId());
|
|
|
|
|
|
|
+// log.info("处理运动员 {} 的成绩记录", athlete.getAthleteId());
|
|
|
|
|
|
|
|
GameScoreBo athleteScoreBo = new GameScoreBo();
|
|
GameScoreBo athleteScoreBo = new GameScoreBo();
|
|
|
athleteScoreBo.setEventId(bo.getEventId());
|
|
athleteScoreBo.setEventId(bo.getEventId());
|
|
@@ -592,19 +583,19 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
GameScoreVo existingScore = getScoreByAthleteIdAndProjectId(athlete.getAthleteId(), bo.getProjectId());
|
|
GameScoreVo existingScore = getScoreByAthleteIdAndProjectId(athlete.getAthleteId(), bo.getProjectId());
|
|
|
if (existingScore != null) {
|
|
if (existingScore != null) {
|
|
|
// 更新现有记录
|
|
// 更新现有记录
|
|
|
- log.info("更新运动员 {} 的现有成绩记录", athlete.getAthleteId());
|
|
|
|
|
|
|
+// log.info("更新运动员 {} 的现有成绩记录", athlete.getAthleteId());
|
|
|
athleteScoreBo.setScoreId(existingScore.getScoreId());
|
|
athleteScoreBo.setScoreId(existingScore.getScoreId());
|
|
|
Boolean updateResult = updateByBo(athleteScoreBo);
|
|
Boolean updateResult = updateByBo(athleteScoreBo);
|
|
|
- log.info("更新结果: {}", updateResult);
|
|
|
|
|
|
|
+// log.info("更新结果: {}", updateResult);
|
|
|
} else {
|
|
} else {
|
|
|
// 插入新记录
|
|
// 插入新记录
|
|
|
- log.info("为运动员 {} 插入新成绩记录", athlete.getAthleteId());
|
|
|
|
|
|
|
+// log.info("为运动员 {} 插入新成绩记录", athlete.getAthleteId());
|
|
|
Boolean insertResult = insertByBo(athleteScoreBo);
|
|
Boolean insertResult = insertByBo(athleteScoreBo);
|
|
|
- log.info("插入结果: {}", insertResult);
|
|
|
|
|
|
|
+// log.info("插入结果: {}", insertResult);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- log.info("团体项目成绩更新处理完成");
|
|
|
|
|
|
|
+// log.info("团体项目成绩更新处理完成");
|
|
|
return true;
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("处理团体项目成绩更新失败", e);
|
|
log.error("处理团体项目成绩更新失败", e);
|
|
@@ -659,7 +650,7 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
String orderType = project.getOrderType();
|
|
String orderType = project.getOrderType();
|
|
|
- log.info("个人项目排名计算,projectId: {}, orderType: {}", projectId, orderType);
|
|
|
|
|
|
|
+// log.info("个人项目排名计算,projectId: {}, orderType: {}", projectId, orderType);
|
|
|
|
|
|
|
|
// 根据orderType决定排序方式
|
|
// 根据orderType决定排序方式
|
|
|
// orderType: 0-升序(成绩越小越好),1-降序(成绩越大越好)
|
|
// orderType: 0-升序(成绩越小越好),1-降序(成绩越大越好)
|
|
@@ -778,7 +769,7 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
String orderType = project.getOrderType();
|
|
String orderType = project.getOrderType();
|
|
|
- log.info("团体项目排名计算,projectId: {}, orderType: {}", projectId, orderType);
|
|
|
|
|
|
|
+// log.info("团体项目排名计算,projectId: {}, orderType: {}", projectId, orderType);
|
|
|
|
|
|
|
|
// 按队伍ID分组,获取每个队伍的最佳成绩
|
|
// 按队伍ID分组,获取每个队伍的最佳成绩
|
|
|
Map<Long, BigDecimal> teamBestPerformance = new HashMap<>();
|
|
Map<Long, BigDecimal> teamBestPerformance = new HashMap<>();
|
|
@@ -1616,7 +1607,7 @@ public class GameScoreServiceImpl implements IGameScoreService {
|
|
|
workbook.write(response.getOutputStream());
|
|
workbook.write(response.getOutputStream());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- log.info("成绩详情导出完成");
|
|
|
|
|
|
|
+// log.info("成绩详情导出完成");
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("导出成绩详情失败", e);
|
|
log.error("导出成绩详情失败", e);
|