From 232676fc994b40ad2f10961affb3a26294ef7328 Mon Sep 17 00:00:00 2001 From: "Lihong@123456" <1090591095@qq.com> Date: Thu, 5 Nov 2020 19:11:12 +0800 Subject: [PATCH] 11-4 --- .../com/ccsens/mt/api/CompeteController.java | 2 + .../com/ccsens/mt/api/ExcelController.java | 19 +- .../java/com/ccsens/mt/bean/vo/TableVo.java | 41 +++ .../mt/persist/dao/CompeteEnrollDao.java | 8 + .../com/ccsens/mt/service/CompeteService.java | 10 + .../com/ccsens/mt/service/ExcelService.java | 257 ++++++++++++++++++ .../ccsens/mt/service/ICompeteService.java | 2 + .../com/ccsens/mt/service/IExcelService.java | 15 + .../resources/mapper_dao/CompeteEnrollDao.xml | 7 + 9 files changed, 355 insertions(+), 6 deletions(-) create mode 100644 mt/src/main/java/com/ccsens/mt/bean/vo/TableVo.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/ExcelService.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/IExcelService.java diff --git a/mt/src/main/java/com/ccsens/mt/api/CompeteController.java b/mt/src/main/java/com/ccsens/mt/api/CompeteController.java index b1a21ff7..ea37039b 100644 --- a/mt/src/main/java/com/ccsens/mt/api/CompeteController.java +++ b/mt/src/main/java/com/ccsens/mt/api/CompeteController.java @@ -221,4 +221,6 @@ public class CompeteController { // return JsonResponse.newInstance().ok(playerList); // } + + } 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 e6cfadbb..2a82986e 100644 --- a/mt/src/main/java/com/ccsens/mt/api/ExcelController.java +++ b/mt/src/main/java/com/ccsens/mt/api/ExcelController.java @@ -3,6 +3,8 @@ package com.ccsens.mt.api; import com.ccsens.cloudutil.annotation.MustLogin; import com.ccsens.mt.bean.dto.CompeteDto; +import com.ccsens.mt.service.ICompeteService; +import com.ccsens.mt.service.IExcelService; import com.ccsens.util.JsonResponse; import com.ccsens.util.bean.dto.QueryDto; import io.swagger.annotations.Api; @@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import java.io.IOException; /** @@ -25,12 +28,16 @@ import java.io.IOException; @RestController @RequestMapping("/down") public class ExcelController { + @Resource + private IExcelService excelService; + + @MustLogin - @ApiOperation(value = "报名表详情表(关联wps)", notes = "") - @RequestMapping(value = "/enrollWPS", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse enrollPlayInfoWps(@ApiParam @Validated @RequestBody QueryDto params) throws IOException { - log.info("查询各个项目报名人员信息:{}",params); -// String enrollPlayInfoList= competeService.enrollPlayInfoWps(params); - return JsonResponse.newInstance().ok(); + @ApiOperation(value = "大赛报名表", notes = "") + @RequestMapping(value = "/competeJoin", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse competeJoin(@ApiParam @Validated @RequestBody QueryDto params) throws IOException { + log.info("查询各种报名人员各种信息:{}",params); + String path = excelService.competeJoin(params); + return JsonResponse.newInstance().ok(path); } } diff --git a/mt/src/main/java/com/ccsens/mt/bean/vo/TableVo.java b/mt/src/main/java/com/ccsens/mt/bean/vo/TableVo.java new file mode 100644 index 00000000..b06e70ef --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/bean/vo/TableVo.java @@ -0,0 +1,41 @@ +package com.ccsens.mt.bean.vo; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author li + */ +@Data +public class TableVo { + @Data + @ApiModel("XXXX大赛报名表") + public static class CompeteJoin{ + @ApiModelProperty("参赛项目") + private String competeProject; + @ApiModelProperty("组别") + private String competeGroup; + @ApiModelProperty("姓名") + private String name; + @ApiModelProperty("性别") + private int gender; + @ApiModelProperty("年龄") + private int age; + @ApiModelProperty("身份证号") + private String idCard; + @ApiModelProperty("身份证明") + private String idCardPromise; + @ApiModelProperty("一寸证件照") + private String picture; + @ApiModelProperty("学籍证明/俱乐部证明") + private String StudentPromise; + @ApiModelProperty("体检证明") + private String bodyTest; + @ApiModelProperty("人身意外伤害保险证明") + private String bodyProtect; + @ApiModelProperty("参赛队伍") + private String joinTeam; + } +} diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteEnrollDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteEnrollDao.java index 55465a4d..9ed3e9bb 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteEnrollDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteEnrollDao.java @@ -1,5 +1,6 @@ package com.ccsens.mt.persist.dao; +import com.ccsens.mt.bean.po.CompeteProjectPlayer; import com.ccsens.mt.bean.vo.CompeteVo; import com.ccsens.mt.persist.mapper.CompetePlayerMapper; import org.apache.ibatis.annotations.Param; @@ -108,4 +109,11 @@ public interface CompeteEnrollDao extends CompetePlayerMapper { */ List getGroupIdNameFromGroup(@Param("type")long type); + /** + * 查询项目信息 + * @param projectId 团队id + * @return 单人项目选手信息 + */ + CompeteProjectPlayer getPlayerInfoSingle(@Param("project_id")long projectId); + } 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 43146161..48133b77 100644 --- a/mt/src/main/java/com/ccsens/mt/service/CompeteService.java +++ b/mt/src/main/java/com/ccsens/mt/service/CompeteService.java @@ -13,6 +13,7 @@ import com.ccsens.mt.bean.dto.CompeteDto; import com.ccsens.mt.bean.dto.LevelDto; import com.ccsens.mt.bean.po.*; import com.ccsens.mt.bean.vo.CompeteVo; +import com.ccsens.mt.bean.vo.TableVo; import com.ccsens.mt.persist.dao.CompeteEnrollDao; import com.ccsens.mt.persist.dao.CompetePlayerDao; import com.ccsens.mt.persist.dao.CompeteTeamDao; @@ -79,6 +80,8 @@ public class CompeteService implements ICompeteService { private CompeteEnrollDao competeEnrollDao; @Resource private TallFeignClient tallFeignClient; + @Resource + private CommonFileMapper commonFileMapper; /** * 查看第几届 @@ -892,6 +895,7 @@ public class CompeteService implements ICompeteService { return failPlayerInfoList; } + /** * 验证数据的正确性,存入数据库 */ @@ -1002,4 +1006,10 @@ public class CompeteService implements ICompeteService { } return true; } + + + + + + } \ No newline at end of file diff --git a/mt/src/main/java/com/ccsens/mt/service/ExcelService.java b/mt/src/main/java/com/ccsens/mt/service/ExcelService.java new file mode 100644 index 00000000..f1205e4d --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/service/ExcelService.java @@ -0,0 +1,257 @@ +package com.ccsens.mt.service; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdcardUtil; +import com.ccsens.cloudutil.feign.TallFeignClient; +import com.ccsens.mt.bean.dto.CompeteDto; +import com.ccsens.mt.bean.po.*; +import com.ccsens.mt.bean.vo.TableVo; +import com.ccsens.mt.persist.dao.CompeteEnrollDao; +import com.ccsens.mt.persist.dao.CompetePlayerDao; +import com.ccsens.mt.persist.dao.CompeteTeamDao; +import com.ccsens.mt.persist.dao.CompeteTimeDao; +import com.ccsens.mt.persist.mapper.*; +import com.ccsens.util.PoiUtil; +import com.ccsens.util.PropUtil; +import com.ccsens.util.RedisUtil; +import com.ccsens.util.bean.dto.QueryDto; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import javax.annotation.Resource; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; + +public class ExcelService implements IExcelService { + @Resource + private CompeteTimeDao competeTimeDao; + @Resource + private RedisUtil redisUtil; + @Resource + private CompeteCompanyMapper competeCompanyMapper; + @Resource + private Snowflake snowflake; + @Resource + private CompeteTeamDao competeTeamDao; + @Resource + private CompetePlayerDao competePlayerDao; + @Resource + private CompeteTeamMemberMapper competeTeamMemberMapper; + @Resource + private CompeteProjectMapper competeProjectMapper; + @Resource + private CompeteProjectPlayerMapper competeProjectPlayerMapper; + @Resource + private CompeteGroupMapper competeGroupMapper; + @Resource + private ILevelUpService levelUpService; + @Resource + private CompetePlayerFamilyMapper competePlayerFamilyMapper; + @Resource + private CompeteProjectGroupMapper competeProjectGroupMapper; + @Resource + private CompeteEnrollDao competeEnrollDao; + @Resource + private TallFeignClient tallFeignClient; + @Resource + private CommonFileMapper commonFileMapper; + + + @Override + public String competeJoin(QueryDto params) throws IOException { + CompeteDto.CompeteTime competeTime =params.getParam(); + List competeJoinList = getCompeteJoin(competeTime); + String path = getExcelFilePathForCompeteJoin(competeJoinList); + return null; + } + + private List getCompeteJoin(CompeteDto.CompeteTime params){ + List competeJoinList = new ArrayList<>(); + Long competeTimeId = params.getCompeteTimeId(); + CompeteTime competeTime = competeTimeDao.selectByPrimaryKey(competeTimeId); + int type = competeTime.getType(); + Byte level = 2; + CompeteProjectExample competeProjectExample = new CompeteProjectExample(); + competeProjectExample.createCriteria().andTypeEqualTo((byte) type).andLevelEqualTo(level); + //获取参赛项目集合 + List competeProjectList = competeProjectMapper.selectByExample(competeProjectExample); + for (CompeteProject competeProject : competeProjectList){ + String projectName = competeProject.getName(); + if (competeProject.getTeam() == 0){ + //如果不是团队项目,查询该项目下报名人数集合 + CompeteProjectPlayerExample competeProjectPlayerExample = new CompeteProjectPlayerExample(); + competeProjectPlayerExample.createCriteria().andProjectIdEqualTo(competeProject.getId()); + List competeProjectPlayerList = competeProjectPlayerMapper.selectByExample(competeProjectPlayerExample); + for (CompeteProjectPlayer competeProjectPlayer : competeProjectPlayerList){ + //查询每个报名人的详细信息下 + CompetePlayer competePlayer = competePlayerDao.selectByPrimaryKey(competeProjectPlayer.getPlayerId()); + TableVo.CompeteJoin competeJoin = new TableVo.CompeteJoin(); + //姓名 + competeJoin.setName(competePlayer.getName()); + //身份证号 + competeJoin.setIdCard(competePlayer.getIdCard()); + //根据身份证获取选手年龄并赋值 + String idCard = competeJoin.getIdCard(); + int ageByIdCard = IdcardUtil.getAgeByIdCard(idCard); + competeJoin.setAge(ageByIdCard); + //性别 + competeJoin.setGender(competePlayer.getGender()); + //查询单位,并赋值 + CompeteCompany competeCompany = competeCompanyMapper.selectByPrimaryKey(competePlayer.getCompanyId()); + competeJoin.setJoinTeam(competeCompany.getName()); + //查询组别,并赋值 + CompeteGroup competeGroup = competeGroupMapper.selectByPrimaryKey(competePlayer.getCompeteGroupId()); + competeJoin.setCompeteGroup(competePlayer.getName()); + //身份证明查询,并赋值 + CommonFile commonFile = commonFileMapper.selectByPrimaryKey(competePlayer.getIdCardFrontFile()); + competeJoin.setIdCardPromise(commonFile.getVisitLocation()); + //一寸证件照查询赋值 + CommonFile commonFile1 = commonFileMapper.selectByPrimaryKey(competePlayer.getIdPhotoFile()); + competeJoin.setPicture(commonFile1.getVisitLocation()); + //学籍证明/俱乐部证明 + CommonFile commonFile2 = commonFileMapper.selectByPrimaryKey(competePlayer.getStudentRecordFile()); + competeJoin.setStudentPromise(commonFile2.getVisitLocation()); + //体检证明 + CommonFile commonFile3 = commonFileMapper.selectByPrimaryKey(competePlayer.getHealthRecordFile()); + competeJoin.setBodyTest(commonFile3.getVisitLocation()); + //人身意外伤害保险证明 + CommonFile commonFile4 = commonFileMapper.selectByPrimaryKey(competePlayer.getInsuranceRecordFile()); + competeJoin.setBodyProtect(commonFile4.getVisitLocation()); + //参赛项目名赋值 + competeJoin.setCompeteProject(projectName); + competeJoinList.add(competeJoin); + } + + }else { //团队项目 + //获取参赛队伍集合 + CompeteTeamExample competeTeamExample = new CompeteTeamExample(); + competeTeamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()); + List competeTeamList = competeTeamDao.selectByExample(competeTeamExample); + for (CompeteTeam competeTeam : competeTeamList){ + //获取队伍下的成员集合 + CompeteTeamMemberExample competeTeamMemberExample = new CompeteTeamMemberExample(); + competeTeamMemberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId()); + List competeTeamMemberList = competeTeamMemberMapper.selectByExample(competeTeamMemberExample); + for (CompeteTeamMember competeTeamMember : competeTeamMemberList){ + //查询成员详细信息 + CompetePlayer competePlayer = competePlayerDao.selectByPrimaryKey(competeTeamMember.getPlayerId()); + TableVo.CompeteJoin competeJoin = new TableVo.CompeteJoin(); + //姓名 + competeJoin.setName(competePlayer.getName()); + //身份证号 + competeJoin.setIdCard(competePlayer.getIdCard()); + //根据身份证获取选手年龄并赋值 + String idCard = competeJoin.getIdCard(); + int ageByIdCard = IdcardUtil.getAgeByIdCard(idCard); + competeJoin.setAge(ageByIdCard); + //性别 + competeJoin.setGender(competePlayer.getGender()); + //查询单位,并赋值 + CompeteCompany competeCompany = competeCompanyMapper.selectByPrimaryKey(competePlayer.getCompanyId()); + competeJoin.setJoinTeam(competeCompany.getName()); + //查询组别,并赋值 + CompeteGroup competeGroup = competeGroupMapper.selectByPrimaryKey(competePlayer.getCompeteGroupId()); + competeJoin.setCompeteGroup(competePlayer.getName()); + //身份证明查询,并赋值 + CommonFile commonFile = commonFileMapper.selectByPrimaryKey(competePlayer.getIdCardFrontFile()); + competeJoin.setIdCardPromise(commonFile.getVisitLocation()); + //一寸证件照查询赋值 + CommonFile commonFile1 = commonFileMapper.selectByPrimaryKey(competePlayer.getIdPhotoFile()); + competeJoin.setPicture(commonFile1.getVisitLocation()); + //学籍证明/俱乐部证明 + CommonFile commonFile2 = commonFileMapper.selectByPrimaryKey(competePlayer.getStudentRecordFile()); + competeJoin.setStudentPromise(commonFile2.getVisitLocation()); + //体检证明 + CommonFile commonFile3 = commonFileMapper.selectByPrimaryKey(competePlayer.getHealthRecordFile()); + competeJoin.setBodyTest(commonFile3.getVisitLocation()); + //人身意外伤害保险证明 + CommonFile commonFile4 = commonFileMapper.selectByPrimaryKey(competePlayer.getInsuranceRecordFile()); + competeJoin.setBodyProtect(commonFile4.getVisitLocation()); + //参赛项目名赋值 + competeJoin.setCompeteProject(projectName); + competeJoinList.add(competeJoin); + } + } + } + } + return competeJoinList; + } + + private String getExcelFilePathForCompeteJoin(List arrayList) throws IOException { + //创建excle表格对象 + List> list = new ArrayList<>(); + //创建行对象 + List title = new ArrayList<>(); + //给首行单元格赋值 + title.add(new PoiUtil.PoiUtilCell("参赛项目")); + title.add(new PoiUtil.PoiUtilCell("组别")); + title.add(new PoiUtil.PoiUtilCell("参赛队伍")); + title.add(new PoiUtil.PoiUtilCell("姓名")); + title.add(new PoiUtil.PoiUtilCell("性别")); + title.add(new PoiUtil.PoiUtilCell("年龄")); + title.add(new PoiUtil.PoiUtilCell("身份证号")); + title.add(new PoiUtil.PoiUtilCell("身份证明")); + title.add(new PoiUtil.PoiUtilCell("一寸证件照")); + title.add(new PoiUtil.PoiUtilCell("学籍证明/俱乐部证明")); + title.add(new PoiUtil.PoiUtilCell("体检证明")); + title.add(new PoiUtil.PoiUtilCell("人身意外伤害保险证明")); + list.add(title); + //创建整个excel表格对象 + Workbook workbook = new XSSFWorkbook(); + int i = 1; + for (TableVo.CompeteJoin competeJoin : arrayList) { + //行对象 + List cells = new ArrayList<>(); + cells.add(new PoiUtil.PoiUtilCell(i + "", 1, 1, 300, 18)); + //单元格对象 + PoiUtil.PoiUtilCell poiUtilCel = new PoiUtil.PoiUtilCell(competeJoin.getCompeteProject()); + cells.add(poiUtilCel); + PoiUtil.PoiUtilCell poiUtilCell = new PoiUtil.PoiUtilCell(competeJoin.getCompeteGroup()); + cells.add(poiUtilCell); + PoiUtil.PoiUtilCell poiUtilCel2 = new PoiUtil.PoiUtilCell(competeJoin.getJoinTeam()); + cells.add(poiUtilCel2); + PoiUtil.PoiUtilCell poiUtilCel3 = new PoiUtil.PoiUtilCell(competeJoin.getName()); + cells.add(poiUtilCel3); + PoiUtil.PoiUtilCell poiUtilCel4 = new PoiUtil.PoiUtilCell(String.valueOf(competeJoin.getGender())); + cells.add(poiUtilCel4); + PoiUtil.PoiUtilCell poiUtilCel5 = new PoiUtil.PoiUtilCell(String.valueOf(competeJoin.getAge())); + cells.add(poiUtilCel4); + PoiUtil.PoiUtilCell poiUtilCel6 = new PoiUtil.PoiUtilCell(competeJoin.getIdCard()); + cells.add(poiUtilCel4); + PoiUtil.PoiUtilCell poiUtilCel7 = new PoiUtil.PoiUtilCell(competeJoin.getIdCardPromise()); + cells.add(poiUtilCel4); + PoiUtil.PoiUtilCell poiUtilCel8 = new PoiUtil.PoiUtilCell(competeJoin.getPicture()); + cells.add(poiUtilCel4); + PoiUtil.PoiUtilCell poiUtilCel9 = new PoiUtil.PoiUtilCell(competeJoin.getStudentPromise()); + cells.add(poiUtilCel4); + PoiUtil.PoiUtilCell poiUtilCel10 = new PoiUtil.PoiUtilCell(competeJoin.getBodyTest()); + cells.add(poiUtilCel4); + PoiUtil.PoiUtilCell poiUtilCel11= new PoiUtil.PoiUtilCell(competeJoin.getBodyProtect()); + cells.add(poiUtilCel4); + list.add(cells); + i++; + } + //生成excel表格对象,并将数据放入 + Workbook wbs = PoiUtil.exportWB("报名表", list, workbook); + //8:关联金山在线文档 + String name = "XXXX大赛报名表" + ".xlsx"; + String filepath = "mt/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".xlsx"; + String path = PropUtil.path + filepath; + File tmpFile = new File(path); + if (!tmpFile.getParentFile().exists()) { + tmpFile.getParentFile().mkdirs(); + } + //PropUtil.path获取配置文件中的path属性,拼接生成写入信息的文件名, + File file = new File(path); + OutputStream stream = new FileOutputStream(file); + wbs.write(stream); + stream.close(); + return path; + } + +} 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 206c18a0..84cf068a 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java @@ -147,6 +147,8 @@ public interface ICompeteService { * @return 返回失败的信息 */ List signupImport(String path) throws FileNotFoundException, Exception; + + } diff --git a/mt/src/main/java/com/ccsens/mt/service/IExcelService.java b/mt/src/main/java/com/ccsens/mt/service/IExcelService.java new file mode 100644 index 00000000..b2d0679c --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/service/IExcelService.java @@ -0,0 +1,15 @@ +package com.ccsens.mt.service; + +import com.ccsens.mt.bean.dto.CompeteDto; +import com.ccsens.util.bean.dto.QueryDto; + +import java.io.IOException; + +public interface IExcelService { + /** + * XXXX大赛报名表 + * @param params 大赛id + * @return 返回失败的信息 + */ + String competeJoin(QueryDto params) throws IOException; +} diff --git a/mt/src/main/resources/mapper_dao/CompeteEnrollDao.xml b/mt/src/main/resources/mapper_dao/CompeteEnrollDao.xml index c3846e72..fe66d7eb 100644 --- a/mt/src/main/resources/mapper_dao/CompeteEnrollDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteEnrollDao.xml @@ -170,4 +170,11 @@ WHERE type = #{type} ORDER BY id +