diff --git a/mt/src/main/java/com/ccsens/mt/api/ExcelController.java b/mt/src/main/java/com/ccsens/mt/api/ExcelController.java index d3b10afe..8fff9c05 100644 --- a/mt/src/main/java/com/ccsens/mt/api/ExcelController.java +++ b/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 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"}) diff --git a/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java b/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java index cacad4d0..b6e64ca2 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java +++ b/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; + } } diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteProjectDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteProjectDao.java index 67c7c4d1..5a65d69f 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteProjectDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteProjectDao.java @@ -19,6 +19,12 @@ public interface CompeteProjectDao extends CompeteProjectMapper { List getPlayerForSingle (@Param("level") Byte level, @Param("type") Byte type); List getPlayerForTeam (@Param("level") Byte level, @Param("type") Byte type); + /** + * 根据大赛ID查询二级,非通级项目 + * @param competeTimeId 大赛ID + * @return 项目 + */ + List queryProject(@Param("id") Long competeTimeId); /** * 查找项目下的参赛人数或队伍 * @param projectId diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteScoreDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteScoreDao.java index 74d3ac81..e365e50e 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteScoreDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteScoreDao.java @@ -42,4 +42,20 @@ public interface CompeteScoreDao { * @return */ List queryCountScoreAllByTeam(Long projectId); + + /** + * 项目前八名 + * @param projectId 项目ID + * @param competeTimeId 大赛ID + * @return 前八名 + */ + List queryEight(@Param("projectId") Long projectId, @Param("competeTimeId") Long competeTimeId); + + /** + * 花样赛前八名 + * @param projectId 项目ID + * @param competeTimeId 大赛ID + * @return 前八名 + */ + List queryEightFancyRope(@Param("projectId") Long projectId, @Param("competeTimeId") Long competeTimeId); } diff --git a/mt/src/main/java/com/ccsens/mt/service/ExcelService.java b/mt/src/main/java/com/ccsens/mt/service/ExcelService.java index 2b17c0e8..8c5277a5 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ExcelService.java +++ b/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 params) { @@ -1587,5 +1595,81 @@ public class ExcelService implements IExcelService { return PropUtil.domain + "file/download/know?path="+path; } + @Override + public String beforeEight(QueryDto params) { + log.info("到处{}大赛各项的前八名", params); + // 查询项目 + Long competeTimeId = params.getParam().getCompeteTimeId(); + List list = competeProjectDao.queryProject(competeTimeId); + Workbook workbook = new XSSFWorkbook(); + + list.forEach(project -> { + List eights; + // 个人赛 + if (project.getTeam().byteValue() == Constant.Compete.TEAM_NO) { + eights = competeScoreDao.queryEight(project.getId(), competeTimeId); + } else { + // 团体赛 + eights = competeScoreDao.queryEightFancyRope(project.getId(), competeTimeId); + } + List> raws = new ArrayList<>(); + initTitle(project, raws); + eights.forEach(eight -> { + + if (StrUtil.isEmpty(eight.getEightNames())) { + return; + } + + List 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> raws) { + List title = new ArrayList<>(); + title.add(new PoiUtil.PoiUtilCell( "2020年山西省学生跳绳比赛", 9 , 1)); + raws.add(title); + List title2 = new ArrayList<>(); + title2.add(new PoiUtil.PoiUtilCell(project.getName() , 9 , 1)); + raws.add(title2); + List 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); + } + } diff --git a/mt/src/main/java/com/ccsens/mt/service/IExcelService.java b/mt/src/main/java/com/ccsens/mt/service/IExcelService.java index f49334f2..9e81105d 100644 --- a/mt/src/main/java/com/ccsens/mt/service/IExcelService.java +++ b/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 params); + String patternExpTable(ScoreDto.ShowResultW param); String countExpTable(ScoreDto.ShowResult param); + } diff --git a/mt/src/main/resources/banner.txt b/mt/src/main/resources/banner.txt new file mode 100644 index 00000000..b5cd913f --- /dev/null +++ b/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 + // \\ << >> // \\ // \\ \\ .-,_\ /\ /_,-. \\ // \\_ // \\ |||_ +(_") ("_)(__) (__)(_")("_)(_")("_) (__) \_)-' '-(_/ (__) (__) (__)(_")("_)(__)_) + diff --git a/mt/src/main/resources/mapper_dao/CompeteProjectDao.xml b/mt/src/main/resources/mapper_dao/CompeteProjectDao.xml index a742f0fe..94ae1108 100644 --- a/mt/src/main/resources/mapper_dao/CompeteProjectDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteProjectDao.xml @@ -61,6 +61,20 @@ and g.rec_status = 0 and c.rec_status = 0 + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 7c684266..c938369f 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ util tall - + game mt diff --git a/tall/src/main/resources/banner.txt b/tall/src/main/resources/banner.txt new file mode 100644 index 00000000..0bfe9c38 --- /dev/null +++ b/tall/src/main/resources/banner.txt @@ -0,0 +1,22 @@ +/** + * _ooOoo_ + * o8888888o + * 88" . "88 + * (| -_- |) + * O\ = /O + * ___/`---'\____ + * . ' \\| |// `. + * / \\||| : |||// \ + * / _||||| -:- |||||- \ + * | | \\\ - /// | | + * | \_| ''\---/'' | | + * \ .-\__ `-` ___/-. / + * ___`. .' /--.--\ `. . __ + * ."" '< `.___\_<|>_/___.' >'"". + * | | : `- \`.;`\ _ /`;.`/ - ` : | | + * \ \ `-. \_ __\ /__ _/ .-` / / + * ======`-.____`-.___\_____/___.-`____.-'====== + * `=---=' + * ............................................. + * 佛曰:bug泛滥,我已瘫痪! + */ \ No newline at end of file