Compare commits
2 Commits
b94ac501de
...
e0d3572e34
| Author | SHA1 | Date | |
|---|---|---|---|
| e0d3572e34 | |||
| a262ca9279 |
@@ -10,6 +10,7 @@ import org.springblade.core.mp.support.Query;
|
|||||||
import org.springblade.core.tool.api.R;
|
import org.springblade.core.tool.api.R;
|
||||||
import org.springblade.core.tool.utils.Func;
|
import org.springblade.core.tool.utils.Func;
|
||||||
import org.springblade.modules.martial.pojo.entity.MartialScore;
|
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.springblade.modules.martial.service.IMartialScoreService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@@ -43,8 +44,8 @@ public class MartialScoreController extends BladeController {
|
|||||||
*/
|
*/
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
@Operation(summary = "分页列表", description = "分页查询")
|
@Operation(summary = "分页列表", description = "分页查询")
|
||||||
public R<IPage<MartialScore>> list(MartialScore score, Query query) {
|
public R<IPage<MartialScoreVO>> list(MartialScore score, Query query) {
|
||||||
IPage<MartialScore> pages = scoreService.page(Condition.getPage(query), Condition.getQueryWrapper(score));
|
IPage<MartialScoreVO> pages = scoreService.selectScoreVOPage(Condition.getPage(query), score);
|
||||||
return R.data(pages);
|
return R.data(pages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package org.springblade.modules.martial.mapper;
|
package org.springblade.modules.martial.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
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.entity.MartialScore;
|
||||||
|
import org.springblade.modules.martial.pojo.vo.MartialScoreVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Score Mapper 接口
|
* Score Mapper 接口
|
||||||
@@ -10,4 +13,6 @@ import org.springblade.modules.martial.pojo.entity.MartialScore;
|
|||||||
*/
|
*/
|
||||||
public interface MartialScoreMapper extends BaseMapper<MartialScore> {
|
public interface MartialScoreMapper extends BaseMapper<MartialScore> {
|
||||||
|
|
||||||
|
IPage<MartialScoreVO> selectScoreVOPage(IPage<MartialScoreVO> page, @Param("score") MartialScore score);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,4 +2,43 @@
|
|||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="org.springblade.modules.martial.mapper.MartialScoreMapper">
|
<mapper namespace="org.springblade.modules.martial.mapper.MartialScoreMapper">
|
||||||
|
|
||||||
|
<select id="selectScoreVOPage" resultType="org.springblade.modules.martial.pojo.vo.MartialScoreVO">
|
||||||
|
SELECT
|
||||||
|
s.*,
|
||||||
|
a.player_name as playerName,
|
||||||
|
a.team_name as teamName,
|
||||||
|
a.id_card as idCard,
|
||||||
|
a.player_no as playerNo,
|
||||||
|
p.project_name as projectName,
|
||||||
|
v.venue_name as venueName,
|
||||||
|
r.chief_judge_score as chiefJudgeScore,
|
||||||
|
r.score_status as scoreStatus,
|
||||||
|
(SELECT GROUP_CONCAT(d.item_name SEPARATOR ', ')
|
||||||
|
FROM martial_deduction_item d
|
||||||
|
WHERE FIND_IN_SET(d.id, REPLACE(REPLACE(s.deduction_items, '[', ''), ']', ''))
|
||||||
|
) as deductionItemsText
|
||||||
|
FROM martial_score s
|
||||||
|
LEFT JOIN martial_athlete a ON s.athlete_id = a.id AND a.is_deleted = 0
|
||||||
|
LEFT JOIN martial_project p ON s.project_id = p.id AND p.is_deleted = 0
|
||||||
|
LEFT JOIN martial_venue v ON s.venue_id = v.id AND v.is_deleted = 0
|
||||||
|
LEFT JOIN martial_result r ON s.athlete_id = r.athlete_id AND s.project_id = r.project_id AND r.is_deleted = 0
|
||||||
|
WHERE s.is_deleted = 0
|
||||||
|
<if test="score.competitionId != null">
|
||||||
|
AND s.competition_id = #{score.competitionId}
|
||||||
|
</if>
|
||||||
|
<if test="score.athleteId != null">
|
||||||
|
AND s.athlete_id = #{score.athleteId}
|
||||||
|
</if>
|
||||||
|
<if test="score.projectId != null">
|
||||||
|
AND s.project_id = #{score.projectId}
|
||||||
|
</if>
|
||||||
|
<if test="score.judgeId != null">
|
||||||
|
AND s.judge_id = #{score.judgeId}
|
||||||
|
</if>
|
||||||
|
<if test="score.venueId != null">
|
||||||
|
AND s.venue_id = #{score.venueId}
|
||||||
|
</if>
|
||||||
|
ORDER BY s.create_time DESC
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -47,4 +47,35 @@ public class MartialScoreVO extends MartialScore {
|
|||||||
@Schema(description = "状态文本")
|
@Schema(description = "状态文本")
|
||||||
private String statusText;
|
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;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package org.springblade.modules.martial.service;
|
package org.springblade.modules.martial.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import org.springblade.modules.martial.pojo.dto.MiniScoreModifyDTO;
|
import org.springblade.modules.martial.pojo.dto.MiniScoreModifyDTO;
|
||||||
import org.springblade.modules.martial.pojo.entity.MartialScore;
|
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 org.springblade.modules.martial.pojo.vo.MiniScoreDetailVO;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -15,6 +17,11 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public interface IMartialScoreService extends IService<MartialScore> {
|
public interface IMartialScoreService extends IService<MartialScore> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询评分记录(包含关联字段)
|
||||||
|
*/
|
||||||
|
IPage<MartialScoreVO> selectScoreVOPage(IPage<MartialScoreVO> page, MartialScore score);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Task 2.2: 分数范围验证
|
* Task 2.2: 分数范围验证
|
||||||
*/
|
*/
|
||||||
@@ -37,17 +44,11 @@ public interface IMartialScoreService extends IService<MartialScore> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 小程序接口:获取评分详情
|
* 小程序接口:获取评分详情
|
||||||
*
|
|
||||||
* @param athleteId 选手ID
|
|
||||||
* @return 评分详情(选手信息+所有评委评分+修改记录)
|
|
||||||
*/
|
*/
|
||||||
MiniScoreDetailVO getScoreDetailForMini(Long athleteId);
|
MiniScoreDetailVO getScoreDetailForMini(Long athleteId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 小程序接口:修改评分(主裁判)
|
* 小程序接口:修改评分(主裁判)
|
||||||
*
|
|
||||||
* @param dto 修改信息
|
|
||||||
* @return 修改成功/失败
|
|
||||||
*/
|
*/
|
||||||
boolean modifyScoreByAdmin(MiniScoreModifyDTO dto);
|
boolean modifyScoreByAdmin(MiniScoreModifyDTO dto);
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import org.springblade.modules.martial.excel.ScheduleExportExcel;
|
|||||||
import org.springblade.modules.martial.mapper.MartialScheduleDetailMapper;
|
import org.springblade.modules.martial.mapper.MartialScheduleDetailMapper;
|
||||||
import org.springblade.modules.martial.mapper.MartialScheduleGroupMapper;
|
import org.springblade.modules.martial.mapper.MartialScheduleGroupMapper;
|
||||||
import org.springblade.modules.martial.mapper.MartialScheduleParticipantMapper;
|
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.CompetitionGroupDTO;
|
||||||
import org.springblade.modules.martial.pojo.dto.ParticipantDTO;
|
import org.springblade.modules.martial.pojo.dto.ParticipantDTO;
|
||||||
import org.springblade.modules.martial.pojo.dto.SaveScheduleDraftDTO;
|
import org.springblade.modules.martial.pojo.dto.SaveScheduleDraftDTO;
|
||||||
@@ -53,6 +55,8 @@ public class MartialScheduleServiceImpl extends ServiceImpl<MartialScheduleMappe
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MartialScheduleParticipantMapper scheduleParticipantMapper;
|
private MartialScheduleParticipantMapper scheduleParticipantMapper;
|
||||||
|
@Autowired
|
||||||
|
private MartialAthleteMapper athleteMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Task 3.3: 导出赛程表
|
* Task 3.3: 导出赛程表
|
||||||
@@ -456,6 +460,7 @@ public class MartialScheduleServiceImpl extends ServiceImpl<MartialScheduleMappe
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean saveAndLockSchedule(Long competitionId) {
|
public boolean saveAndLockSchedule(Long competitionId) {
|
||||||
|
log.info("=== saveAndLockSchedule 开始 === competitionId: {}", competitionId);
|
||||||
// 1. 查询所有分组
|
// 1. 查询所有分组
|
||||||
List<MartialScheduleGroup> groups = scheduleGroupMapper.selectList(
|
List<MartialScheduleGroup> groups = scheduleGroupMapper.selectList(
|
||||||
new QueryWrapper<MartialScheduleGroup>()
|
new QueryWrapper<MartialScheduleGroup>()
|
||||||
@@ -478,9 +483,32 @@ public class MartialScheduleServiceImpl extends ServiceImpl<MartialScheduleMappe
|
|||||||
.eq("is_deleted", 0)
|
.eq("is_deleted", 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 按分组和出场顺序分配选手编号
|
||||||
|
Map<Long, Integer> 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) {
|
for (MartialScheduleParticipant participant : participants) {
|
||||||
participant.setScheduleStatus("completed");
|
participant.setScheduleStatus("completed");
|
||||||
scheduleParticipantMapper.updateById(participant);
|
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;
|
return true;
|
||||||
|
|||||||
@@ -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.MartialAthlete;
|
||||||
import org.springblade.modules.martial.pojo.entity.MartialJudge;
|
import org.springblade.modules.martial.pojo.entity.MartialJudge;
|
||||||
import org.springblade.modules.martial.pojo.entity.MartialScore;
|
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.mapper.MartialScoreMapper;
|
||||||
import org.springblade.modules.martial.pojo.vo.MiniScoreDetailVO;
|
import org.springblade.modules.martial.pojo.vo.MiniScoreDetailVO;
|
||||||
import org.springblade.modules.martial.service.IMartialAthleteService;
|
import org.springblade.modules.martial.service.IMartialAthleteService;
|
||||||
@@ -448,4 +450,8 @@ public class MartialScoreServiceImpl extends ServiceImpl<MartialScoreMapper, Mar
|
|||||||
return athleteUpdated && recordSaved && resultSaved;
|
return athleteUpdated && recordSaved && resultSaved;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<MartialScoreVO> selectScoreVOPage(IPage<MartialScoreVO> page, MartialScore score) {
|
||||||
|
return baseMapper.selectScoreVOPage(page, score);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -277,7 +277,14 @@ blade:
|
|||||||
- /blade-auth/captcha/send
|
- /blade-auth/captcha/send
|
||||||
- /blade-auth/oauth/token
|
- /blade-auth/oauth/token
|
||||||
- /mini/login
|
- /mini/login
|
||||||
- /**
|
- /mini/**
|
||||||
|
- /martial/competition/list
|
||||||
|
- /martial/competition/detail
|
||||||
|
- /martial/project/list
|
||||||
|
- /martial/project/detail
|
||||||
|
- /martial/venue/list
|
||||||
|
- /martial/venue/detail
|
||||||
|
- /blade-martial/**
|
||||||
#授权认证配置
|
#授权认证配置
|
||||||
auth:
|
auth:
|
||||||
- method: ALL
|
- method: ALL
|
||||||
|
|||||||
Reference in New Issue
Block a user