Browse Source

feat(game): 增加比赛阶段字典数据支持

- 引入 SysDictDataVo 和 ISysDictTypeService 依赖
- 在 ElectrometerServiceImpl 中注入 dictTypeService
- 通过字典类型获取比赛阶段数据
- 使用字典标签替换原有比赛阶段字段值
- 提升比赛阶段展示的可维护性和扩展性
zhou 1 month ago
parent
commit
e3488a8461

+ 9 - 1
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/app/ElectrometerServiceImpl.java

@@ -4,11 +4,13 @@ import com.esotericsoftware.minlog.Log;
 import lombok.RequiredArgsConstructor;
 import org.dromara.system.domain.*;
 import org.dromara.system.domain.app.AvtScoreItem;
+import org.dromara.system.domain.vo.SysDictDataVo;
 import org.dromara.system.domain.vo.app.AvtScoreUploadVo;
 import org.dromara.system.domain.vo.app.DistanceScoreUploadVo;
 import org.dromara.system.domain.vo.app.ElectrometerDataItemVo;
 import org.dromara.system.domain.vo.app.ElectrometerScoreUploadVo;
 import org.dromara.system.mapper.*;
+import org.dromara.system.service.ISysDictTypeService;
 import org.dromara.system.service.app.IElectrometerService;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -34,6 +36,7 @@ public class ElectrometerServiceImpl implements IElectrometerService {
     private final GameAthleteCompetitionGroupMapper gameAthleteCompetitionGroupMapper;
     private final GameEventGroupMapper gameEventGroupMapper;
     private final GameScoreMapper gameScoreMapper;
+    private final ISysDictTypeService dictTypeService;
 
     /**
      * 获取比赛道路信息
@@ -86,6 +89,7 @@ public class ElectrometerServiceImpl implements IElectrometerService {
         }
 
         // 5. 组装数据
+        List<SysDictDataVo> data = dictTypeService.selectDictDataByType("game_stage");
 //        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
         return athletes.stream().map(athlete -> {
             ElectrometerDataItemVo item = new ElectrometerDataItemVo();
@@ -120,7 +124,11 @@ public class ElectrometerServiceImpl implements IElectrometerService {
                     item.setXmMc(project.getProjectName());
                     item.setTjsDm(project.getProjectType());
                     item.setSx(project.getScoreRule()); // 计算规则-项目属性
-                    item.setScMc(project.getGameStage()); // 比赛阶段
+                    Optional<String> label = data.stream()
+                        .filter(d -> d.getDictValue().equals(project.getGameStage()))
+                        .map(SysDictDataVo::getDictLabel)
+                        .findFirst();
+                    item.setScMc(label.orElse("")); //比赛阶段
                     if (project.getStartTime() != null) {
                         item.setTm(project.getStartTime());
                     }