From 61aac0c3f7a7f1cf9fd3e8fde4c13934490b3224 Mon Sep 17 00:00:00 2001 From: wang0018 <1007152140@qq.com> Date: Wed, 11 Nov 2020 20:12:31 +0800 Subject: [PATCH] =?UTF-8?q?11-11=2020=EF=BC=9A12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/mt/api/ExcelController.java | 9 +- .../com/ccsens/mt/bean/vo/CompeteExcelVo.java | 62 ++++++ .../mt/persist/dao/CompeteCompanyDao.java | 3 + .../mt/persist/dao/CompetePlayerDao.java | 5 + .../ccsens/mt/persist/dao/CompeteTeamDao.java | 3 + .../com/ccsens/mt/service/ExcelService.java | 188 +++++++++++++++++- .../com/ccsens/mt/service/IExcelService.java | 2 + mt/src/main/resources/application.yml | 4 +- .../mapper_dao/CompeteCompanyDao.xml | 28 ++- .../resources/mapper_dao/CompetePlayerDao.xml | 38 +++- .../resources/mapper_dao/CompeteTeamDao.xml | 31 ++- .../test/java/com/ccsens/util/OtherTest.java | 8 + 12 files changed, 372 insertions(+), 9 deletions(-) create mode 100644 mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java 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 ec2ee354..ae9f61d4 100644 --- a/mt/src/main/java/com/ccsens/mt/api/ExcelController.java +++ b/mt/src/main/java/com/ccsens/mt/api/ExcelController.java @@ -78,7 +78,14 @@ public class ExcelController { return JsonResponse.newInstance().ok(path); } - + @MustLogin + @ApiOperation(value = "比赛出场顺序", notes = "") + @RequestMapping(value = "/competitionOrder", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse competitionOrder(@ApiParam @Validated @RequestBody QueryDto params) throws IOException { + log.info("导出比赛出场顺序:{}",params); + String path = excelService.iCompetitionOrderService(params); + return JsonResponse.newInstance().ok(path); + } } 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 new file mode 100644 index 00000000..84e8bb67 --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java @@ -0,0 +1,62 @@ +package com.ccsens.mt.bean.vo; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import java.util.List; + +@Data +public class CompeteExcelVo { + @Data + @ApiModel("顺序表") + public static class TeamOrderPlayer { + @ApiModelProperty("组别id") + private String groupId; + @ApiModelProperty("组别名") + private String groupName; + @ApiModelProperty("单位信息") + private List companyNameList; + } + + + @Data + @ApiModel("顺序表") + public static class TeamOrderPlayerList { + @ApiModelProperty("团队id") + private Long teamId; + @ApiModelProperty("单位名称") + private String companyName; + @ApiModelProperty("团队选手名字") + private String playerNames; + } + + @Data + @ApiModel("所有项目") + public static class AllProject{ + @ApiModelProperty("项目id") + private Long id; + @ApiModelProperty("项目名字") + private String projectName; + @ApiModelProperty("开始时间Long") + private Long startTime; + @ApiModelProperty("开始时间Str") + private String startTimeStr; + @ApiModelProperty("结束时间Long") + private Long endTime; + @ApiModelProperty("结束时间Str") + private String endTimeStr; + @ApiModelProperty("组别大小") + private int size; + @ApiModelProperty("是否为团队项目,0不是 1是") + private Byte team; + @ApiModelProperty("项目场地数量") + private int siteNum; + @ApiModelProperty("项目信息") + private List projectList; + @ApiModelProperty("月/日 上/下午") + private String year; + } +} diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java index 6266f255..0c86cb20 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java @@ -3,6 +3,7 @@ package com.ccsens.mt.persist.dao; import com.ccsens.mt.bean.dto.ProvinceCompeteDto; import com.ccsens.mt.bean.po.CompeteCoach; import com.ccsens.mt.bean.po.CompeteCompany; +import com.ccsens.mt.bean.vo.CompeteExcelVo; import com.ccsens.mt.bean.vo.CompeteVo; import com.ccsens.mt.bean.vo.ProvinceCompeteVo; import com.ccsens.mt.persist.mapper.CompeteCompanyMapper; @@ -140,4 +141,6 @@ public interface CompeteCompanyDao extends CompeteCompanyMapper { */ int getTeamNumByPlayerIdAndGroup(@Param("competeTimeId")Long competeTimeId, @Param("playerId")Long playerId, @Param("projectId")Long projectId, @Param("companyId")Long companyId, @Param("gender")int gender, @Param("groupRemark")int groupRemark); + + List selectProjectByType(Long id); } diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java index 024d2545..a9284b3a 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java @@ -1,6 +1,8 @@ package com.ccsens.mt.persist.dao; +import com.ccsens.mt.bean.po.CompeteGroup; import com.ccsens.mt.bean.po.CompetePlayer; +import com.ccsens.mt.bean.vo.CompeteExcelVo; import com.ccsens.mt.bean.vo.CompeteVo; import com.ccsens.mt.bean.vo.ProvinceCompeteVo; import com.ccsens.mt.bean.vo.TableVo; @@ -73,4 +75,7 @@ public interface CompetePlayerDao extends CompetePlayerMapper { List getTeamJoinNumByType(@Param("timeId")Long timeId); List getTeamJoinNumByProjectId(@Param("projectId")Long projectId); + + CompeteGroup selectBySexAndRemark(int gender, int groupRemark); + List selectSinglePlayerByProjectId(Long id); } diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTeamDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTeamDao.java index 4351f731..dbc96eae 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTeamDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteTeamDao.java @@ -1,5 +1,6 @@ package com.ccsens.mt.persist.dao; +import com.ccsens.mt.bean.vo.CompeteExcelVo; import com.ccsens.mt.bean.vo.CompeteVo; import com.ccsens.mt.persist.mapper.CompeteTeamMapper; import org.apache.ibatis.annotations.Param; @@ -80,4 +81,6 @@ public interface CompeteTeamDao extends CompeteTeamMapper { * @return */ List getPlayerByProjectId(@Param("competeProjectId")Long competeProjectId, @Param("competeTimeId")Long competeTimeId); + + List selectTeamMemberByProjectId(Long id); } 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 0e8aef44..d06dd136 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ExcelService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ExcelService.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.ObjectUtil; import com.ccsens.mt.bean.dto.CompeteDto; import com.ccsens.mt.bean.po.*; +import com.ccsens.mt.bean.vo.CompeteExcelVo; import com.ccsens.mt.bean.vo.TableVo; import com.ccsens.mt.persist.dao.*; import com.ccsens.mt.persist.mapper.*; @@ -16,18 +17,21 @@ import com.ccsens.util.WebConstant; import com.ccsens.util.bean.dto.QueryDto; import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.map.HashedMap; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.unit.DataUnit; + 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; +import java.text.SimpleDateFormat; +import java.util.*; @Slf4j @Service @@ -52,6 +56,8 @@ public class ExcelService implements IExcelService { @Resource private CompeteGroupMapper competeGroupMapper; @Resource + private CompeteProjectConfigMapper competeProjectConfigMapper; + @Resource private CommonFileMapper commonFileMapper; @Resource private IProvinceService provinceService; @@ -632,6 +638,184 @@ public class ExcelService implements IExcelService { return path; } + /** + * 导出出场顺序表 + * @param params + * @return + */ + @Override + public String iCompetitionOrderService(QueryDto params) { + List competeProjectList= competeCompanyDao.selectProjectByType(params.getParam().getCompeteTimeId()); + for (int i=0;i singleOrderPlayerList=competePlayerDao.selectSinglePlayerByProjectId(competeProject.getId()); + size = singleOrderPlayerList.stream().mapToInt(singleOrderPlayer -> singleOrderPlayer.getCompanyNameList().size()).sum(); + competeProject.setProjectList(singleOrderPlayerList); + }else { + List teamOrderPlayerList= competeTeamDao.selectTeamMemberByProjectId(competeProject.getId()); + size = teamOrderPlayerList.stream().mapToInt(teamOrderPlayer -> teamOrderPlayer.getCompanyNameList().size()).sum(); + competeProject.setProjectList(teamOrderPlayerList); + } + competeProject.setSize(size); + } + String dasia=competeTimeDao.selectByPrimaryKey(params.getParam().getCompeteTimeId()).getName(); + //创建excle表格对象 + List> biao = new ArrayList<>(); + List one = new ArrayList<>(); + PoiUtil.PoiUtilCell yuandongyuan=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 6, 1); + yuandongyuan.setValue(dasia+"出场顺序表"); + one.add(yuandongyuan); + biao.add(one); + + + for (int j=0 ;j three = new ArrayList<>(); + PoiUtil.PoiUtilCell threeDate=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 6, 1); + if(j==0){ + threeDate.setValue(competeProjectList.get(j).getYear()); + three.add(threeDate); + biao.add(three); + List two = new ArrayList<>(); + PoiUtil.PoiUtilCell two1=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two1.setValue("时间"); + PoiUtil.PoiUtilCell two2=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two2.setValue("项目"); + PoiUtil.PoiUtilCell two3=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two3.setValue("组别"); + PoiUtil.PoiUtilCell two4=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two4.setValue("场次/场地"); + PoiUtil.PoiUtilCell two5=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two5.setValue("参赛单位"); + PoiUtil.PoiUtilCell two6=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two6.setValue("参赛人员"); + two.add(two1); + two.add(two2); + two.add(two3); + two.add(two4); + two.add(two5); + two.add(two6); + biao.add(two); + }else{ + if (!competeProjectList.get(j).getYear().equals(competeProjectList.get(j-1).getYear())){ + threeDate.setValue(competeProjectList.get(j).getYear()); + three.add(threeDate); + biao.add(three); + List two = new ArrayList<>(); + PoiUtil.PoiUtilCell two1=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two1.setValue("时间"); + PoiUtil.PoiUtilCell two2=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two2.setValue("项目"); + PoiUtil.PoiUtilCell two3=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two3.setValue("组别"); + PoiUtil.PoiUtilCell two4=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two4.setValue("场次/场地"); + PoiUtil.PoiUtilCell two5=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two5.setValue("参赛单位"); + PoiUtil.PoiUtilCell two6=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + two6.setValue("参赛人员"); + two.add(two1); + two.add(two2); + two.add(two3); + two.add(two4); + two.add(two5); + two.add(two6); + biao.add(two); + } + } + //m行循环 是16次 k 是组次数得循环 4 次 n是组里面得循环 + for(int k=0,m=0,n=0;m four = new ArrayList<>(); + if(m==0){ + PoiUtil.PoiUtilCell fourOne=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, competeProjectList.get(j).getSize()); + fourOne.setValue(competeProjectList.get(j).getStartTimeStr()+"-"+competeProjectList.get(j).getEndTimeStr()); + four.add(fourOne); + PoiUtil.PoiUtilCell fourTwo=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, competeProjectList.get(j).getSize()); + fourTwo.setValue(competeProjectList.get(j).getProjectName()); + four.add(fourTwo); + }else { + four.add(new PoiUtil.PoiUtilCell()); + four.add(new PoiUtil.PoiUtilCell()); + } + + PoiUtil.PoiUtilCell fourThree=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, competeProjectList.get(j).getProjectList().get(k).getCompanyNameList().size()); + if(n>0){ + fourThree=new PoiUtil.PoiUtilCell(); + }else { + fourThree.setValue(competeProjectList.get(j).getProjectList().get(k++).getGroupName()); + n++; + } + if(n==competeProjectList.get(j).getProjectList().get(k-1).getCompanyNameList().size()){ + n=0; + //k++ + } + four.add(fourThree); + + PoiUtil.PoiUtilCell fourFour=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + int x=competeProjectList.get(j).getTeam(); + if(x<=0){ + x=2; + } + if((m+1)%x==0){ + fourFour.setValue(""+((m+1)/x)+"--"+x); + }else { + fourFour.setValue(""+((m+1)/x+1)+"--"+((m+1)%x)); + } + four.add(fourFour); + PoiUtil.PoiUtilCell fourFive=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + if(n==0){ + log.info("j:{}, k:{}, n:{}", j,k,n); + fourFive.setValue(competeProjectList.get(j).getProjectList().get(k-1).getCompanyNameList().get(n).getCompanyName()); + }else { + fourFive.setValue(competeProjectList.get(j).getProjectList().get(k-1).getCompanyNameList().get(n-1).getCompanyName()); + } + four.add(fourFive); + PoiUtil.PoiUtilCell fourSix=new PoiUtil.PoiUtilCell(WebConstant.CELL_NULL, 1, 1); + if(n==0){ + fourSix.setValue(competeProjectList.get(j).getProjectList().get(k-1).getCompanyNameList().get(n).getPlayerNames()); + }else { + fourSix.setValue(competeProjectList.get(j).getProjectList().get(k-1).getCompanyNameList().get(n-1).getPlayerNames()); + } + four.add(fourSix); + biao.add(four); + } + } + + Workbook workbook = new XSSFWorkbook(); + PoiUtil.exportWB("出场顺序",biao,workbook); + String filepath = "mt/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".xlsx"; + String path = PropUtil.path + filepath; + String path1="C:/d/"+filepath;//本地的路径 + File tmpFile = new File(path); + if (!tmpFile.getParentFile().exists()) { + tmpFile.getParentFile().mkdirs(); + } + File file = new File(path); + try { + OutputStream outputStream = new FileOutputStream(file); + workbook.write(outputStream); + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return PropUtil.domain + "file/download/know?path="+path; + } + + // private List competeAllCountList(CompeteDto.CompeteTime params){ // //根据大赛查类型 // Long competeTimeId = params.getCompeteTimeId(); 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 23dc6648..63ccc6b3 100644 --- a/mt/src/main/java/com/ccsens/mt/service/IExcelService.java +++ b/mt/src/main/java/com/ccsens/mt/service/IExcelService.java @@ -46,4 +46,6 @@ public interface IExcelService { * @return 返回失败的信息 */ String competeAllCount(CompeteDto.CompeteTime params) throws IOException; + + String iCompetitionOrderService(QueryDto params); } diff --git a/mt/src/main/resources/application.yml b/mt/src/main/resources/application.yml index 5889ff7f..5c2cd5c4 100644 --- a/mt/src/main/resources/application.yml +++ b/mt/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: test - include: common, util-test \ No newline at end of file + active: dev + include: common, util-dev \ No newline at end of file diff --git a/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml b/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml index 467c77f3..369fc77d 100644 --- a/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml @@ -15,7 +15,14 @@ - + + + + + + + + @@ -339,5 +346,22 @@ and t.rec_status = 0 and m.rec_status = 0 - + \ No newline at end of file diff --git a/mt/src/main/resources/mapper_dao/CompetePlayerDao.xml b/mt/src/main/resources/mapper_dao/CompetePlayerDao.xml index 24d3a093..1dcb019d 100644 --- a/mt/src/main/resources/mapper_dao/CompetePlayerDao.xml +++ b/mt/src/main/resources/mapper_dao/CompetePlayerDao.xml @@ -30,7 +30,15 @@ - + + + + + + + + + + + \ No newline at end of file diff --git a/mt/src/main/resources/mapper_dao/CompeteTeamDao.xml b/mt/src/main/resources/mapper_dao/CompeteTeamDao.xml index 43f85a30..9bbbc68b 100644 --- a/mt/src/main/resources/mapper_dao/CompeteTeamDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteTeamDao.xml @@ -14,7 +14,15 @@ - + + + + + + + + + @@ -251,4 +259,25 @@ and pp.rec_status = 0 and p.rec_status = 0 + \ No newline at end of file diff --git a/util/src/test/java/com/ccsens/util/OtherTest.java b/util/src/test/java/com/ccsens/util/OtherTest.java index 723727e2..b3472d1a 100644 --- a/util/src/test/java/com/ccsens/util/OtherTest.java +++ b/util/src/test/java/com/ccsens/util/OtherTest.java @@ -9,6 +9,8 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; @Slf4j public class OtherTest { @@ -36,5 +38,11 @@ public class OtherTest { System.out.println(file1); ImageUtil.scale(file1,file2,2); } + @Test + public void func3(){ + SimpleDateFormat sdf2 = new SimpleDateFormat("MM-dd a"); + String sd2 = sdf2.format(new Date(1605074997152L)); + System.out.println(sd2); + } }