|
@@ -1,5 +1,7 @@
|
|
|
package org.dromara.system.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
@@ -9,6 +11,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.dromara.system.domain.GameAthlete;
|
|
|
+import org.dromara.system.domain.GameEvent;
|
|
|
+import org.dromara.system.domain.vo.GameEventProjectVo;
|
|
|
+import org.dromara.system.mapper.GameAthleteMapper;
|
|
|
+import org.dromara.system.mapper.GameEventMapper;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.dromara.system.domain.bo.GameTeamBo;
|
|
|
import org.dromara.system.domain.vo.GameTeamVo;
|
|
@@ -16,9 +23,9 @@ import org.dromara.system.domain.GameTeam;
|
|
|
import org.dromara.system.mapper.GameTeamMapper;
|
|
|
import org.dromara.system.service.IGameTeamService;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Collection;
|
|
|
+import javax.swing.text.html.Option;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 参赛队伍Service业务层处理
|
|
@@ -33,6 +40,10 @@ public class GameTeamServiceImpl implements IGameTeamService {
|
|
|
|
|
|
private final GameTeamMapper baseMapper;
|
|
|
|
|
|
+ private final GameAthleteMapper gameAthleteMapper;
|
|
|
+
|
|
|
+ private final GameEventMapper gameEventMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 查询参赛队伍
|
|
|
*
|
|
@@ -40,7 +51,7 @@ public class GameTeamServiceImpl implements IGameTeamService {
|
|
|
* @return 参赛队伍
|
|
|
*/
|
|
|
@Override
|
|
|
- public GameTeamVo queryById(Long teamId){
|
|
|
+ public GameTeamVo queryById(Long teamId) {
|
|
|
return baseMapper.selectVoById(teamId);
|
|
|
}
|
|
|
|
|
@@ -55,6 +66,51 @@ public class GameTeamServiceImpl implements IGameTeamService {
|
|
|
public TableDataInfo<GameTeamVo> queryPageList(GameTeamBo bo, PageQuery pageQuery) {
|
|
|
LambdaQueryWrapper<GameTeam> lqw = buildQueryWrapper(bo);
|
|
|
Page<GameTeamVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
+ // 查询领队和队员列表
|
|
|
+ result.getRecords().stream()
|
|
|
+ .map(vo -> {
|
|
|
+ // 处理运动员列表
|
|
|
+ Optional.ofNullable(vo.getAthleteValue())
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .ifPresent(athleteValue -> {
|
|
|
+ String[] projectIds = athleteValue.split(",");
|
|
|
+ List<GameAthlete> athletes = gameAthleteMapper.selectList(
|
|
|
+ Wrappers.<GameAthlete>lambdaQuery()
|
|
|
+ .in(GameAthlete::getAthleteId, projectIds)
|
|
|
+ .select(GameAthlete::getName));
|
|
|
+
|
|
|
+ vo.setAthleteValue(athletes.stream()
|
|
|
+ .map(GameAthlete::getName)
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .collect(Collectors.joining(",")));
|
|
|
+ });
|
|
|
+ // 处理领队
|
|
|
+ Optional.ofNullable(vo.getLeader())
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .ifPresent(leaderId -> {
|
|
|
+ GameAthlete athlete = gameAthleteMapper.selectOne(
|
|
|
+ Wrappers.<GameAthlete>lambdaQuery()
|
|
|
+ .eq(GameAthlete::getAthleteId, leaderId)
|
|
|
+ .select(GameAthlete::getName));
|
|
|
+ Optional.ofNullable(athlete)
|
|
|
+ .map(GameAthlete::getName)
|
|
|
+ .ifPresent(vo::setLeader);
|
|
|
+ });
|
|
|
+ //处理赛事名称
|
|
|
+ Optional.ofNullable(vo.getEventId())
|
|
|
+ .filter(ObjectUtil::isNotEmpty)
|
|
|
+ .ifPresent(eventId -> {
|
|
|
+ GameEvent gameEvent = gameEventMapper.selectOne(
|
|
|
+ Wrappers.<GameEvent>lambdaQuery()
|
|
|
+ .eq(GameEvent::getEventId, eventId)
|
|
|
+ .select(GameEvent::getEventName));
|
|
|
+ Optional.ofNullable(gameEvent)
|
|
|
+ .map(GameEvent::getEventName)
|
|
|
+ .ifPresent(vo::setEventName);
|
|
|
+ });
|
|
|
+ return vo;
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList()); // 收集结果
|
|
|
return TableDataInfo.build(result);
|
|
|
}
|
|
|
|
|
@@ -75,6 +131,25 @@ public class GameTeamServiceImpl implements IGameTeamService {
|
|
|
LambdaQueryWrapper<GameTeam> lqw = Wrappers.lambdaQuery();
|
|
|
lqw.orderByAsc(GameTeam::getTeamId);
|
|
|
lqw.eq(bo.getEventId() != null, GameTeam::getEventId, bo.getEventId());
|
|
|
+
|
|
|
+ Optional.ofNullable(bo.getEventName())
|
|
|
+ .filter(StringUtils::isNotBlank)
|
|
|
+ .ifPresent(eventName -> {
|
|
|
+ List<GameEvent> gameEvents = gameEventMapper.selectList(
|
|
|
+ Wrappers.<GameEvent>lambdaQuery()
|
|
|
+ .like(GameEvent::getEventName, eventName)
|
|
|
+ .select(GameEvent::getEventId)
|
|
|
+ );
|
|
|
+ if (CollectionUtils.isNotEmpty(gameEvents)) {
|
|
|
+ Set<Long> set = gameEvents.stream()
|
|
|
+ .map(GameEvent::getEventId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ lqw.in(GameTeam::getEventId, set);
|
|
|
+ } else {
|
|
|
+ lqw.apply("1=0");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
lqw.like(StringUtils.isNotBlank(bo.getTeamName()), GameTeam::getTeamName, bo.getTeamName());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getTeamCode()), GameTeam::getTeamCode, bo.getTeamCode());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getLeader()), GameTeam::getLeader, bo.getLeader());
|
|
@@ -120,7 +195,7 @@ public class GameTeamServiceImpl implements IGameTeamService {
|
|
|
/**
|
|
|
* 保存前的数据校验
|
|
|
*/
|
|
|
- private void validEntityBeforeSave(GameTeam entity){
|
|
|
+ private void validEntityBeforeSave(GameTeam entity) {
|
|
|
//TODO 做一些数据校验,如唯一约束
|
|
|
}
|
|
|
|
|
@@ -133,9 +208,29 @@ public class GameTeamServiceImpl implements IGameTeamService {
|
|
|
*/
|
|
|
@Override
|
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
- if(isValid){
|
|
|
+ if (isValid) {
|
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
|
}
|
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量保存参赛队伍信息
|
|
|
+ *
|
|
|
+ * @param list 参赛队伍信息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean saveBatch(List<GameTeam> list) {
|
|
|
+ return baseMapper.insertBatch(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取参赛队伍数量
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Long countTeam() {
|
|
|
+ return this.baseMapper.selectCount(Wrappers.lambdaQuery(GameTeam.class));
|
|
|
+ }
|
|
|
}
|