Browse Source

Merge branch 'pt' of dd.tall.wiki:ccsens_wiki/ccsenscloud into pt

tiaosheng
zy_Java 5 years ago
parent
commit
7564897039
  1. 11
      mt/src/main/java/com/ccsens/mt/api/ExcelController.java
  2. 8
      mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java
  3. 6
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteProjectDao.java
  4. 16
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteScoreDao.java
  5. 84
      mt/src/main/java/com/ccsens/mt/service/ExcelService.java
  6. 14
      mt/src/main/java/com/ccsens/mt/service/IExcelService.java
  7. 10
      mt/src/main/resources/banner.txt
  8. 14
      mt/src/main/resources/mapper_dao/CompeteProjectDao.xml
  9. 223
      mt/src/main/resources/mapper_dao/CompeteScoreDao.xml
  10. 2
      pom.xml
  11. 22
      tall/src/main/resources/banner.txt

11
mt/src/main/java/com/ccsens/mt/api/ExcelController.java

@ -35,6 +35,17 @@ public class ExcelController {
@Resource
private IExcelService excelService;
@MustLogin
@ApiOperation(value = "比赛前八名(导出)", notes = "whj")
@RequestMapping(value = "/beforeEight", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse beforeEight(@ApiParam @Validated @RequestBody QueryDto<CompeteDto.CompeteTime> params) throws IOException {
log.info("比赛前八名(导出):{}",params);
String path = excelService.beforeEight(params);
log.info("比赛前八名(导出)结果:{}", path);
return JsonResponse.newInstance().ok(path);
}
@MustLogin
@ApiOperation(value = "xxx大赛报名表(导出)", notes = "")
@RequestMapping(value = "/competeJoin", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})

8
mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java

@ -60,5 +60,13 @@ public class CompeteExcelVo {
private String year;
}
@Data
@ApiModel("前八名-响应")
public static class BeforeEight{
@ApiModelProperty("组名")
private String groupName;
@ApiModelProperty("前八名学生名字,逗号分隔")
private String eightNames;
}
}

6
mt/src/main/java/com/ccsens/mt/persist/dao/CompeteProjectDao.java

@ -19,6 +19,12 @@ public interface CompeteProjectDao extends CompeteProjectMapper {
List<TableVo.CompeteJoin> getPlayerForSingle (@Param("level") Byte level, @Param("type") Byte type);
List<TableVo.CompeteJoin> getPlayerForTeam (@Param("level") Byte level, @Param("type") Byte type);
/**
* 根据大赛ID查询二级非通级项目
* @param competeTimeId 大赛ID
* @return 项目
*/
List<CompeteProject> queryProject(@Param("id") Long competeTimeId);
/**
* 查找项目下的参赛人数或队伍
* @param projectId

16
mt/src/main/java/com/ccsens/mt/persist/dao/CompeteScoreDao.java

@ -42,4 +42,20 @@ public interface CompeteScoreDao {
* @return
*/
List<ScoreVo.CountScoreCurrentSite> queryCountScoreAllByTeam(Long projectId);
/**
* 项目前八名
* @param projectId 项目ID
* @param competeTimeId 大赛ID
* @return 前八名
*/
List<CompeteExcelVo.BeforeEight> queryEight(@Param("projectId") Long projectId, @Param("competeTimeId") Long competeTimeId);
/**
* 花样赛前八名
* @param projectId 项目ID
* @param competeTimeId 大赛ID
* @return 前八名
*/
List<CompeteExcelVo.BeforeEight> queryEightFancyRope(@Param("projectId") Long projectId, @Param("competeTimeId") Long competeTimeId);
}

84
mt/src/main/java/com/ccsens/mt/service/ExcelService.java

@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.dto.ProvinceCompeteDto;
import com.ccsens.mt.bean.dto.ScoreDto;
@ -13,6 +14,7 @@ import com.ccsens.mt.bean.vo.ScoreVo;
import com.ccsens.mt.bean.vo.TableVo;
import com.ccsens.mt.persist.dao.*;
import com.ccsens.mt.persist.mapper.*;
import com.ccsens.mt.util.Constant;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.PoiUtil;
import com.ccsens.util.PropUtil;
@ -41,6 +43,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.unit.DataUnit;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@ -52,6 +55,9 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@Slf4j
@Service
@ -94,6 +100,8 @@ public class ExcelService implements IExcelService {
private CompeteScoreDao competeScoreDao;
@Resource
private ICompeteService competeService;
@Resource
private CompeteScoreDao competeScoreDao;
@Override
public String dasaiduiwuxinxiWPS(QueryDto<CompeteDto.CompeteTime> params) {
@ -1587,5 +1595,81 @@ public class ExcelService implements IExcelService {
return PropUtil.domain + "file/download/know?path="+path;
}
@Override
public String beforeEight(QueryDto<CompeteDto.CompeteTime> params) {
log.info("到处{}大赛各项的前八名", params);
// 查询项目
Long competeTimeId = params.getParam().getCompeteTimeId();
List<CompeteProject> list = competeProjectDao.queryProject(competeTimeId);
Workbook workbook = new XSSFWorkbook();
list.forEach(project -> {
List<CompeteExcelVo.BeforeEight> eights;
// 个人赛
if (project.getTeam().byteValue() == Constant.Compete.TEAM_NO) {
eights = competeScoreDao.queryEight(project.getId(), competeTimeId);
} else {
// 团体赛
eights = competeScoreDao.queryEightFancyRope(project.getId(), competeTimeId);
}
List<List<PoiUtil.PoiUtilCell>> raws = new ArrayList<>();
initTitle(project, raws);
eights.forEach(eight -> {
if (StrUtil.isEmpty(eight.getEightNames())) {
return;
}
List<PoiUtil.PoiUtilCell> cells = new ArrayList<>();
cells.add(new PoiUtil.PoiUtilCell(eight.getGroupName()));
String[] split = eight.getEightNames().split(",");
for (String name: split) {
cells.add(new PoiUtil.PoiUtilCell(name));
}
raws.add(cells);
});
PoiUtil.exportWB(project.getName(), raws, workbook);
});
String filepath = "mt/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".xlsx";
String path = PropUtil.path + filepath;
File file = new File(path);
try {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
// if (!file.exists()) {
// file.createNewFile();
// }
OutputStream outputStream = new FileOutputStream(file);
workbook.write(outputStream);
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return PropUtil.domain + "file/download/know?path="+path;
}
private void initTitle(CompeteProject project, List<List<PoiUtil.PoiUtilCell>> raws) {
List<PoiUtil.PoiUtilCell> title = new ArrayList<>();
title.add(new PoiUtil.PoiUtilCell( "2020年山西省学生跳绳比赛", 9 , 1));
raws.add(title);
List<PoiUtil.PoiUtilCell> title2 = new ArrayList<>();
title2.add(new PoiUtil.PoiUtilCell(project.getName() , 9 , 1));
raws.add(title2);
List<PoiUtil.PoiUtilCell> head = new ArrayList<>();
head.add(new PoiUtil.PoiUtilCell(""));
head.add(new PoiUtil.PoiUtilCell("第一名"));
head.add(new PoiUtil.PoiUtilCell("第二名"));
head.add(new PoiUtil.PoiUtilCell("第三名"));
head.add(new PoiUtil.PoiUtilCell("第四名"));
head.add(new PoiUtil.PoiUtilCell("第五名"));
head.add(new PoiUtil.PoiUtilCell("第六名"));
head.add(new PoiUtil.PoiUtilCell("第七名"));
head.add(new PoiUtil.PoiUtilCell("第八名"));
raws.add(head);
}
}

14
mt/src/main/java/com/ccsens/mt/service/IExcelService.java

@ -1,11 +1,9 @@
package com.ccsens.mt.service;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.dto.ProvinceCompeteDto;
import com.ccsens.mt.bean.dto.ScoreDto;
import com.ccsens.mt.bean.vo.TableVo;
import com.ccsens.util.bean.dto.QueryDto;
import com.ccsens.mt.bean.dto.CompeteDto;
import com.ccsens.mt.bean.vo.TableVo;
import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageInfo;
@ -99,7 +97,17 @@ public interface IExcelService {
String patternExpTable(ScoreDto.ShowResult param);
/**
* 生成比赛前八名的表格
* @param params 第几届比赛
* @return 表格下载地址
*/
String beforeEight(QueryDto<CompeteDto.CompeteTime> params);
String patternExpTable(ScoreDto.ShowResultW param);
String countExpTable(ScoreDto.ShowResult param);
}

10
mt/src/main/resources/banner.txt

@ -0,0 +1,10 @@
_ _ U _____ u _ _ U ___ u U ___ u ____ _ ____
|'| |'| \| ___"|/ |"| |"| \/"_ \/ __ __ \/"_ \/U | _"\ u |"| | _"\
/| |_| |\ | _|" U | | u U | | u | | | | \"\ /"/ | | | | \| |_) |/U | | u /| | | |
U| _ |u | |___ \| |/__ \| |/__.-,_| |_| | /\ \ /\ / /\.-,_| |_| | | _ < \| |/__U| |_| |\
|_| |_| |_____| |_____| |_____|\_)-\___/ U \ V V / U\_)-\___/ |_| \_\ |_____||____/ u
// \\ << >> // \\ // \\ \\ .-,_\ /\ /_,-. \\ // \\_ // \\ |||_
(_") ("_)(__) (__)(_")("_)(_")("_) (__) \_)-' '-(_/ (__) (__) (__)(_")("_)(__)_)

14
mt/src/main/resources/mapper_dao/CompeteProjectDao.xml

@ -61,6 +61,20 @@
and g.rec_status = 0
and c.rec_status = 0
</select>
<select id="queryProject" resultMap="com.ccsens.mt.persist.mapper.CompeteProjectMapper.BaseResultMap">
SELECT
project.*
FROM
t_compete_time time,
t_compete_project project
where time.id = #{id}
AND time.type = project.type
AND project.LEVEL = 2
AND project.certificate = 0
AND time.rec_status = 0
AND project.rec_status = 0
</select>
<select id="queryJoinNum" resultType="java.lang.Long">
<if test="team == 0">
SELECT

223
mt/src/main/resources/mapper_dao/CompeteScoreDao.xml

@ -239,6 +239,229 @@
and tcc.rec_status=0
and tcg.rec_status=0
</select>
<select id="queryEight" resultType="com.ccsens.mt.bean.vo.CompeteExcelVo$BeforeEight">
select groupName, GROUP_CONCAT( NAME ) AS eightNames from (
SELECT
t1.group_name AS groupName,
t1.name,
count( t2.id ) as count
-- GROUP_CONCAT( t1.NAME ) AS eightNames
FROM
(
SELECT
score.id,
competeGroup.group_name,
player.NAME,
score.final_score
FROM
t_compete_count_score score,
t_compete_start_order startOrder,
t_compete_project_player pp,
t_compete_player player,
t_compete_group competeGroup
WHERE
score.compete_time_id = #{competeTimeId}
AND score.project_id = #{projectId}
AND score.site_order_id = startOrder.id
AND startOrder.player_id = pp.id
AND pp.player_id = player.id
AND player.compete_group_id = competeGroup.id
AND score.rec_status = 0
AND player.rec_status = 0
AND startOrder.rec_status = 0
AND competeGroup.rec_status = 0
ORDER BY
competeGroup.id,
score.final_score
) t1,
(
SELECT
score.id,
competeGroup.group_name,
player.NAME,
score.final_score
FROM
t_compete_count_score score,
t_compete_start_order startOrder,
t_compete_project_player pp,
t_compete_player player,
t_compete_group competeGroup
WHERE
score.compete_time_id = #{competeTimeId}
AND score.project_id = #{projectId}
AND score.site_order_id = startOrder.id
AND startOrder.player_id = pp.id
AND pp.player_id = player.id
AND player.compete_group_id = competeGroup.id
AND score.rec_status = 0
AND player.rec_status = 0
AND startOrder.rec_status = 0
AND competeGroup.rec_status = 0
ORDER BY
competeGroup.id,
score.final_score
) t2
WHERE
t1.group_name = t2.group_name
AND t1.final_score &lt;= t2.final_score
GROUP BY
t1.group_name, t1.name
HAVING
count( t2.id ) &lt;= 8
) t
GROUP BY groupName
</select>
<select id="queryEightFancyRope" resultType="com.ccsens.mt.bean.vo.CompeteExcelVo$BeforeEight">
select t1.group_name as groupName, GROUP_CONCAT(t1.name) as eightNames from
(SELECT
t.id,
CONCAT( team.group_remark, CASE team.gender_group WHEN 0 THEN '女子组' WHEN 1 THEN '男子组' ELSE '混合组' END ) AS group_name,
c.NAME,
t.final_score
FROM
(
SELECT
id,
site_order_id,
sum(
(
CASE
CODE
WHEN 'setUp' THEN
score / 3
WHEN 'show' THEN
score / 3
WHEN 'spaceUse' THEN
score / 3
WHEN 'accuracy' THEN
score / 3
WHEN 'step' THEN
score / 3
WHEN 'perfor' THEN
score / 3
WHEN 'skilled' THEN
score / 3
WHEN 'agree' THEN
score / 3
WHEN 'notEnoughTime' THEN
-score
WHEN 'footfault' THEN
-score
WHEN 'ceremony' THEN
-score
ELSE -score
END
)
) AS final_score
FROM
(
SELECT
id,
site_order_id,
CODE,
sum( score ) AS score
FROM
t_compete_variety_score
WHERE
compete_time_id = #{competeTimeId}
AND project_id = #{projectId}
AND rec_status = 0
GROUP BY
site_order_id,
CODE
) t
GROUP BY
site_order_id
) t,
t_compete_start_order o,
t_compete_team team,
t_compete_company c
WHERE
t.site_order_id = o.id
AND o.player_id = team.id
AND team.company_id = c.id
AND o.rec_status = 0
AND team.rec_status = 0
AND c.rec_status = 0
order by t. final_score
) t1,
(SELECT
t.id,
CONCAT( team.group_remark, CASE team.gender_group WHEN 0 THEN '女子组' WHEN 1 THEN '男子组' ELSE '混合组' END ) AS group_name,
c.NAME,
t.final_score
FROM
(
SELECT
id,
site_order_id,
sum(
(
CASE
CODE
WHEN 'setUp' THEN
score / 3
WHEN 'show' THEN
score / 3
WHEN 'spaceUse' THEN
score / 3
WHEN 'accuracy' THEN
score / 3
WHEN 'step' THEN
score / 3
WHEN 'perfor' THEN
score / 3
WHEN 'skilled' THEN
score / 3
WHEN 'agree' THEN
score / 3
WHEN 'notEnoughTime' THEN
-score
WHEN 'footfault' THEN
-score
WHEN 'ceremony' THEN
-score
ELSE -score
END
)
) AS final_score
FROM
(
SELECT
id,
site_order_id,
CODE,
sum( score ) AS score
FROM
t_compete_variety_score
WHERE
compete_time_id = #{competeTimeId}
AND project_id = #{projectId}
AND rec_status = 0
GROUP BY
site_order_id,
CODE
) t
GROUP BY
site_order_id
) t,
t_compete_start_order o,
t_compete_team team,
t_compete_company c
WHERE
t.site_order_id = o.id
AND o.player_id = team.id
AND team.company_id = c.id
AND o.rec_status = 0
AND team.rec_status = 0
AND c.rec_status = 0
order by t. final_score
) t2
where t1.final_score &lt;= t2.final_score
GROUP BY t1.group_name
HAVING count(t2.id) &lt;= 8
</select>
</mapper>

2
pom.xml

@ -10,7 +10,7 @@
<module>util</module>
<module>tall</module>
<!-- <module>ht</module>-->
<!-- <module>game</module>-->
<module>game</module>
<module>mt</module>
<!-- <module>pims</module>-->
<!-- <module>health</module>-->

22
tall/src/main/resources/banner.txt

@ -0,0 +1,22 @@
/**
* _ooOoo_
* o8888888o
* 88" . "88
* (| -_- |)
* O\ = /O
* ___/`---'\____
* . ' \\| |// `.
* / \\||| : |||// \
* / _||||| -:- |||||- \
* | | \\\ - /// | |
* | \_| ''\---/'' | |
* \ .-\__ `-` ___/-. /
* ___`. .' /--.--\ `. . __
* ."" '< `.___\_<|>_/___.' >'"".
* | | : `- \`.;`\ _ /`;.`/ - ` : | |
* \ \ `-. \_ __\ /__ _/ .-` / /
* ======`-.____`-.___\_____/___.-`____.-'======
* `=---='
* .............................................
* 佛曰:bug泛滥,我已瘫痪!
*/
Loading…
Cancel
Save