|
|
@@ -11,7 +11,11 @@ import org.dromara.system.domain.bo.GameEventProjectBo;
|
|
|
import org.dromara.system.domain.vo.GameEventProjectVo;
|
|
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
|
|
import org.dromara.system.domain.vo.app.ExGameScheduleVo;
|
|
|
+import org.dromara.system.domain.vo.app.ExGameGroupDetailVo;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Calendar;
|
|
|
@@ -123,4 +127,57 @@ public interface GameEventProjectMapper extends BaseMapperPlus<GameEventProject,
|
|
|
}
|
|
|
return scheduleList;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询分组内所有运动员的原始信息
|
|
|
+ */
|
|
|
+ List<ExGameGroupDetailVo> selectGroupDetailRaw(@Param("groupId") Long groupId);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据分组ID查询该分组详情,包括各组次下各运动员的姓名、编号、队伍、格式化后的成绩、排名和道次。
|
|
|
+ */
|
|
|
+ default List<ExGameGroupDetailVo> selectGroupDetail(@Param("groupId") Long groupId) {
|
|
|
+ List<ExGameGroupDetailVo> list = this.selectGroupDetailRaw(groupId);
|
|
|
+ if (list == null || list.isEmpty()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ for (ExGameGroupDetailVo vo : list) {
|
|
|
+ // 1. 根据项目归类获取原始成绩
|
|
|
+ BigDecimal rawScore = null;
|
|
|
+ if ("0".equals(vo.getClassification())) {
|
|
|
+ rawScore = vo.getIndividualPerformance();
|
|
|
+ } else if ("1".equals(vo.getClassification())) {
|
|
|
+ rawScore = vo.getTeamPerformance();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 处理成绩显示和单位
|
|
|
+ if (rawScore != null) {
|
|
|
+ // 去除尾随零
|
|
|
+ String scoreStr = rawScore.stripTrailingZeros().toPlainString();
|
|
|
+ String rule = vo.getScoreRule();
|
|
|
+
|
|
|
+ if ("1".equals(rule)) {
|
|
|
+ // 计时类附加 s
|
|
|
+ vo.setScore(scoreStr + "s");
|
|
|
+ } else if ("2".equals(rule) || "6".equals(rule) || "7".equals(rule)) {
|
|
|
+ // 距离类、远度距离类、高度距离类附加 m
|
|
|
+ vo.setScore(scoreStr + "m");
|
|
|
+ } else if ("3".equals(rule) || "4".equals(rule)) {
|
|
|
+ // 计数类附加项目配置的计数单位
|
|
|
+ String unit = vo.getCountUnit();
|
|
|
+ if (unit != null && !unit.isEmpty()) {
|
|
|
+ vo.setScore(scoreStr + unit);
|
|
|
+ } else {
|
|
|
+ vo.setScore(scoreStr);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 其他类型直接显示
|
|
|
+ vo.setScore(scoreStr);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ vo.setScore("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
}
|