9 changed files with 355 additions and 6 deletions
@ -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; |
|||
} |
|||
} |
@ -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<CompeteDto.CompeteTime> params) throws IOException { |
|||
CompeteDto.CompeteTime competeTime =params.getParam(); |
|||
List<TableVo.CompeteJoin> competeJoinList = getCompeteJoin(competeTime); |
|||
String path = getExcelFilePathForCompeteJoin(competeJoinList); |
|||
return null; |
|||
} |
|||
|
|||
private List<TableVo.CompeteJoin> getCompeteJoin(CompeteDto.CompeteTime params){ |
|||
List<TableVo.CompeteJoin> 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<CompeteProject> 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<CompeteProjectPlayer> 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<CompeteTeam> competeTeamList = competeTeamDao.selectByExample(competeTeamExample); |
|||
for (CompeteTeam competeTeam : competeTeamList){ |
|||
//获取队伍下的成员集合
|
|||
CompeteTeamMemberExample competeTeamMemberExample = new CompeteTeamMemberExample(); |
|||
competeTeamMemberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId()); |
|||
List<CompeteTeamMember> 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<TableVo.CompeteJoin> arrayList) throws IOException { |
|||
//创建excle表格对象
|
|||
List<List<PoiUtil.PoiUtilCell>> list = new ArrayList<>(); |
|||
//创建行对象
|
|||
List<PoiUtil.PoiUtilCell> 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<PoiUtil.PoiUtilCell> 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; |
|||
} |
|||
|
|||
} |
@ -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<CompeteDto.CompeteTime> params) throws IOException; |
|||
} |
Loading…
Reference in new issue