From 6727c89745faa938cc053fa67ea3b9f819f5cbfe Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期三, 16 七月 2025 16:46:20 +0800 Subject: [PATCH] bug修改 --- src/main/java/com/linghu/controller/KeywordController.java | 103 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 92 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/linghu/controller/KeywordController.java b/src/main/java/com/linghu/controller/KeywordController.java index d14a57e..e4de724 100644 --- a/src/main/java/com/linghu/controller/KeywordController.java +++ b/src/main/java/com/linghu/controller/KeywordController.java @@ -36,6 +36,7 @@ import org.apache.poi.ss.usermodel.DataValidationHelper; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddressList; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -49,6 +50,7 @@ import javax.xml.bind.ValidationException; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.time.LocalDate; import java.time.LocalDateTime; import java.io.IOException; import java.time.format.DateTimeFormatter; @@ -159,6 +161,8 @@ @RequestParam(value = "typeId", required = false) Integer typeId, @RequestParam(value = "isNow") Integer isNow) { Keyword keyword = keywordService.getById(keywordId); + + if (isNow == 0) { List<PlatformProportionVO> result = keywordMapper.getResultByTypeId(keywordId, questionId, keyword.getNum() , typeId); @@ -201,6 +205,7 @@ List<String> typeNameList = result.stream() .map(PlatformProportionVO::getType_name) .filter(Objects::nonNull) + .distinct() .collect(Collectors.toList()); // 3. 导出Excel @@ -284,8 +289,8 @@ dto.getPlatformId()); } //查询所有平台名称 - List<String> platfromNames = result.stream() - .map(ResultListVO::getPlatform_name) + List<String> platfromNames = platformService.list().stream() + .map(Platform::getPlatform_name) .filter(Objects::nonNull) .collect(Collectors.toList()); // 3. 导出Excel @@ -293,6 +298,68 @@ // 3. 使用自定义的SheetWriteHandler来添加数据验证 ExcelWriter excelWriter = EasyExcel.write(out, ResultListVO.class) + /* .registerWriteHandler(new SheetWriteHandler() { + @Override + public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, + WriteSheetHolder writeSheetHolder) { + Sheet sheet = writeSheetHolder.getSheet(); + + // 添加数据验证(下拉框) + DataValidationHelper helper = sheet.getDataValidationHelper(); + CellRangeAddressList rangeList = new CellRangeAddressList( + 1, 65535, 0, 0); // D列(第4列) + + DataValidationConstraint constraint = helper.createExplicitListConstraint( + platfromNames.toArray(new String[0])); + DataValidation validation = helper.createValidation(constraint, rangeList); + sheet.addValidationData(validation); + } + })*/ + .build(); + + + WriteSheet writeSheet = EasyExcel.writerSheet("平台分布占比").build(); + excelWriter.write(result, writeSheet); + excelWriter.finish(); + + // 4. 构建响应 + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=references_export.xlsx") + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(out.toByteArray()); + } + + /** + * 根据平台查看 0-当前轮 1-代表前1轮 2-代表前2轮 + */ + @PostMapping("/exportGetResultByPlatformId2") + @ApiOperation(value = "导出:根据平台查看2") + public ResponseEntity<byte[]> exportGetResultByPlatformId2(@RequestBody ExportGetResultByPlatformIdDTO dto) { + Keyword keyword = keywordService.getById(dto.getKeywordId()); + List<ResultListVO> result=new ArrayList<>(); + if (dto.getIsNow()==0){ + result = keywordMapper.getResultByPlatformId(dto.getKeywordId(), dto.getQuestionId(), keyword.getNum(), + dto.getPlatformId()); + }else { + result = keywordMapper.getResultByPlatformId(dto.getKeywordId(), dto.getQuestionId(), 1, + dto.getPlatformId()); + } + List<ResultList2VO> result2=new ArrayList<>(); + for (ResultListVO vo : result) { + ResultList2VO vo2 = new ResultList2VO(); + BeanUtils.copyProperties(vo, vo2); // 复制同名同类型的字段 + result2.add(vo2); + } + //查询所有平台名称 + List<String> platfromNames = platformService.list().stream() + .map(Platform::getPlatform_name) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + // 3. 导出Excel + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + // 3. 使用自定义的SheetWriteHandler来添加数据验证 + ExcelWriter excelWriter = EasyExcel.write(out, ResultList2VO.class) .registerWriteHandler(new SheetWriteHandler() { @Override public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, @@ -314,7 +381,7 @@ WriteSheet writeSheet = EasyExcel.writerSheet("平台分布占比").build(); - excelWriter.write(result, writeSheet); + excelWriter.write(result2, writeSheet); excelWriter.finish(); // 4. 构建响应 @@ -343,7 +410,21 @@ @ApiOperation("下载投喂模板") public ResponseEntity<byte[]> downTemplate() throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - EasyExcel.write(out, ReferenceExcel.class).sheet("投喂模板").doWrite(new ArrayList<>()); + // 创建示例数据(第一行) + ReferenceExcel exampleData = new ReferenceExcel(); + exampleData.setPlatform_name("示例平台"); + exampleData.setTitle("示例标题"); + exampleData.setCreate_time(LocalDate.now()); // 设置当前日期作为示例 + exampleData.setUrl("https://example.com"); + + List<ReferenceExcel> excelList=new ArrayList<>(); + excelList.add(exampleData); + + ExcelWriter excelWriter = EasyExcel.write(out, ReferenceExcel.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("平台分布占比").build(); + excelWriter.write(excelList, writeSheet); + excelWriter.finish(); + return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=platform_template.xlsx") @@ -385,11 +466,11 @@ // 定义日期格式化器 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); Map<String, FeedExportExcel> timeMap = references.stream() + .filter(excel -> excel.getCreate_time() != null) .collect(Collectors.toMap( excel -> excel.getCreate_time().format(formatter), - - excel -> excel, // Value映射 - (oldValue, newValue) -> oldValue // 键冲突处理(保留旧值) + excel -> excel, + (oldValue, newValue) -> oldValue )); try { @@ -580,8 +661,8 @@ @PostMapping("/updateKeyword") @ApiOperation(value = "修改关键词") public ResponseResult<String> updateKeyword(@RequestBody Keyword keyword) { - if(!"notSubmitted".equals(keyword.getStatus())){ - return ResponseResult.error("关键词已开始采集或采集完成不允许修改!"); + if("submitted".equals(keyword.getStatus())){ + return ResponseResult.error("关键词已开始采集不允许修改!"); } keywordService.updateById(keyword); return ResponseResult.success("修改成功"); @@ -594,8 +675,8 @@ @ApiOperation(value = "删除关键词") public ResponseResult<String> deleteKeyword(@RequestParam("keywordId") Integer keywordId) { Keyword keyword = keywordService.getById(keywordId); - if(!"notSubmitted".equals(keyword.getStatus())){ - return ResponseResult.error("关键词已开始采集或采集完成不允许删除!"); + if("submitted".equals(keyword.getStatus())){ + return ResponseResult.error("关键词已开始采集或不允许删除!"); } keywordService.removeById(keywordId); return ResponseResult.success("删除成功"); -- Gitblit v1.7.1