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 5559ee0c..3cd305a7 100644 --- a/mt/src/main/java/com/ccsens/mt/api/CompeteController.java +++ b/mt/src/main/java/com/ccsens/mt/api/CompeteController.java @@ -162,7 +162,7 @@ public class CompeteController { @MustLogin - @ApiOperation(value = "报名表", notes = "") + @ApiOperation(value = "报名表详情表", notes = "") @RequestMapping(value = "/enroll", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse enrollPlayInfo(@ApiParam @Validated @RequestBody QueryDto params) throws IOException { log.info("查询各个项目报名人员信息:{}",params); @@ -170,7 +170,13 @@ public class CompeteController { return JsonResponse.newInstance().ok(enrollPlayInfoList); } - + @ApiOperation(value = "报名表人数表下载", notes = "") + @RequestMapping(value = "/enrollCount", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) + public JsonResponse enrollPlayCount(@ApiParam @Validated @RequestBody QueryDto params) throws IOException { + log.info("查询各个项目报名人员信息:{}",params); + String path = competeService.enrollPlayCount(params); + return JsonResponse.newInstance().ok(path); + } // @MustLogin diff --git a/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java b/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java index b6a06df8..df9d06bf 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java +++ b/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteVo.java @@ -397,4 +397,32 @@ public class CompeteVo { @ApiModelProperty("团队下的参与者id") private long player_id; } + @Data + @ApiModel("参赛各组别数信息") + public static class Count{ + @ApiModelProperty("组别名") + private String group_name; + @ApiModelProperty("某组别人数") + private int count; + @ApiModelProperty("组别id") + private Long compete_group_id; + @ApiModelProperty("团队id") + private long team_id; + } + @Data + @ApiModel("参赛项目中组别人数信息") + public static class GroupNum{ + @ApiModelProperty("项目名") + private String name; + @ApiModelProperty("参赛各组别数信息") + private List countList; + } + @Data + @ApiModel("group中的组别id") + public static class GroupIdAndName{ + @ApiModelProperty("项目id") + private int id; + @ApiModelProperty("组别名") + private String group_name; + } } 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 7a1f276f..ef9dc8d3 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 @@ -52,5 +52,60 @@ public interface CompeteEnrollDao extends CompetePlayerMapper { */ List getTeamPlayerId(@Param("teamId")long teamId); + /** + * 查询个人项目的每个组别id和组别名 + * @param projectId 项目id + * @return 组别id + */ + List getGroupCount(@Param("projectId")long projectId); + + /** + * 查询个人项目的每个组别人数 + * @param competeGroupId 组别id + * @return 团队成员id + */ + int getGroupPlayCount(@Param("competeGroupId")long competeGroupId); + + /** + * 查询个人项目的每个组别id和组别名 + * @param projectId xiangmu id + * @return 团队成员id + */ + List getGroupIdFroPlayer(@Param("projectId")long projectId); + + /** + * 查询团队项目的每个组别id和组别名 + * @param projectId xiangmu id + * @return 团队成员id + */ + List getGroupIdFroTeam(@Param("projectId")long projectId); + + /** + * 查询团队项目的每个组别id和组别名 + * @param competeGroupId 组别id + * @return 团队id + */ + List getTeamIdByCompeteGroupId(@Param("competeGroupId")long competeGroupId); + + /** + * 查询团队项目组别下的人数 + * @param teamId 组别id + * @return renshu + */ + int getCountByTeamId(@Param("teamId")long teamId); + + /** + * 查询团队项目的每个组别参赛队伍数 + * @param competeGroupId 组别id + * @return 团队成员id + */ + int getTeamCount(@Param("competeGroupId")long competeGroupId); + + /** + * 查询团队项目的每个组别参赛队伍数 + * @param type 组别id + * @return 团队成员id + */ + List getGroupIdNameFromGroup(@Param("type")long type); } 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 433051ff..8c171e08 100644 --- a/mt/src/main/java/com/ccsens/mt/service/CompeteService.java +++ b/mt/src/main/java/com/ccsens/mt/service/CompeteService.java @@ -24,6 +24,8 @@ import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.core.io.DefaultResourceLoader; +import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -613,6 +615,7 @@ public class CompeteService implements ICompeteService{ //查询报名信息 int typeId = competeType.getType(); ArrayList arrayList = new ArrayList(); + List string = null; //1:查询该类型下所有项目的id,name,team信息,排除level为1的 List projectInfoList = competeEnrollDao.getProject(typeId); //2:根据team字段判断是否为团队项目 @@ -681,7 +684,6 @@ public class CompeteService implements ICompeteService{ //8:关联金山在线文档 String name = "跳绳比赛报名表" + ".xlsx"; String filepath = "mt/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".xlsx"; - String path = PropUtil.path + filepath; File tmpFile = new File(path); if (!tmpFile.getParentFile().exists()) { @@ -715,7 +717,88 @@ public class CompeteService implements ICompeteService{ e.printStackTrace(); } return filePath.get(0); - } + } + @Override + public String enrollPlayCount(QueryDto params) throws IOException { + //查询该类型下所有项目的id,name,team信息,排除level为1的的集合 + int typeId = 2; + //放总数据集合 + List list1 = new ArrayList<>(); + //根据type 查项目 + List projectInfoList = competeEnrollDao.getProject(typeId); + //根据type 查组别id,组别名 + List groupIdAndNameList = competeEnrollDao.getGroupIdNameFromGroup(typeId); + for (CompeteVo.ProjectInfo projectInfo : projectInfoList) { + CompeteVo.GroupNum groupNum = new CompeteVo.GroupNum(); + groupNum.setName(projectInfo.getName()); + //查询所有组别 + List countList = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(groupIdAndNameList)) { + for (CompeteVo.Count groupIdAndName : groupIdAndNameList) { + CompeteVo.Count count1 = new CompeteVo.Count(); + count1.setGroup_name(groupIdAndName.getGroup_name()); +// groupIdAndNameList.forEach(groupIdAndName -> { + if (projectInfo.getTeam() == 0) { + CompeteProjectPlayerExample projectPlayerExample = new CompeteProjectPlayerExample(); + projectPlayerExample.createCriteria().andProjectIdEqualTo(projectInfo.getId()).andCompeteGroupIdEqualTo(groupIdAndName.getCompete_group_id()); + long count = competeProjectPlayerMapper.countByExample(projectPlayerExample); + count1.setCount((int) count); + } else { + CompeteTeamExample teamExample = new CompeteTeamExample(); + teamExample.createCriteria().andProjectIdEqualTo(projectInfo.getId()).andCompeteGroupIdEqualTo(groupIdAndName.getCompete_group_id()); + long count = competeTeamDao.countByExample(teamExample); + count1.setCount((int) count); + } +// }); + countList.add(count1); + } + } + groupNum.setCountList(countList); + list1.add(groupNum); + } + //7:将数据放入excel表格 + ResourceLoader resourceLoader = new DefaultResourceLoader(); + InputStream is = resourceLoader.getResource("classpath:template/competeCount.xlsx").getInputStream(); + Workbook workbook = new XSSFWorkbook(is); + //生成excel表格对象,并将数据放入 + //生成表对象 + List> list = new ArrayList<>(); + //生成行对象 + List poiUtilCellList1 = new ArrayList<>(); + List poiUtilCellList2 = new ArrayList<>(); + List poiUtilCellList3 = new ArrayList<>(); + list.add(poiUtilCellList1); + list.add(poiUtilCellList2); + list.add(poiUtilCellList3); + + list1.forEach(excelist ->{ + List title = new ArrayList<>(); + title.add(new PoiUtil.PoiUtilCell()); + title.add(new PoiUtil.PoiUtilCell()); + title.add(new PoiUtil.PoiUtilCell()); + excelist.getCountList().forEach(count -> { + title.add(new PoiUtil.PoiUtilCell(String.valueOf(count.getCount()))); + }); + list.add(title); + }); + Workbook wbs = PoiUtil.exportWB("统计表", list, workbook); + String name = "跳绳比赛报名人数统计表" + ".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(); + } + File file = new File(path); + try { + OutputStream outputStream = new FileOutputStream(file); + wbs.write(outputStream); + outputStream.close(); + }catch (IOException e) { + e.printStackTrace(); + } + return PropUtil.imgDomain + filepath; + } } 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 87c616c4..791e1949 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ICompeteService.java @@ -121,4 +121,14 @@ public interface ICompeteService { * @return 返回参赛者的详细信息 */ String enrollPlayInfo(QueryDto params) throws IOException; + + /** + * 根据项目类型查询参赛者信息 + * @param params 无 + * @return 返回参赛者数量 + */ + String enrollPlayCount(QueryDto params) throws IOException; + } + + diff --git a/mt/src/main/resources/application.yml b/mt/src/main/resources/application.yml index d082c0ea..5c2cd5c4 100644 --- a/mt/src/main/resources/application.yml +++ b/mt/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: prod - include: common, util-prod \ 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/CompeteEnrollDao.xml b/mt/src/main/resources/mapper_dao/CompeteEnrollDao.xml index 2572f53d..2260dcaa 100644 --- a/mt/src/main/resources/mapper_dao/CompeteEnrollDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteEnrollDao.xml @@ -20,6 +20,13 @@ + + + + + + + - \ No newline at end of file + + + + + + + + + diff --git a/mt/src/main/resources/template/competeCount.xlsx b/mt/src/main/resources/template/competeCount.xlsx new file mode 100644 index 00000000..a3ee6592 Binary files /dev/null and b/mt/src/main/resources/template/competeCount.xlsx differ diff --git a/tall/src/main/resources/application.yml b/tall/src/main/resources/application.yml index 4fc2efe4..b2acd365 100644 --- a/tall/src/main/resources/application.yml +++ b/tall/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: prod - include: util-prod,common + active: dev + include: util-dev,common diff --git a/util/src/main/java/com/ccsens/util/PoiUtil.java b/util/src/main/java/com/ccsens/util/PoiUtil.java index 9b6cd9a2..412360ea 100644 --- a/util/src/main/java/com/ccsens/util/PoiUtil.java +++ b/util/src/main/java/com/ccsens/util/PoiUtil.java @@ -157,9 +157,12 @@ public class PoiUtil { List cells = rows.get(i); for (int j = 0; j < cells.size(); j++) { CellStyle style = wb.createCellStyle(); - + //将内容按顺序赋给对应的列对象 PoiUtilCell cell = cells.get(j); + if (StrUtil.isEmpty(cell.value)){ + continue; + } Cell newCell = row.createCell(j); //设置行高 if (ObjectUtil.isNotNull(cell.height)) {