diff --git a/mt/src/main/java/com/ccsens/mt/api/CompeteScoreController.java b/mt/src/main/java/com/ccsens/mt/api/CompeteScoreController.java index c1bc93e4..99fa955a 100644 --- a/mt/src/main/java/com/ccsens/mt/api/CompeteScoreController.java +++ b/mt/src/main/java/com/ccsens/mt/api/CompeteScoreController.java @@ -2,12 +2,14 @@ package com.ccsens.mt.api; import com.ccsens.cloudutil.annotation.MustLogin; import com.ccsens.mt.bean.dto.CompeteDto; +import com.ccsens.mt.bean.dto.ScoreDto; import com.ccsens.mt.bean.vo.CompeteVo; import com.ccsens.mt.bean.vo.ScoreVo; import com.ccsens.mt.service.ICompeteService; import com.ccsens.util.JsonResponse; import com.ccsens.util.bean.dto.QueryDto; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; @@ -40,8 +42,27 @@ public class CompeteScoreController { return JsonResponse.newInstance().ok(playerList); } -// @MustLogin - @ApiOperation(value = "项目状态", notes = "lihong,查询项目集合,再根据时间判断项目得状态") + + + @MustLogin + @ApiOperation(value = "花样赛提交分数", notes = "Mr.王----提交成绩到那个花样赛得表里面就行了,单表操作") + @RequestMapping(value = "/submitOrderList", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse submitOrder(@ApiParam @Validated @RequestBody QueryDto params){ + log.info("花样赛提交分数:{}",params); + competeService.submitOrderList(params.getParam()); + return JsonResponse.newInstance().ok(); + } + @MustLogin + @ApiOperation(value = "花样赛成绩查看", notes = "Mr.王 -----从花样赛成绩表里面查看出这个人得成绩") + @RequestMapping(value = "/showResult", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> showResult (@ApiParam @Validated @RequestBody QueryDto params){ + log.info("花样赛详细分数查看:{}",params); + List totalScoreDisplaysList= competeService.showResult(params.getParam()); + return JsonResponse.newInstance().ok(totalScoreDisplaysList); + } + + + @ApiOperation(value = "项目状态", notes = "") @RequestMapping(value = "/countScore", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse countScore(@ApiParam @Validated @RequestBody QueryDto params) { log.info("查询比赛项目上的参赛选手列表:{}",params); @@ -49,7 +70,7 @@ public class CompeteScoreController { return JsonResponse.newInstance().ok(countScoreList); } - @MustLogin + @ApiOperation(value = "选手排名", notes = "多个信息表关联之后,利用分数排序") @RequestMapping(value = "/countScoreDetail", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse countScoreDetail(@ApiParam @Validated @RequestBody QueryDto params) { diff --git a/mt/src/main/java/com/ccsens/mt/bean/dto/ScoreDto.java b/mt/src/main/java/com/ccsens/mt/bean/dto/ScoreDto.java index a2f4abec..1779f9e0 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/dto/ScoreDto.java +++ b/mt/src/main/java/com/ccsens/mt/bean/dto/ScoreDto.java @@ -4,7 +4,9 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.NonNull; +import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.List; @@ -89,30 +91,40 @@ public class ScoreDto { @Data @ApiModel public static class InformationSubmitted{ + @NotNull @ApiModelProperty("大赛id") private Long competeTimeId; + @NotNull @ApiModelProperty("项目Id") private Long projectId; + @NotNull @ApiModelProperty("场次id") - private BigDecimal siteOrderId; + private Long siteOrderId; + @NotNull @ApiModelProperty("裁判id") private Long judgmentId; -// @ApiModelProperty("几分") -// List + @NotNull + @ApiModelProperty("计分项目") + private List fractionsList; } @Data @ApiModel public static class Fraction{ @ApiModelProperty("分数") - private int score; + private BigDecimal score; @ApiModelProperty("分数类型") private String code; + } - - - + @Data + @ApiModel + public static class ShowResult{ + @NotNull + @ApiModelProperty("项目id") + private Long projectId; } + } diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteCountScoreKey.java b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteCountScoreKey.java index b1b31911..407e838d 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/CompeteCountScoreKey.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/CompeteCountScoreKey.java @@ -1,3 +1,4 @@ + package com.ccsens.mt.bean.po; import java.io.Serializable; @@ -36,4 +37,41 @@ public class CompeteCountScoreKey implements Serializable { sb.append("]"); return sb.toString(); } -} \ No newline at end of file +} + + +//public class CompeteCountScoreKey implements Serializable { +// private Long id; +// +// private Integer shouldTimes; +// +// private static final long serialVersionUID = 1L; +// +// public Long getId() { +// return id; +// } +// +// public void setId(Long id) { +// this.id = id; +// } +// +// public Integer getShouldTimes() { +// return shouldTimes; +// } +// +// public void setShouldTimes(Integer shouldTimes) { +// this.shouldTimes = shouldTimes; +// } +// +// @Override +// public String toString() { +// StringBuilder sb = new StringBuilder(); +// sb.append(getClass().getSimpleName()); +// sb.append(" ["); +// sb.append("Hash = ").append(hashCode()); +// sb.append(", id=").append(id); +// sb.append(", shouldTimes=").append(shouldTimes); +// sb.append("]"); +// return sb.toString(); +// } +//} \ No newline at end of file diff --git a/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java b/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java index 917ec421..a84b0426 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java +++ b/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java @@ -14,6 +14,17 @@ import java.util.List; */ @Data public class CompeteVo { + + @Data + @ApiModel("教练和成绩") + public static class Result{ + @ApiModelProperty("教练号") + private byte chief; + @ApiModelProperty("分数") + private BigDecimal score; + } + + @Data @ApiModel("查找第几届") public static class CompeteTime{ @@ -452,6 +463,37 @@ public class CompeteVo { private String otherPlayerName; } + @Data + + @ApiModel("花样赛总成绩") + public static class TotalScoreDisplay{ + @ApiModelProperty("项目名") + public String companyName; + @ApiModelProperty("参赛队员名") + public String peopleName; + @ApiModelProperty("裁判1") + public BigDecimal referee1; + @ApiModelProperty("裁判2") + public BigDecimal referee2; + @ApiModelProperty("裁判3") + public BigDecimal referee3; + @ApiModelProperty("1-3裁判得平均值") + public BigDecimal avg1To3; + @ApiModelProperty("裁判4") + public BigDecimal referee4; + @ApiModelProperty("裁判5") + public BigDecimal referee5; + @ApiModelProperty("裁判6") + public BigDecimal referee6; + @ApiModelProperty("4-6裁判得平均值") + public BigDecimal avg4To6; + @ApiModelProperty("主裁判") + public BigDecimal referee0; + @ApiModelProperty("最后得分") + public BigDecimal result; +// @ApiModelProperty("排名") +// public int order; + } @Data @ApiModel("项目,开始时间和比赛状态") public static class CountScore{ @@ -474,8 +516,5 @@ public class CompeteVo { private String name; @ApiModelProperty("成绩") private Long grade; - } - - } diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java index fac2476c..5f820582 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTimeDao.java @@ -12,6 +12,12 @@ import java.util.List; */ @Repository public interface CompeteTimeDao extends CompeteTimeMapper { + /** + * 查各个教练得成绩 + * @param siteId + * @return + */ + List selectJudgmentS(@Param("siteId") Long siteId ); /** * 通过类型查找第几届和时间 * @param type 类型 diff --git a/mt/src/main/java/com/ccsens/mt/service/CompeteService.java b/mt/src/main/java/com/ccsens/mt/service/CompeteService.java index 0ed4dbaa..aad60092 100644 --- a/mt/src/main/java/com/ccsens/mt/service/CompeteService.java +++ b/mt/src/main/java/com/ccsens/mt/service/CompeteService.java @@ -11,6 +11,7 @@ import com.ccsens.cloudutil.bean.tall.dto.WpsDto; import com.ccsens.cloudutil.feign.TallFeignClient; import com.ccsens.mt.bean.dto.CompeteDto; import com.ccsens.mt.bean.dto.LevelDto; +import com.ccsens.mt.bean.dto.ScoreDto; import com.ccsens.mt.bean.po.*; import com.ccsens.mt.bean.vo.CompeteVo; import com.ccsens.mt.bean.vo.ScoreVo; @@ -37,6 +38,9 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.*; import java.math.BigDecimal; + +import java.util.*; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -82,11 +86,109 @@ public class CompeteService implements ICompeteService { @Resource private CommonFileMapper commonFileMapper; @Resource + private CompeteStartOrderMapper competeStartOrderMapper; + @Resource + private CompeteVarietyScoreMapper competeVarietyScoreMapper; + + /** + * 花样赛总成绩展示 + * @param param + */ + @Override + public List showResult(ScoreDto.ShowResult param) { + List totalScoreDisplaysList=new ArrayList<>(); + CompeteStartOrderExample competeStartOrderExample =new CompeteStartOrderExample(); + competeStartOrderExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); + List competeStartOrdersList = competeStartOrderMapper.selectByExample(competeStartOrderExample); + competeStartOrdersList.forEach(competeStartOrder -> { + //一个人或者一个团队得数据 + CompeteVo.TotalScoreDisplay totalScoreDisplay=new CompeteVo.TotalScoreDisplay(); + //项目名 + totalScoreDisplay.setCompanyName(competeProjectMapper.selectByPrimaryKey(competeStartOrder.getProjectId()).getName()); + + //名字 + if(competeStartOrder.getTeam().equals((byte) 0)){ + //个人 + totalScoreDisplay.setPeopleName( competePlayerDao.selectByPrimaryKey(competeStartOrder.getPlayerId()).getName()); + }else { + //团体 + CompeteTeamMemberExample competeTeamMemberExample =new CompeteTeamMemberExample(); + competeTeamMemberExample.createCriteria().andCompeteTeamIdEqualTo(competeStartOrder.getPlayerId()); + List competeTeamMembersList = competeTeamMemberMapper.selectByExample(competeTeamMemberExample); + StringBuilder stringBuilder=new StringBuilder(""); + competeTeamMembersList.forEach(competeTeamMember -> { + stringBuilder.append(competePlayerDao.selectByPrimaryKey(competeTeamMember.getPlayerId()).getName()+'、'); + }); + totalScoreDisplay.setPeopleName(stringBuilder.toString().substring(0,stringBuilder.length())); + } + List results = competeTimeDao.selectJudgmentS(competeStartOrder.getId()); + //7个教练成绩也上去了 + for (CompeteVo.Result r :results){ + if(r.getChief()==0){ + totalScoreDisplay.setReferee0(r.getScore()); + }else if(r.getChief()==1){ + totalScoreDisplay.setReferee1(r.getScore()); + }else if(r.getChief()==2){ + totalScoreDisplay.setReferee2(r.getScore()); + }else if(r.getChief()==3){ + totalScoreDisplay.setReferee3(r.getScore()); + }else if(r.getChief()==4){ + totalScoreDisplay.setReferee4(r.getScore()); + }else if(r.getChief()==5){ + totalScoreDisplay.setReferee5(r.getScore()); + }else if(r.getChief()==6){ + totalScoreDisplay.setReferee6(r.getScore()); + } + } + + BigDecimal bigDecimal1to3=new BigDecimal(0); + bigDecimal1to3.add(totalScoreDisplay.getReferee1()).add(totalScoreDisplay.getReferee2()).add(totalScoreDisplay.getReferee3()); + BigDecimal bigDecimalavg1to3=new BigDecimal(0); + BigDecimal bignum=new BigDecimal(3); + totalScoreDisplay.setAvg1To3(bigDecimalavg1to3.divide(bignum,2,BigDecimal.ROUND_HALF_UP)); + + BigDecimal bigDecimal4to6=new BigDecimal(0); + bigDecimal4to6.add(totalScoreDisplay.getReferee4()).add(totalScoreDisplay.getReferee5()).add(totalScoreDisplay.getReferee6()); + BigDecimal bigDecimalavg4to6=new BigDecimal(0); + BigDecimal bignum1=new BigDecimal(3); + totalScoreDisplay.setAvg4To6(bigDecimalavg4to6.divide(bignum1,2,BigDecimal.ROUND_HALF_UP)); + //总成绩也出来了 + BigDecimal re=new BigDecimal(0); + re.add(totalScoreDisplay.getAvg1To3()).add(totalScoreDisplay.getAvg4To6()).subtract(totalScoreDisplay.getReferee0()); + totalScoreDisplay.setResult(re); + totalScoreDisplaysList.add(totalScoreDisplay); + }); +// Collections.sort(totalScoreDisplaysList, new Comparator() { +// @Override +// public BigDecimal compare(CompeteVo.TotalScoreDisplay o1, CompeteVo.TotalScoreDisplay o2) { +// o1.getResult().subtract(o2.getResult()); +// return o1.getResult(); +// } +// }); + + for (int i = 0; i < totalScoreDisplaysList.size() - 1; i++) { + for (int j = 1; j < totalScoreDisplaysList.size() - i; j++) { + BigDecimal b1 = totalScoreDisplaysList.get(j - 1).getResult(); + BigDecimal b2 = totalScoreDisplaysList.get(j).getResult(); + + CompeteVo.TotalScoreDisplay a; + if (b1.compareTo(b2) < 0) { + a = totalScoreDisplaysList.get(j - 1); + totalScoreDisplaysList.set((j - 1), totalScoreDisplaysList.get(j)); + totalScoreDisplaysList.set(j, a); + } + } + } + + return null; + } + private CompeteProjectConfigDao competeProjectConfigDao; @Resource private CompeteScoreDao competeScoreDao; @Resource private CompeteCountScoreMapper competeCountScoreMapper; + /** * 查看第几届 */ @@ -898,6 +1000,21 @@ public class CompeteService implements ICompeteService { } return failPlayerInfoList; } + @Override + public void submitOrderList(ScoreDto.InformationSubmitted param) { + param.getFractionsList().forEach(mes->{ + CompeteVarietyScore competeVarietyScore=new CompeteVarietyScore(); + competeVarietyScore.setId(snowflake.nextId()); + competeVarietyScore.setCompeteTimeId(param.getCompeteTimeId()); + competeVarietyScore.setProjectId(param.getProjectId()); + competeVarietyScore.setSiteOrderId(param.getSiteOrderId()); + competeVarietyScore.setCode(mes.getCode()); + competeVarietyScore.setScore(mes.getScore()); + competeVarietyScore.setJudgmentId(param.getJudgmentId()); + competeVarietyScoreMapper.insertSelective(competeVarietyScore); + }); + + } @@ -1127,5 +1244,4 @@ public class CompeteService implements ICompeteService { competeCountScoreMapper.insert(competeCountScore); } - } \ No newline at end of file diff --git a/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java b/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java index c022b0d8..bdc7be69 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java @@ -1,6 +1,7 @@ package com.ccsens.mt.service; import com.ccsens.mt.bean.dto.CompeteDto; +import com.ccsens.mt.bean.dto.ScoreDto; import com.ccsens.mt.bean.vo.CompeteVo; import com.ccsens.mt.bean.vo.ScoreVo; import com.ccsens.util.bean.dto.QueryDto; @@ -151,6 +152,12 @@ public interface ICompeteService { + void submitOrderList(ScoreDto.InformationSubmitted param); + + + List showResult(ScoreDto.ShowResult param); + + /** * 项目,开始时间和比赛状态 * @param params 大赛id和比赛项目id @@ -180,8 +187,6 @@ public interface ICompeteService { void submitScore(CompeteDto.SubmitScore params) ; - - } diff --git a/mt/src/main/resources/application.yml b/mt/src/main/resources/application.yml index 4ecd13fd..f59084b0 100644 --- a/mt/src/main/resources/application.yml +++ b/mt/src/main/resources/application.yml @@ -1,5 +1,5 @@ spring: profiles: - active: dev - include: common, util-dev + active: test + include: common, util-test diff --git a/mt/src/main/resources/mapper_dao/CompeteTimeDao.xml b/mt/src/main/resources/mapper_dao/CompeteTimeDao.xml index 3bbe88b0..9f3d834e 100644 --- a/mt/src/main/resources/mapper_dao/CompeteTimeDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteTimeDao.xml @@ -120,4 +120,14 @@ and p.rec_status = 0 GROUP BY g.id + \ No newline at end of file diff --git a/util/src/test/java/com/ccsens/util/ListSort.java b/util/src/test/java/com/ccsens/util/ListSort.java new file mode 100644 index 00000000..fc18c4fc --- /dev/null +++ b/util/src/test/java/com/ccsens/util/ListSort.java @@ -0,0 +1,33 @@ +package com.ccsens.util; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class ListSort { + public static void main(String[] args) { + List list = new ArrayList<>(); + list.add(new StuVO("AAA",90)); + list.add(new StuVO("BBB",150)); + list.add(new StuVO("CCC",12)); + list.add(new StuVO("DDD",64)); + list.add(new StuVO("EEE",5)); + for(int i = 0;i < list.size();i++){ + System.out.println(list.get(i).getName()+" "+list.get(i).getScore()); + } + System.out.println("--------"); + + Collections.sort(list, new Comparator() { + @Override + public int compare(StuVO o1, StuVO o2) { + int i = o1.getScore() - o2.getScore(); + return i; + } + }); + + for(int i = 0;i < list.size();i++){ + System.out.println(list.get(i).getName()+" "+list.get(i).getScore()); + } + } +} diff --git a/util/src/test/java/com/ccsens/util/StuVO.java b/util/src/test/java/com/ccsens/util/StuVO.java new file mode 100644 index 00000000..e59e7f36 --- /dev/null +++ b/util/src/test/java/com/ccsens/util/StuVO.java @@ -0,0 +1,27 @@ +package com.ccsens.util; + +public class StuVO { + private String name; + private int score; + + public StuVO(String name, int srore) { + this.name = name; + this.score = srore; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getScore() { + return score; + } + + public void setScore(int srore) { + this.score = srore; + } +}