获取积分榜

pull/371/head
wuyibo 2 years ago
parent 07dc1a3b56
commit 5335cd70c4

@ -222,23 +222,8 @@ public class CompetitionOfTeamController extends BaseController
}
@PostMapping("/getJoinCompetitionGroupTeam")
@ResponseBody
@ApiOperation(value = ApiTerminal.wxMiniProgram+"获取赛事中参与的球队的分组数据")
@ApiOperation(value = ApiTerminal.wxMiniProgram+"获取赛事中参与的球队的分组的积分情况")
public AjaxResult getJoinCompetitionGroupTeam(@RequestBody CompetitionOfTeamVo entity){
//关键字word包含球队名称、地点名称、球馆名称支持模糊搜索
// List<CompetitionOfTeamVo> competitionOfTeamVos = competitionOfTeamFeign.getJoinCompetitionGroupTeam(entity);
// List<CompetitionOfTeamVo> isNotGroupList = list.stream().filter(a -> StringUtils.isEmpty(a.getCompetitionGroup())).collect(Collectors.toList());
// List<CompetitionOfTeamVo> list1 = list.stream().filter(a -> !StringUtils.isEmpty(a.getCompetitionGroup())).collect(Collectors.toList());
// //1.根据字符串类型日期分组并按照日期升序排序返回TreeMap<String,List>map的key为字符串日期value为list
// TreeMap<String,List<CompetitionOfTeamVo>> dataGroupMap = list1.stream().collect(Collectors.groupingBy(a->a.getCompetitionGroup(), TreeMap::new,Collectors.toList()));
// List<Map> listMap = new ArrayList<>();
// for(Map.Entry<String, List<CompetitionOfTeamVo>> entry:dataGroupMap.entrySet()){
// Map resMap =new HashMap();
// resMap.put("competitionGroup",entry.getKey());
// resMap.put("competitionOfTeamList",entry.getValue());
// listMap.add(resMap);
// }
// maps.put("isGroup",listMap);
// maps.put("isNotGroup",isNotGroupList);
Map hashMap = new HashMap();
List<CompetitionOfTeamGroupVo> competitionOfTeamGroupVoList = null;
List<CompetitionOfTeamVo> competitionOfTeamVos = competitionOfTeamService.findCompetitionTeamGroupList(entity);

@ -6,6 +6,7 @@ import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.io.IOException;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.exception.ServiceException;
@ -159,34 +160,61 @@ public class CompetitionResultController extends BaseController
throw new InvalidParameterException("赛会id不能为");
}
List<PersonalHonorResponse> honorResponseList = new ArrayList<>();
//查询赛会得分数据
List<CompetitionMembersScore> membersScoreList = competitionMembersScoreService.getHonorList(competitionId,null);
if(UtilTool.isNotNull(membersScoreList)){
honorResponseList = new ArrayList<>();
CompetitionMembersScore membersScore = null;
if(membersScoreList.size()>0){
//3分王
membersScore = membersScoreList.stream().max(Comparator.comparing(CompetitionMembersScore::getThreePoints)).get();
setHonorData(honorResponseList,membersScore,"3分王");
List<CompetitionMembersScore> threePointList = membersScoreList.stream().filter(a -> a.getThreePoints().longValue() > 0).collect(Collectors.toList());
if(threePointList.size()>0) {
CompetitionMembersScore threePoint = threePointList.stream().max(Comparator.comparing(CompetitionMembersScore::getThreePoints)).get();
setHonorData(honorResponseList, threePoint, "3分王");
}else {
setHonorData(honorResponseList, new CompetitionMembersScore(), "3分王");
}
//篮板王
membersScore = membersScoreList.stream().max(Comparator.comparing(CompetitionMembersScore::getBackboard)).get();
setHonorData(honorResponseList,membersScore,"篮板王");
List<CompetitionMembersScore> backboardList = membersScoreList.stream().filter(a -> a.getBackboard().longValue() > 0).collect(Collectors.toList());
if(backboardList.size()>0){
CompetitionMembersScore backboardMax = backboardList.stream().max(Comparator.comparing(CompetitionMembersScore::getBackboard)).get();
setHonorData(honorResponseList,backboardMax,"篮板王");
}else {
setHonorData(honorResponseList,new CompetitionMembersScore(),"篮板王");
}
//效率王
// membersScore = membersScoreList.stream().max(Comparator.comparing(CompetitionMembersScore::getThreePoints)).get();
// setHonorData(membersScore,"效率王");
//助攻王
membersScore = membersScoreList.stream().max(Comparator.comparing(CompetitionMembersScore::getAssists)).get();
setHonorData(honorResponseList,membersScore,"助攻王");
List<CompetitionMembersScore> assistsList = membersScoreList.stream().filter(a -> a.getAssists().longValue() > 0).collect(Collectors.toList());
if(assistsList.size()>0){
CompetitionMembersScore assists = assistsList.stream().max(Comparator.comparing(CompetitionMembersScore::getAssists)).get();
setHonorData(honorResponseList,assists,"助攻王");
}else {
setHonorData(honorResponseList,new CompetitionMembersScore(),"助攻王");
}
//得分王
membersScore = membersScoreList.stream().max(Comparator.comparing(CompetitionMembersScore::getTotalScore)).get();
setHonorData(honorResponseList,membersScore,"得分王");
List<CompetitionMembersScore> totalScoreList = membersScoreList.stream().filter(a -> a.getTotalScore().longValue() > 0).collect(Collectors.toList());
if(totalScoreList.size()>0){
CompetitionMembersScore totalScore = totalScoreList.stream().max(Comparator.comparing(CompetitionMembersScore::getTotalScore)).get();
setHonorData(honorResponseList,totalScore,"得分王");
}else {
setHonorData(honorResponseList,new CompetitionMembersScore(),"得分王");
}
//盖帽王
membersScore = membersScoreList.stream().max(Comparator.comparing(CompetitionMembersScore::getBlock)).get();
setHonorData(honorResponseList,membersScore,"盖帽王");
List<CompetitionMembersScore> blockList = membersScoreList.stream().filter(a -> a.getBlock().longValue() > 0).collect(Collectors.toList());
if(blockList.size()>0){
CompetitionMembersScore block = blockList.stream().max(Comparator.comparing(CompetitionMembersScore::getBlock)).get();
setHonorData(honorResponseList,block,"盖帽王");
}else {
setHonorData(honorResponseList,new CompetitionMembersScore(),"盖帽王");
}
//抢断王
membersScore = membersScoreList.stream().max(Comparator.comparing(CompetitionMembersScore::getSnatch)).get();
setHonorData(honorResponseList,membersScore,"抢断王");
List<CompetitionMembersScore> snatchList = membersScoreList.stream().filter(a -> a.getSnatch().longValue() > 0).collect(Collectors.toList());
if(snatchList.size()>0){
CompetitionMembersScore snatch = snatchList.stream().max(Comparator.comparing(CompetitionMembersScore::getSnatch)).get();
setHonorData(honorResponseList,snatch,"抢断王");
}else {
setHonorData(honorResponseList,new CompetitionMembersScore(),"抢断王");
}
}
return getDataTable(honorResponseList);

@ -2,11 +2,9 @@ package com.ruoyi.system.controller;
import java.security.InvalidParameterException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.io.IOException;
import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.ObjectUtil;
@ -160,10 +158,47 @@ public class CompetitionTeamVsTeamController extends BaseController
@GetMapping("/competitionTeamIntegralList/{id}")
@ResponseBody
public TableDataInfo competitionTeamIntegralList(@PathVariable("id") Long id) throws Exception {
List<CompetitionTeamIntegralVo> list = competitionTeamVsTeamService.getCompetitionTeamIntegralListById(id);
CompetitionTeamIntegralVo vo = new CompetitionTeamIntegralVo();
vo.setCompetitionId(id);
List<CompetitionTeamIntegralVo> list = competitionTeamVsTeamService.getCompetitionTeamIntegralListById(vo);
return getDataTable(list);
}
@ApiOperation(ApiTerminal.wxMiniProgram+"根据赛会ID获取所有球队的积分排位")
@PostMapping("/competitionTeamIntegralRanking")
@ResponseBody
public TableDataInfo competitionTeamIntegralRanking(@RequestBody CompetitionTeamIntegralVo vo) throws Exception {
List<competitionTeamIntegralRankingVo> rankingVoList = new ArrayList<>();
List<CompetitionTeamIntegralVo> list = competitionTeamVsTeamService.getCompetitionTeamIntegralListById(vo);
Map<String, List<CompetitionTeamIntegralVo>> map = new HashMap<>();
if(list.size()>0) {
List<CompetitionTeamIntegralVo> notGroup = list.stream().filter(a -> ObjectUtil.isNull(a.getCompetitionGroup())).collect(Collectors.toList());
List<CompetitionTeamIntegralVo> yesGroup = list.stream().filter(a -> ObjectUtil.isNotNull(a.getCompetitionGroup())).collect(Collectors.toList());
if(yesGroup.size()>0) {
map = yesGroup.stream().collect(
Collectors.groupingBy(CompetitionTeamIntegralVo::getCompetitionGroup, HashMap::new,
Collectors.collectingAndThen(Collectors.toList(),
//正序
//list1 -> list1.stream().sorted(Comparator.comparing(CompetitionTeamIntegralVo::getIntegral))
//倒序
list1 -> list1.stream().sorted(Comparator.comparing(CompetitionTeamIntegralVo::getIntegral).reversed())
.collect(Collectors.toList())
)));
for (String key:map.keySet()){
competitionTeamIntegralRankingVo rankingVo = new competitionTeamIntegralRankingVo();
rankingVo.setCompetitionGroup(key);
rankingVo.setIntegralList(map.get(key));
rankingVoList.add(rankingVo);
}
}
if(notGroup.size()>0){
competitionTeamIntegralRankingVo rankingVo = new competitionTeamIntegralRankingVo();
rankingVo.setCompetitionGroup("未分");
rankingVo.setIntegralList(notGroup.stream().sorted(Comparator.comparing(CompetitionTeamIntegralVo::getIntegral).reversed()).collect(Collectors.toList()));
rankingVoList.add(rankingVo);
}
}
return getDataTable(rankingVoList);
}
@PostMapping("/competitionScheduleSubmit")
@ResponseBody

@ -31,6 +31,8 @@ public class CompetitionResult extends BaseEntity
@Excel(name = "赛程id(competition_team_vs_team的ID)")
private Long competitionVsId;
@ApiModelProperty(value = "competition_of_team表的主键ID", required = false)
private Long competitionOfTeamId;
/** 球队ID */
@Excel(name = "球队ID")
private Long teamId;
@ -98,7 +100,9 @@ public class CompetitionResult extends BaseEntity
private Integer integral;
@ApiModelProperty(value = "比赛结果", required = false)
private String vsResult;
@ApiModelProperty(value = "比赛类型0=循环赛1=淘汰赛", required = false)
private String vsType;
@ApiModelProperty(value = "比赛总分", required = false)
private Integer totalScore;
}

@ -4,6 +4,7 @@ import org.springframework.util.StringUtils;
public enum VsResultEnums {
win("win", "胜"),
flat("flat","平"),
fail("fail", "负");
private String code;

@ -11,10 +11,13 @@ import java.io.Serializable;
*/
@Data
public class CompetitionTeamIntegralVo implements Serializable {
private Long competitionId;
private String teamName;
private String teamLogo;
private Integer win;
private Integer fail;
private Integer totalScore;
private Integer integral;
private String vsType;
private String competitionGroup;
}

@ -0,0 +1,16 @@
package com.ruoyi.system.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @author
* @date 20230719 18:27
* @Description
*/
@Data
public class competitionTeamIntegralRankingVo {
private String competitionGroup;
public List<CompetitionTeamIntegralVo> integralList;
}

@ -76,7 +76,7 @@ public interface CompetitionTeamVsTeamMapper
List<CompetitionTeamVsTeamVo> getLatelySchedule(CompetitionTeamVsTeam competitionTeamVsTeam);
List<CompetitionTeamIntegralVo> getCompetitionTeamIntegralListById(@Param("id") Long id);
List<CompetitionTeamIntegralVo> getCompetitionTeamIntegralListById(CompetitionTeamIntegralVo vo);
int competitionVsTeamStatusUpdate(CompetitionTeamVsTeam competitionTeamVsTeam);

@ -69,7 +69,7 @@ public interface ICompetitionTeamVsTeamService
Map<String, List<CompetitionTeamVsTeamVo>> getCompetitionSchedule(CompetitionTeamVsTeam entity);
List<CompetitionTeamIntegralVo> getCompetitionTeamIntegralListById(Long id);
List<CompetitionTeamIntegralVo> getCompetitionTeamIntegralListById(CompetitionTeamIntegralVo vo);
Boolean competitionScheduleSubmit(List<CompetitionTeamVsTeamRequest> vsTeamRequestList);

@ -204,7 +204,7 @@ public class CompetitionResultServiceImpl implements ICompetitionResultService
//合计总分
int score = oneNodeScore+twoNodeScore+threeNodeScore+fourNodeScore+fiveNodeScore+sixNodeScore;
//主队
if(teamVsTeam.getMainTeamId().equals(competitionResult.getTeamId())){
if(teamVsTeam.getMainTeamId().equals(competitionResult.getCompetitionOfTeamId())){
mainId = competitionResult.getId();
mainScore = score;
teamVsTeam.setMainTeamScore(score);
@ -213,7 +213,7 @@ public class CompetitionResultServiceImpl implements ICompetitionResultService
gustScore = score;
teamVsTeam.setGuestTeamScore(score);
//客队标识
if(entity.getTeamId()==competitionResult.getTeamId()){
if(entity.getCompetitionOfTeamId()==competitionResult.getCompetitionOfTeamId()){
flag = false;
}
}

@ -138,7 +138,7 @@ public class CompetitionTeamVsTeamServiceImpl implements ICompetitionTeamVsTeamS
//组装队伍球员数据并排序
if(competitionResultList!=null&&competitionResultList.size()>0){
//组装主队数据
List<CompetitionMembersScore> mainMembersScoreList = membersScoreList.stream().filter(CompetitionMembersScore -> CompetitionMembersScore.getTeamId()==competitionResultList.get(0).getTeamId()).collect(Collectors.toList());
List<CompetitionMembersScore> mainMembersScoreList = membersScoreList.stream().filter(CompetitionMembersScore -> CompetitionMembersScore.getCompetitionOfTeamId()==competitionResultList.get(0).getCompetitionOfTeamId()).collect(Collectors.toList());
//过滤首发球员
List<CompetitionMembersScore> firstList = mainMembersScoreList.stream().filter(a -> a.getIsFirstLaunch() == 1).collect(Collectors.toList());
firstList.sort((o1, o2) -> o2.getTotalScore().compareTo(o1.getTotalScore()));
@ -150,7 +150,7 @@ public class CompetitionTeamVsTeamServiceImpl implements ICompetitionTeamVsTeamS
competitionMembersScoreList.addAll(mainMembersScoreList);
//组装客队数据
List<CompetitionMembersScore> gustMembersScoreList = membersScoreList.stream().filter(CompetitionMembersScore -> CompetitionMembersScore.getTeamId()==competitionResultList.get(1).getTeamId()).collect(Collectors.toList());
List<CompetitionMembersScore> gustMembersScoreList = membersScoreList.stream().filter(CompetitionMembersScore -> CompetitionMembersScore.getCompetitionOfTeamId()==competitionResultList.get(1).getCompetitionOfTeamId()).collect(Collectors.toList());
//过滤首发球员
List<CompetitionMembersScore> gustFirstList = gustMembersScoreList.stream().filter(a -> a.getIsFirstLaunch() == 1).collect(Collectors.toList());
gustFirstList.sort((o1, o2) -> o2.getTotalScore().compareTo(o1.getTotalScore()));
@ -208,8 +208,8 @@ public class CompetitionTeamVsTeamServiceImpl implements ICompetitionTeamVsTeamS
}
@Override
public List<CompetitionTeamIntegralVo> getCompetitionTeamIntegralListById(Long id) {
return competitionTeamVsTeamMapper.getCompetitionTeamIntegralListById(id);
public List<CompetitionTeamIntegralVo> getCompetitionTeamIntegralListById(CompetitionTeamIntegralVo vo) {
return competitionTeamVsTeamMapper.getCompetitionTeamIntegralListById(vo);
}
@Transactional
@Override

@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="id" column="id" />
<result property="competitionId" column="competition_id" />
<result property="competitionVsId" column="competition_vs_id" />
<result property="competitionOfTeamId" column="competition_of_team_id"/>
<result property="teamId" column="team_id" />
<result property="teamName" column="team_name" />
<result property="oneNodeScore" column="one_node_score" />
@ -24,11 +25,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="fourNodeScore" column="four_node_score" />
<result property="fiveNodeScore" column="five_node_score" />
<result property="sixNodeScore" column="six_node_score" />
<result property="vsResult" column="vs_result"/>
<result property="vsType" column="vs_type"/>
<result property="integral" column="integral" />
</resultMap>
<sql id="selectCompetitionResultVo">
select id, competition_id, competition_vs_id, team_id, team_name, one_node_score, two_node_score, competition_group, status, created_time, last_updated_time, created_by, modified_by, is_deleted, remark, three_node_score, four_node_score, five_node_score, six_node_score, integral from competition_result
select id, competition_id, competition_vs_id, team_id, team_name, one_node_score, two_node_score, competition_group, status, created_time, last_updated_time, created_by, modified_by, is_deleted, remark, three_node_score, four_node_score, five_node_score, six_node_score, integral,vs_result,competition_of_team_id,vs_result from competition_result
</sql>
<select id="selectCompetitionResultList" parameterType="CompetitionResult" resultMap="CompetitionResultResult">
@ -52,6 +55,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fiveNodeScore != null "> and five_node_score = #{fiveNodeScore}</if>
<if test="sixNodeScore != null "> and six_node_score = #{sixNodeScore}</if>
<if test="integral != null "> and integral = #{integral}</if>
<if test="vsResult != null "> and vs_result = #{vsResult}</if>
<if test="vsType != null "> and vs_type = #{vsType}</if>
<if test="competitionOfTeamId != null "> and competition_of_team_id = #{competitionOfTeamId}</if>
</where>
</select>
@ -63,8 +69,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select rs.id,
vs.competition_id as competitionId,
vs.id as competitionVsId,
team.id as competitionOfTeamId,
vs.competition_group as competitionGroup,
team.id as teamId,
team.team_id as teamId,
team.team_name as teamName,
rs.one_node_score as oneNodeScore,
rs.two_node_score as twoNodeScore,
@ -72,10 +79,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
rs.four_node_score as fourNodeScore,
rs.five_node_score as fiveNodeScore,
rs.six_node_score as sixNodeScore,
rs.vs_result,
vs.vs_type,
rs.integral
from competition_team_vs_team vs
inner join competition_of_team team on (vs.main_team_id=team.id or vs.guest_team_id=team.id) and team.IS_DELETED=0
left join competition_Result rs on (rs.competition_vs_id=vs.id and team.id = rs.team_id) and rs.is_deleted=0
left join competition_Result rs on (rs.competition_vs_id=vs.id and team.id = rs.competition_of_team_id) and rs.is_deleted=0
where 1=1 and vs.is_deleted=0
<if test="competitionId != null ">
AND vs.competition_Id = #{competitionId}
@ -107,6 +116,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fiveNodeScore != null">five_node_score,</if>
<if test="sixNodeScore != null">six_node_score,</if>
<if test="integral != null">integral,</if>
<if test="vsResult != null ">vs_result,</if>
<if test="vsType != null ">vs_type,</if>
<if test="competitionOfTeamId != null ">competition_of_team_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="competitionId != null">#{competitionId},</if>
@ -128,6 +140,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fiveNodeScore != null">#{fiveNodeScore},</if>
<if test="sixNodeScore != null">#{sixNodeScore},</if>
<if test="integral != null">#{integral},</if>
<if test="vsResult != null ">#{vsResult},</if>
<if test="vsType != null "> #{vsType},</if>
<if test="competitionOfTeamId != null "> #{competitionOfTeamId},</if>
</trim>
</insert>
@ -153,6 +168,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fiveNodeScore != null">five_node_score = #{fiveNodeScore},</if>
<if test="sixNodeScore != null">six_node_score = #{sixNodeScore},</if>
<if test="integral != null">integral = #{integral},</if>
<if test="vsResult != null ">vs_result = #{vsResult},</if>
<if test="vsType != null "> vs_type = #{vsType},</if>
<if test="competitionOfTeamId != null "> competition_of_team_id = #{competitionOfTeamId},</if>
</trim>
where id = #{id}
</update>

@ -241,13 +241,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT
ANY_VALUE ( t.team_name ) as teamName,
any_value (team.team_logo) as teamLogo,
any_value (team.competition_group) as competition_group,
t.competition_of_team_id,
sum(IF( t.vs_result = 'win', 1, 0 )) AS win,
sum(IF( t.vs_result = 'fail', 1, 0 )) AS fail,
sum(IFNULL( t.one_node_score, 0 )+ IFNULL( t.two_node_score, 0 )+ IFNULL( t.three_node_score, 0 )+ IFNULL( t.four_node_score, 0 )+ IFNULL( t.five_node_score, 0 )+ IFNULL( t.six_node_score, 0 )) AS totalScore,
sum(t.integral) AS integral
FROM competition_result t left join competition_of_team team on team.id = t.competition_of_team_id
WHERE t.is_deleted = 0 AND t.competition_id = #{id}
WHERE t.is_deleted = 0 AND t.competition_id = #{competitionId}
<if test="vsType != null ">
AND t.vs_type =#{vsType}
</if>
<if test="competitionGroup != null ">
AND t.competition_group =#{competitionGroup}
</if>
GROUP BY t.competition_of_team_id
ORDER BY sum(t.integral) desc
</select>

Loading…
Cancel
Save