赛会结果数据展示

pull/371/head
wuyibo 3 years ago
parent f080128a5a
commit 4a6de7fd6e

@ -5,15 +5,11 @@ import java.io.IOException;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.system.domain.vo.CompetitionTeamVsTeamVo; import com.ruoyi.system.domain.vo.CompetitionTeamVsTeamVo;
import com.ruoyi.system.domain.vo.CompetitionUnifiedRecordVo;
import io.seata.core.model.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresPermissions;
@ -104,4 +100,10 @@ public class CompetitionTeamVsTeamController extends BaseController
{ {
return toAjax(competitionTeamVsTeamService.deleteCompetitionTeamVsTeamByIds(ids)); return toAjax(competitionTeamVsTeamService.deleteCompetitionTeamVsTeamByIds(ids));
} }
@Log(title = "赛会中-球队VS球队比赛结果数据", businessType = BusinessType.OTHER)
@ApiOperation("根据ID获取当前比赛赛程的所有统分结果")
@GetMapping("/competitionUnifiedRecord/{id}")
public AjaxResult getCompetitionUnifiedRecordById(@PathVariable("id") Long id) {
return AjaxResult.success(competitionTeamVsTeamService.getCompetitionUnifiedRecordById(id));
}
} }

@ -17,4 +17,6 @@ public class CompetitionTeamVsTeamVo extends CompetitionTeamVsTeam {
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "比赛时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "比赛时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date competitionDate; private Date competitionDate;
private String weekDayName;
private String theTime;
} }

@ -0,0 +1,32 @@
package com.ruoyi.system.domain.vo;
import com.ruoyi.system.domain.CompetitionMembersScore;
import com.ruoyi.system.domain.CompetitionResult;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "比赛-赛程-统分Vo")
@Setter
@Getter
public class CompetitionUnifiedRecordVo implements Serializable {
@ApiModelProperty(value = "对阵数据", required = false)
private CompetitionTeamVsTeamVo teamVsTeamVo;
@ApiModelProperty(value = "对阵节数统分数据", required = false)
private List<CompetitionResult> competitionResultList;
@ApiModelProperty(value = "赛程队员数据", required = false)
private List<CompetitionMembersScore> competitionMembersScoreList;
@ApiModelProperty(value = "客队队员数据", required = false)
private List<CompetitionMembersScore> mainMembersScoreList;
@ApiModelProperty(value = "客队队员数据", required = false)
private List<CompetitionMembersScore> gustMembersScoreList;
}

@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.system.domain.CompetitionMembersScore; import com.ruoyi.system.domain.CompetitionMembersScore;
import org.apache.ibatis.annotations.Param;
/** /**
* --Mapper * --Mapper
@ -58,4 +59,6 @@ public interface CompetitionMembersScoreMapper
* @return * @return
*/ */
public int deleteCompetitionMembersScoreByIds(Long[] ids); public int deleteCompetitionMembersScoreByIds(Long[] ids);
public List<CompetitionMembersScore> findMembersScoreByCompetitionVsId(@Param("competitionId") Long competitionId,@Param("competitionVsId") Long competitionVsId);
} }

@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.system.domain.CompetitionResult; import com.ruoyi.system.domain.CompetitionResult;
import org.apache.ibatis.annotations.Param;
/** /**
* -Mapper * -Mapper
@ -58,4 +59,6 @@ public interface CompetitionResultMapper
* @return * @return
*/ */
public int deleteCompetitionResultByIds(Long[] ids); public int deleteCompetitionResultByIds(Long[] ids);
public List<CompetitionResult> findByCompetitionVsId(@Param("competitionId") Long competitionId,@Param("competitionVsId") Long competitionVsId);
} }

@ -66,4 +66,6 @@ public interface CompetitionTeamVsTeamMapper
* @return * @return
*/ */
public int updateCompetitionTeamVsTeamByCondition(CompetitionTeamVsTeam teamVsTeam); public int updateCompetitionTeamVsTeamByCondition(CompetitionTeamVsTeam teamVsTeam);
public CompetitionTeamVsTeamVo getCompetitionById(Long id);
} }

@ -3,6 +3,7 @@ package com.ruoyi.system.service;
import java.util.List; import java.util.List;
import com.ruoyi.system.domain.CompetitionTeamVsTeam; import com.ruoyi.system.domain.CompetitionTeamVsTeam;
import com.ruoyi.system.domain.vo.CompetitionTeamVsTeamVo; import com.ruoyi.system.domain.vo.CompetitionTeamVsTeamVo;
import com.ruoyi.system.domain.vo.CompetitionUnifiedRecordVo;
/** /**
* -VSService * -VSService
@ -59,4 +60,6 @@ public interface ICompetitionTeamVsTeamService
* @return * @return
*/ */
public int deleteCompetitionTeamVsTeamById(Long id); public int deleteCompetitionTeamVsTeamById(Long id);
public CompetitionUnifiedRecordVo getCompetitionUnifiedRecordById(Long id);
} }

@ -1,13 +1,25 @@
package com.ruoyi.system.service.impl; package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.system.domain.CompetitionMembersScore;
import com.ruoyi.system.domain.CompetitionResult;
import com.ruoyi.system.domain.vo.CompetitionTeamVsTeamVo; import com.ruoyi.system.domain.vo.CompetitionTeamVsTeamVo;
import com.ruoyi.system.domain.vo.CompetitionUnifiedRecordVo;
import com.ruoyi.system.mapper.CompetitionMembersScoreMapper;
import com.ruoyi.system.mapper.CompetitionResultMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.CompetitionTeamVsTeamMapper; import com.ruoyi.system.mapper.CompetitionTeamVsTeamMapper;
import com.ruoyi.system.domain.CompetitionTeamVsTeam; import com.ruoyi.system.domain.CompetitionTeamVsTeam;
import com.ruoyi.system.service.ICompetitionTeamVsTeamService; import com.ruoyi.system.service.ICompetitionTeamVsTeamService;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
/** /**
* -VSService * -VSService
@ -21,6 +33,11 @@ public class CompetitionTeamVsTeamServiceImpl implements ICompetitionTeamVsTeamS
@Autowired @Autowired
private CompetitionTeamVsTeamMapper competitionTeamVsTeamMapper; private CompetitionTeamVsTeamMapper competitionTeamVsTeamMapper;
@Resource
private CompetitionResultMapper competitionResultMapper;
@Resource
private CompetitionMembersScoreMapper competitionMembersScoreMapper;
/** /**
* -VS * -VS
* *
@ -92,4 +109,52 @@ public class CompetitionTeamVsTeamServiceImpl implements ICompetitionTeamVsTeamS
{ {
return competitionTeamVsTeamMapper.deleteCompetitionTeamVsTeamById(id); return competitionTeamVsTeamMapper.deleteCompetitionTeamVsTeamById(id);
} }
@Override
public CompetitionUnifiedRecordVo getCompetitionUnifiedRecordById(Long id) {
CompetitionUnifiedRecordVo unifiedRecordVo = new CompetitionUnifiedRecordVo();
CompetitionTeamVsTeamVo competitionTeamVsTeamVo = competitionTeamVsTeamMapper.getCompetitionById(id);
if(StringUtils.isEmpty(competitionTeamVsTeamVo)){
throw new ServiceException("赛程不存在");
}
unifiedRecordVo.setTeamVsTeamVo(competitionTeamVsTeamVo);
//查询队伍数据
List<CompetitionResult> competitionResultList = competitionResultMapper.findByCompetitionVsId(competitionTeamVsTeamVo.getCompetitionId(),competitionTeamVsTeamVo.getId());
unifiedRecordVo.setCompetitionResultList(competitionResultList);
//查询赛程中个人成绩
List<CompetitionMembersScore> membersScoreList = competitionMembersScoreMapper.findMembersScoreByCompetitionVsId(competitionTeamVsTeamVo.getCompetitionId(),competitionTeamVsTeamVo.getId());
List<CompetitionMembersScore> competitionMembersScoreList = new ArrayList<>();
//组装队伍球员数据并排序
//组装队伍球员数据并排序
if(competitionResultList!=null&&competitionResultList.size()>0){
//组装主队数据
List<CompetitionMembersScore> mainMembersScoreList = membersScoreList.stream().filter(CompetitionMembersScore -> CompetitionMembersScore.getTeamId()==competitionResultList.get(0).getTeamId()).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()));
//不是首发球员
List<CompetitionMembersScore> noFirstList = mainMembersScoreList.stream().filter(a -> a.getIsFirstLaunch() == 0).collect(Collectors.toList());
noFirstList.sort((o1, o2) -> o2.getTotalScore().compareTo(o1.getTotalScore()));
mainMembersScoreList = firstList;
mainMembersScoreList.addAll(noFirstList);
competitionMembersScoreList.addAll(mainMembersScoreList);
//组装客队数据
List<CompetitionMembersScore> gustMembersScoreList = membersScoreList.stream().filter(CompetitionMembersScore -> CompetitionMembersScore.getTeamId()==competitionResultList.get(1).getTeamId()).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()));
//不是首发球员
List<CompetitionMembersScore> gustNoFirstList = gustMembersScoreList.stream().filter(a -> a.getIsFirstLaunch() == 0).collect(Collectors.toList());
gustNoFirstList.sort((o1, o2) -> o2.getTotalScore().compareTo(o1.getTotalScore()));
gustMembersScoreList = gustFirstList;
gustMembersScoreList.addAll(gustNoFirstList);
competitionMembersScoreList.addAll(gustMembersScoreList);
unifiedRecordVo.setCompetitionMembersScoreList(competitionMembersScoreList);
}
return unifiedRecordVo;
}
} }

@ -73,7 +73,48 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectCompetitionMembersScoreVo"/> <include refid="selectCompetitionMembersScoreVo"/>
where id = #{id} where id = #{id}
</select> </select>
<select id="findMembersScoreByCompetitionVsId"
resultType="com.ruoyi.system.domain.CompetitionMembersScore">
SELECT
DISTINCT
sco.id,
vs.competition_id as competitionId,
vs.id as competitionVsId,
vs.competition_group as competitionGroup,
team.id AS teamId,
member.user_id as teamUserId,
cm.real_name as realName,
team.team_name as teamName,
sco.node_num as nodeNum,
member.jersey_number as jerseyNumber,
sco.total_score as totalScore,
sco.two_points as twoPoints,
sco.three_points as threePoints,
sco.penalty,
sco.backboard,
sco.front_plate as frontPlate,
sco.back_plate as backPlate,
sco.assists,
sco.snatch,
sco.block,
sco.fault,
sco.breaks,
IFNULL(sco.is_first_launch,0) AS isFirstLaunch
FROM
competition_team_vs_team vs
inner join basketball_team team on (vs.main_team_id=team.id or vs.guest_team_id=team.id) and team.IS_DELETED=0
left join competition_members member on team.id = member.competition_team_id and member.IS_DELETED=0
left join competition_members_score sco on (vs.id=sco.competition_vs_id and member.user_id = sco.team_user_id) and sco.is_deleted=0
left join user_info userInfo on member.user_id = userInfo.id and userInfo.is_deleted=0
left join competition_members cm on cm.user_id=userInfo.id and cm.is_deleted=0
WHERE 1 = 1 AND vs.is_deleted = 0
<if test="competitionId != null ">
AND vs.competition_Id = #{competitionId}
</if>
<if test="competitionVsId != null ">
AND vs.id = #{competitionVsId}
</if>
</select>
<insert id="insertCompetitionMembersScore" parameterType="CompetitionMembersScore" useGeneratedKeys="true" keyProperty="id"> <insert id="insertCompetitionMembersScore" parameterType="CompetitionMembersScore" useGeneratedKeys="true" keyProperty="id">
insert into competition_members_score insert into competition_members_score
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">

@ -59,7 +59,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectCompetitionResultVo"/> <include refid="selectCompetitionResultVo"/>
where id = #{id} where id = #{id}
</select> </select>
<select id="findByCompetitionVsId" resultType="com.ruoyi.system.domain.CompetitionResult">
select rs.id,
vs.competition_id as competitionId,
vs.id as competitionVsId,
vs.competition_group as competitionGroup,
team.id as teamId,
team.team_name as teamName,
rs.one_node_score as oneNodeScore,
rs.two_node_score as twoNodeScore,
rs.three_node_score as threeNodeScore,
rs.four_node_score as fourNodeScore,
rs.five_node_score as fiveNodeScore,
rs.six_node_score as sixNodeScore,
rs.integral
from competition_team_vs_team vs
inner join basketball_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
where 1=1 and vs.is_deleted=0
<if test="competitionId != null ">
AND vs.competition_Id = #{competitionId}
</if>
<if test="competitionVsId != null ">
AND vs.id = #{competitionVsId}
</if>
</select>
<insert id="insertCompetitionResult" parameterType="CompetitionResult" useGeneratedKeys="true" keyProperty="id"> <insert id="insertCompetitionResult" parameterType="CompetitionResult" useGeneratedKeys="true" keyProperty="id">
insert into competition_result insert into competition_result
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">

@ -66,6 +66,66 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectCompetitionTeamVsTeamVo"/> <include refid="selectCompetitionTeamVsTeamVo"/>
where id = #{id} where id = #{id}
</select> </select>
<select id="getCompetitionById" resultType="com.ruoyi.system.domain.vo.CompetitionTeamVsTeamVo">
select
t.id as id,
t.competition_id as competitionId,
t.main_team_id as mainTeamId,
b1.TEAM_NAME as mainTeamName,
b1.team_logo as mainTeamLogo,
t.guest_team_id as guestTeamId,
b2.TEAM_NAME as guestTeamName,
b2.team_logo as guestTeamLogo,
t.competition_time as competitionTime,
t.building_id as buildingId,
t.building_name as buildingName,
t.competition_address as competitionAddress,
t.competition_group as competitionGroup,
t.status,
t.vs_type as vsType,
t.created_time as createdTime,
t.last_updated_time as lastUpdatedTime,
t.created_by as createdBy,
t.modified_by as modifiedBy,
t.main_team_score as mainTeamScore,
t.guest_team_score as guestTeamScore,
t.is_deleted as isDeleted,
DATE_FORMAT(t.competition_time,'%Y-%m-%d') as competitionDate,
CASE dayofweek(t.competition_time)
WHEN 1 THEN
'星期日'
WHEN 2 THEN
'星期一'
WHEN 3 THEN
'星期二'
WHEN 4 THEN
'星期三'
WHEN 5 THEN
'星期四'
WHEN 6 THEN
'星期五'
WHEN 7 THEN
'星期六'
END as weekDayName,
CASE t.status
WHEN -1 THEN
'已取消'
WHEN 0 THEN
'报名中'
WHEN 1 THEN
'比赛中'
WHEN 2 THEN
'已结束'
END as statusName,
DATE_FORMAT(t.competition_time,'%H:%i') AS theTime,
t.remark as remark
from competition_team_vs_team t
LEFT JOIN basketball_team b1 ON b1.id = t.main_team_id
left join basketball_team b2 on t.guest_team_id=b2.id
where 1=1 AND t.id=#{id}
AND t.is_deleted = 0
LIMIT 1
</select>
<insert id="insertCompetitionTeamVsTeam" parameterType="CompetitionTeamVsTeam" useGeneratedKeys="true" keyProperty="id"> <insert id="insertCompetitionTeamVsTeam" parameterType="CompetitionTeamVsTeam" useGeneratedKeys="true" keyProperty="id">
insert into competition_team_vs_team insert into competition_team_vs_team

@ -25,6 +25,12 @@ export function addCompetitionTeamVsTeam(data) {
data: data data: data
}) })
} }
export function getCompetitionUnifiedRecord(id) {
return request({
url: '/system/competitionTeamVsTeam/competitionUnifiedRecord/' + id,
method: 'get'
})
}
// 修改赛会中-球队VS球队关系 // 修改赛会中-球队VS球队关系
export function updateCompetitionTeamVsTeam(data) { export function updateCompetitionTeamVsTeam(data) {

@ -420,6 +420,20 @@
<el-button @click="vsOpen=false"> </el-button> <el-button @click="vsOpen=false"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<!--赛程比赛数据记录-->
<el-dialog :title="vsRecordTitle" :visible.sync="vsRecordOpen" width="750px" append-to-body>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark">{{ competitionUnifiedRecord.teamVsTeamVo.competitionTime }}</div></el-col>
</el-row>
<el-row>
<el-col :span="8"><div class="grid-content bg-purple">{{competitionUnifiedRecord.teamVsTeamVo.mainTeamName}}</div></el-col>
<el-col :span="8"><div class="grid-content bg-purple-light">{{competitionUnifiedRecord.teamVsTeamVo.mainTeamScore}} :
{{competitionUnifiedRecord.teamVsTeamVo.guestTeamScore}}
</div></el-col>
<el-col :span="8"><div class="grid-content bg-purple">{{competitionUnifiedRecord.teamVsTeamVo.guestTeamName}}</div></el-col>
</el-row>
</el-dialog>
</div> </div>
</template> </template>
@ -428,7 +442,7 @@ import { listCompetition, getCompetition, delCompetition, addCompetition, update
import { listCompetitionOfTeam, batchEditById, intoTeamGroup, removeTeamGroup, updateCompetitionOfTeam } from "@/api/system/competitionOfTeam"; import { listCompetitionOfTeam, batchEditById, intoTeamGroup, removeTeamGroup, updateCompetitionOfTeam } from "@/api/system/competitionOfTeam";
import { listCompetitionMembers, getCompetitionMembers, delCompetitionMembers, addCompetitionMembers, updateCompetitionMembers } from "@/api/system/competitionMembers"; import { listCompetitionMembers, getCompetitionMembers, delCompetitionMembers, addCompetitionMembers, updateCompetitionMembers } from "@/api/system/competitionMembers";
import { listCompetitionTeamGroup, arrangeTeamGroupSchedule, delCompetitionTeamGroup, addCompetitionTeamGroup, updateCompetitionTeamGroup } from "@/api/system/competitionTeamGroup"; import { listCompetitionTeamGroup, arrangeTeamGroupSchedule, delCompetitionTeamGroup, addCompetitionTeamGroup, updateCompetitionTeamGroup } from "@/api/system/competitionTeamGroup";
import { listCompetitionTeamVsTeam, getCompetitionTeamVsTeam, delCompetitionTeamVsTeam, addCompetitionTeamVsTeam, updateCompetitionTeamVsTeam } from "@/api/system/competitionTeamVsTeam"; import { listCompetitionTeamVsTeam, getCompetitionUnifiedRecord, delCompetitionTeamVsTeam, addCompetitionTeamVsTeam, updateCompetitionTeamVsTeam } from "@/api/system/competitionTeamVsTeam";
import { listWxBuilding, getWxBuilding, delWxBuilding, addWxBuilding, updateWxBuilding } from "@/api/system/WxBuilding"; import { listWxBuilding, getWxBuilding, delWxBuilding, addWxBuilding, updateWxBuilding } from "@/api/system/WxBuilding";
export default { export default {
@ -484,6 +498,17 @@ export default {
vsOpen:false, vsOpen:false,
buildingList: [], buildingList: [],
buildLoading:false, buildLoading:false,
vsRecordTitle:"",
vsRecordOpen:false,
competitionUnifiedRecord:{
teamVsTeamVo:{
competitionTime:null,
mainTeamName:null,
guestTeamName: null,
mainTeamScore:null,
guestTeamScore:null
},
}
}; };
}, },
created() { created() {
@ -797,6 +822,14 @@ export default {
this.vsOpen=true; this.vsOpen=true;
this.vsTitle = "编辑赛程" this.vsTitle = "编辑赛程"
}, },
handleTeamVsTeamRecord(row){
this.vsRecordOpen=true;
this.vsRecordTitle = "比赛数据记录";
//
getCompetitionUnifiedRecord(row.id).then(response=>{
this.competitionUnifiedRecord = response.data
})
},
handleTeamVsTeamDel(row){ handleTeamVsTeamDel(row){
const ids = row.id || this.ids; const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除赛会中的赛程数据?').then(function() { this.$modal.confirm('是否确认删除赛会中的赛程数据?').then(function() {
@ -883,4 +916,27 @@ export default {
.box-card { .box-card {
width: 275px; width: 275px;
} }
.el-row {
margin-bottom: 20px;
}
.el-col {
border-radius: 4px;
}
.bg-purple-dark {
background: #99a9bf;
}
.bg-purple {
background: #d3dce6;
}
.bg-purple-light {
background: #e5e9f2;
}
.grid-content {
border-radius: 4px;
min-height: 36px;
}
.row-bg {
padding: 10px 0;
background-color: #f9fafc;
}
</style> </style>

Loading…
Cancel
Save