From e0d3572e349105e26a67a3a1042d0f169501aab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=85=E6=88=BF?= Date: Wed, 7 Jan 2026 14:56:25 +0800 Subject: [PATCH] feat: add score VO with deduction items and player number assignment - Add selectScoreVOPage for score list with deduction items text - Add chiefJudgeScore and scoreStatus fields to MartialScoreVO - Add player number assignment in saveAndLockSchedule method Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- .../controller/MartialScoreController.java | 5 ++- .../martial/mapper/MartialScoreMapper.java | 5 +++ .../martial/mapper/MartialScoreMapper.xml | 39 +++++++++++++++++++ .../martial/pojo/vo/MartialScoreVO.java | 31 +++++++++++++++ .../martial/service/IMartialScoreService.java | 13 ++++--- .../impl/MartialScheduleServiceImpl.java | 28 +++++++++++++ .../service/impl/MartialScoreServiceImpl.java | 6 +++ 7 files changed, 119 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/springblade/modules/martial/controller/MartialScoreController.java b/src/main/java/org/springblade/modules/martial/controller/MartialScoreController.java index cf26513..756fece 100644 --- a/src/main/java/org/springblade/modules/martial/controller/MartialScoreController.java +++ b/src/main/java/org/springblade/modules/martial/controller/MartialScoreController.java @@ -10,6 +10,7 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.martial.pojo.entity.MartialScore; +import org.springblade.modules.martial.pojo.vo.MartialScoreVO; import org.springblade.modules.martial.service.IMartialScoreService; import org.springframework.web.bind.annotation.*; @@ -43,8 +44,8 @@ public class MartialScoreController extends BladeController { */ @GetMapping("/list") @Operation(summary = "分页列表", description = "分页查询") - public R> list(MartialScore score, Query query) { - IPage pages = scoreService.page(Condition.getPage(query), Condition.getQueryWrapper(score)); + public R> list(MartialScore score, Query query) { + IPage pages = scoreService.selectScoreVOPage(Condition.getPage(query), score); return R.data(pages); } diff --git a/src/main/java/org/springblade/modules/martial/mapper/MartialScoreMapper.java b/src/main/java/org/springblade/modules/martial/mapper/MartialScoreMapper.java index 35baa49..dcc8031 100644 --- a/src/main/java/org/springblade/modules/martial/mapper/MartialScoreMapper.java +++ b/src/main/java/org/springblade/modules/martial/mapper/MartialScoreMapper.java @@ -1,7 +1,10 @@ package org.springblade.modules.martial.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; import org.springblade.modules.martial.pojo.entity.MartialScore; +import org.springblade.modules.martial.pojo.vo.MartialScoreVO; /** * Score Mapper 接口 @@ -10,4 +13,6 @@ import org.springblade.modules.martial.pojo.entity.MartialScore; */ public interface MartialScoreMapper extends BaseMapper { + IPage selectScoreVOPage(IPage page, @Param("score") MartialScore score); + } diff --git a/src/main/java/org/springblade/modules/martial/mapper/MartialScoreMapper.xml b/src/main/java/org/springblade/modules/martial/mapper/MartialScoreMapper.xml index 6e7e406..268dc2b 100644 --- a/src/main/java/org/springblade/modules/martial/mapper/MartialScoreMapper.xml +++ b/src/main/java/org/springblade/modules/martial/mapper/MartialScoreMapper.xml @@ -2,4 +2,43 @@ + + diff --git a/src/main/java/org/springblade/modules/martial/pojo/vo/MartialScoreVO.java b/src/main/java/org/springblade/modules/martial/pojo/vo/MartialScoreVO.java index 838dea9..f546e07 100644 --- a/src/main/java/org/springblade/modules/martial/pojo/vo/MartialScoreVO.java +++ b/src/main/java/org/springblade/modules/martial/pojo/vo/MartialScoreVO.java @@ -47,4 +47,35 @@ public class MartialScoreVO extends MartialScore { @Schema(description = "状态文本") private String statusText; + /** + * 主裁判确认分数 + */ + @Schema(description = "主裁判确认分数") + private java.math.BigDecimal chiefJudgeScore; + + /** + * 评分状态 (0-待评分, 1-裁判已评分, 2-主裁判已确认) + */ + @Schema(description = "评分状态") + private Integer scoreStatus; + + /** + * 队伍名称 + */ + @Schema(description = "队伍名称") + private String teamName; + + /** + * 身份证 + */ + @Schema(description = "身份证") + private String idCard; + + /** + * 选手编号 + */ + @Schema(description = "选手编号") + private String playerNo; + + } diff --git a/src/main/java/org/springblade/modules/martial/service/IMartialScoreService.java b/src/main/java/org/springblade/modules/martial/service/IMartialScoreService.java index 99aa402..b71874e 100644 --- a/src/main/java/org/springblade/modules/martial/service/IMartialScoreService.java +++ b/src/main/java/org/springblade/modules/martial/service/IMartialScoreService.java @@ -1,8 +1,10 @@ package org.springblade.modules.martial.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.modules.martial.pojo.dto.MiniScoreModifyDTO; import org.springblade.modules.martial.pojo.entity.MartialScore; +import org.springblade.modules.martial.pojo.vo.MartialScoreVO; import org.springblade.modules.martial.pojo.vo.MiniScoreDetailVO; import java.math.BigDecimal; @@ -15,6 +17,11 @@ import java.util.List; */ public interface IMartialScoreService extends IService { + /** + * 分页查询评分记录(包含关联字段) + */ + IPage selectScoreVOPage(IPage page, MartialScore score); + /** * Task 2.2: 分数范围验证 */ @@ -37,17 +44,11 @@ public interface IMartialScoreService extends IService { /** * 小程序接口:获取评分详情 - * - * @param athleteId 选手ID - * @return 评分详情(选手信息+所有评委评分+修改记录) */ MiniScoreDetailVO getScoreDetailForMini(Long athleteId); /** * 小程序接口:修改评分(主裁判) - * - * @param dto 修改信息 - * @return 修改成功/失败 */ boolean modifyScoreByAdmin(MiniScoreModifyDTO dto); diff --git a/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java b/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java index 3b97883..4c2f160 100644 --- a/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java +++ b/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java @@ -6,6 +6,8 @@ import org.springblade.modules.martial.excel.ScheduleExportExcel; import org.springblade.modules.martial.mapper.MartialScheduleDetailMapper; import org.springblade.modules.martial.mapper.MartialScheduleGroupMapper; import org.springblade.modules.martial.mapper.MartialScheduleParticipantMapper; +import org.springblade.modules.martial.mapper.MartialAthleteMapper; +import org.springblade.modules.martial.pojo.entity.MartialAthlete; import org.springblade.modules.martial.pojo.dto.CompetitionGroupDTO; import org.springblade.modules.martial.pojo.dto.ParticipantDTO; import org.springblade.modules.martial.pojo.dto.SaveScheduleDraftDTO; @@ -53,6 +55,8 @@ public class MartialScheduleServiceImpl extends ServiceImpl groups = scheduleGroupMapper.selectList( new QueryWrapper() @@ -478,9 +483,32 @@ public class MartialScheduleServiceImpl extends ServiceImpl groupCounters = new HashMap<>(); + participants.sort((a, b) -> { + int groupCompare = a.getScheduleGroupId().compareTo(b.getScheduleGroupId()); + if (groupCompare != 0) return groupCompare; + return Integer.compare(a.getPerformanceOrder() != null ? a.getPerformanceOrder() : 0, + b.getPerformanceOrder() != null ? b.getPerformanceOrder() : 0); + }); + for (MartialScheduleParticipant participant : participants) { participant.setScheduleStatus("completed"); scheduleParticipantMapper.updateById(participant); + + // 分配选手编号 + if (participant.getParticipantId() != null) { + Long groupId = participant.getScheduleGroupId(); + int counter = groupCounters.getOrDefault(groupId, 0) + 1; + groupCounters.put(groupId, counter); + + // 更新选手编号 (格式: 分组序号-出场序号) + MartialAthlete athlete = athleteMapper.selectById(participant.getParticipantId()); + if (athlete != null && (athlete.getPlayerNo() == null || athlete.getPlayerNo().isEmpty())) { + athlete.setPlayerNo(String.format("%03d", counter)); + athleteMapper.updateById(athlete); + } + } } return true; diff --git a/src/main/java/org/springblade/modules/martial/service/impl/MartialScoreServiceImpl.java b/src/main/java/org/springblade/modules/martial/service/impl/MartialScoreServiceImpl.java index 5859694..1fdcf69 100644 --- a/src/main/java/org/springblade/modules/martial/service/impl/MartialScoreServiceImpl.java +++ b/src/main/java/org/springblade/modules/martial/service/impl/MartialScoreServiceImpl.java @@ -9,6 +9,8 @@ import org.springblade.modules.martial.pojo.dto.MiniScoreModifyDTO; import org.springblade.modules.martial.pojo.entity.MartialAthlete; import org.springblade.modules.martial.pojo.entity.MartialJudge; import org.springblade.modules.martial.pojo.entity.MartialScore; +import org.springblade.modules.martial.pojo.vo.MartialScoreVO; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.martial.mapper.MartialScoreMapper; import org.springblade.modules.martial.pojo.vo.MiniScoreDetailVO; import org.springblade.modules.martial.service.IMartialAthleteService; @@ -448,4 +450,8 @@ public class MartialScoreServiceImpl extends ServiceImpl selectScoreVOPage(IPage page, MartialScore score) { + return baseMapper.selectScoreVOPage(page, score); + } }