huliguo
15 小时以前 71746341215e75f2d96a329a4c0f44e61c13aa49
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;
@@ -284,8 +286,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 +295,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 +378,7 @@
        WriteSheet writeSheet = EasyExcel.writerSheet("平台分布占比").build();
        excelWriter.write(result, writeSheet);
        excelWriter.write(result2, writeSheet);
        excelWriter.finish();
        // 4. 构建响应
@@ -343,7 +407,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")