`

导出csv并压缩

    博客分类:
  • java
阅读更多
public byte[] getCSVDataByte(MarketingStatisticsQueryDTO dto, StatisticsFileMark statisticsFileMark) {
    String fileName = statisticsFileMark.getName() + FILE_END;
StopWatch stopWatch = new StopWatch("电销自定义报表导出" + fileName);
    try {
        log.info("CSV电销自定义报表导出{},[{}]", fileName, dto);
stopWatch.start("参数处理");
MarketingStatisticsQueryDTO queryDTO = queryTableData(dto);
stopWatch.stop();
log.info("CSV电销营销统计报表查询参数queryDTO:{}", queryDTO);
stopWatch.start("数据查询");
List<MarketingStatisticsRespVO> result = marketingStatisticsMapper.queryMarketingStatisticsData(queryDTO);
stopWatch.stop();
log.info("CSV电销营销统计报表导出{},共计:{}条数据", fileName, result.size());

stopWatch.start("数据导出");
        try (ByteArrayOutputStream csvByteArrayOutputStream = new ByteArrayOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(csvByteArrayOutputStream, "GBK"));
CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader(columnToHeader(dto)))) {
            for (MarketingStatisticsRespVO vo : result) {
                switch (statisticsFileMark) {
                    case SD:
                        csvPrinter.printRecord(vo.getImportDate(), vo.getProduct(), vo.getStage(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getFirstDrawCashDate(), vo.getQuota(), vo.getMarketSign(), vo.getListNum(), vo.getDrawCashNum());
                        break;
                    case SIGN:
                        csvPrinter.printRecord(vo.getImportDate(), vo.getFirstDrawCashDate(), vo.getSignDate(), vo.getMarketSign(), vo.getProduct(), vo.getStage(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getTerminalScore(), vo.getCustType(), vo.getListNum(), vo.getDrawCashNum(), vo.getSignNum());
                        break;
                    case AI:
                        csvPrinter.printRecord(vo.getImportDate(), vo.getProduct(), vo.getStage(), vo.getFirstDrawCashDate(), vo.getLoanDate(), vo.getMarketSign(), vo.getGrade(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getMarketSign(), vo.getListNum(), vo.getLoanNum(), vo.getTotalLoanAmount(), vo.getTotalDrawCashAmount());
                        break;
                    case LOAN:
                        csvPrinter.printRecord(vo.getImportDate(), vo.getFirstDrawCashDate(), vo.getLoanDate(), vo.getAgentName(), vo.getAgentNo(), vo.getOnsite(), vo.getMarketSign(), vo.getProduct(), vo.getStage(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getTerminalScore(), vo.getCustType(), vo.getDrawCashNum(), vo.getSignNum(), vo.getLoanNum(), vo.getTotalSignAmount(), vo.getTotalLoanAmount(), vo.getTotalDrawCashAmount());
                        break;
                    case ALL:
                        csvPrinter.printRecord(vo.getImportDate(), vo.getFirstDrawCashDate(), vo.getMarketSign(), vo.getProduct(), vo.getStage(), vo.getDecisionCompleteType(), vo.getGrade(), vo.getStrategyLabel(), vo.getStreamLabel(), vo.getOverallDrawCash(), vo.getQuota(), vo.getMarketingRuleId(), vo.getQuotaGrade(), vo.getTerminalScore(), vo.getCustType(), vo.getQuotaCno(), vo.getQuotaProcess(), vo.getSignDate(), vo.getLoanDate(), vo.getListNum(), vo.getDrawCashNum(), vo.getSignNum(), vo.getLoanNum(), vo.getTotalSignAmount(), vo.getTotalLoanAmount(), vo.getTotalDrawCashAmount());
                        break;
                    default:
                        break;
}
                csvPrinter.flush();
}

            try (ByteArrayOutputStream zipByteArrayStream = new ByteArrayOutputStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(zipByteArrayStream)) {
                ZipEntry zipEntry = new ZipEntry(fileName);
zipOutputStream.putNextEntry(zipEntry);
zipOutputStream.write(csvByteArrayOutputStream.toByteArray());
zipOutputStream.closeEntry();
zipOutputStream.close();
stopWatch.stop();
                return zipByteArrayStream.toByteArray();
} catch (Exception e) {
                log.error("CSV电销营销统计报表压缩异常!", e);
}
        }
    } catch (Exception e) {
        log.error("CSV电销营销统计报表导出异常!", e);
} finally {
        if (stopWatch.isRunning()) {
            stopWatch.stop();
}
        log.info("CSV电销营销统计报表导出,耗时:{}", stopWatch.prettyPrint(TimeUnit.MILLISECONDS));
}
    return new byte[0];
}
//发邮件
private void createMailMessageSendDTO(byte[] fileByte, String fileName, String email) {
    log.info("电销自定义报表自动发送邮件:{}", email);
    if (StringUtils.isNotBlank(email)) {
        try {
            MailMessageSendDTO mailMessageSendDTO = new MailMessageSendDTO();
mailMessageSendDTO.setSubject(fileName);
mailMessageSendDTO.setText("请查看附件获取电销自定义报表。");
mailMessageSendDTO.setTo(email);
mailMessageSendDTO.setSendId("1");
mailMessageSendDTO.setSendName("system");
List<FileTranDTO> fileTranDTOList = new ArrayList<>();
FileTranDTO fileTranDTO = new FileTranDTO();
fileTranDTO.setFileName("电销自定义报表" + fileName + ".zip");
fileTranDTO.setFileByte(fileByte);
fileTranDTOList.add(fileTranDTO);
FileTranListDTO fileTranListDTO = new FileTranListDTO();
fileTranListDTO.setFileList(fileTranDTOList);
mailMessageSendDTO.setAttachment(fileTranListDTO);
// 发送邮件
remoteEmailService.send(mailMessageSendDTO);
log.info("电销自定义报表邮件发送成功-{}", fileName);
} catch (Exception e) {
            log.error("电销自定义报表邮件发送失败", e);
}
    }
}
分享到:
评论

相关推荐

    java导出csv文件并压缩(含下载提示功能)

    在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...

    CSV大数据分批并压缩导出

    "CSV大数据分批并压缩导出"这个话题聚焦于如何高效、安全地处理大量数据,避免内存溢出的问题。以下是对这个主题的详细解释: CSV(Comma Separated Values)是一种广泛使用的数据格式,它以纯文本形式存储表格数据...

    高性能导出csv

    在IT领域,高效地导出CSV文件是一项重要的技能,特别是在大数据处理、数据分析以及报表生成等场景。下面我们将详细探讨如何实现高性能的CSV导出。 1. **内存管理与数据分块** 高性能CSV导出首先要考虑的是内存管理...

    导出CSV文件 压缩加密成ZIP文件

    NULL 博文链接:https://yuebancanghai.iteye.com/blog/1625484

    java 大数据导出csv小工具

    标题中的“java 大数据导出csv小工具”指的是一个基于Java编程语言开发的应用程序,其主要功能是将大量数据转换并导出为CSV(逗号分隔值)格式的文件。CSV是一种通用的文件格式,广泛用于数据交换,因为它可以被...

    csv导出大量数据

    6. CSV压缩 为了减小文件体积,可以将CSV文件压缩成Gzip或Zip格式。这可以通过编程语言中的相应库实现,如Python的`gzip`和`zipfile`模块。 7. 性能优化 - 使用合适的数据结构:如使用`pandas`的`DataFrame`处理CSV...

    阿里EasyExcel导出案例

    阿里EasyExcel是一款由阿里巴巴开发的轻量级Java库,专门用于处理Excel文件,尤其是数据的导入和导出。它的设计目标是低内存消耗、高效性能和简单易用。在这个"阿里EasyExcel导出案例"中,我们将深入探讨如何利用...

    批量导出excel、csv批量导出excel、csv

    批量导出CSV文件可能涉及到数据库查询、数据框架操作或命令行工具。例如,在Python中,我们可以使用pandas的`to_csv()`函数将DataFrame对象写入CSV文件,而在SQL环境中,我们可以执行SELECT INTO OUTFILE语句将查询...

    bootstrap table导出表格支持中文csv、pdf、txt等

    然后,我们可以通过JavaScript代码来初始化表格并配置导出选项: ```javascript $(function() { $('#table').bootstrapTable({ columns: [/* 表格列定义 */], data: [/* 表格数据 */], exportTypes: ['csv', '...

    Kettle工具将数据查询导出csv文件格式方法

    在本文中,我们将深入探讨如何使用Kettle将数据查询结果导出为CSV(逗号分隔值)文件格式。 首先,我们需要创建一个新的转换。在Kettle环境中,点击“文件”菜单,然后选择“新建”-&gt;“转换”。这将打开一个空白的...

    如何将WinCC归档的历史数据导出到EXCEL CSV文件

    ### 如何将WinCC归档的历史数据导出到EXCEL CSV文件 #### 一、概述 在工业自动化领域,WinCC (Windows Control Center) 是一款广泛使用的监控与数据采集(SCADA)软件,用于实现对各种工业过程的监控。随着时间的...

    淘宝csv文件-导出数据包.zip

    压缩包子文件的文件名称列表中提到了两个文件:"淘宝助理5202103221712.csv" 和另一个同名但可能不同的文件,这可能是由于文件的版本或日期差异。处理这种情况时,我们需要遍历所有文件,对每个CSV文件执行相同的...

    java 根据javaBean反射自定义导出 excel、xml、pdf、csv

    提供的"export"压缩包子文件可能包含了实现这些功能的部分代码,你可以解压并学习其中的实现细节,加深对这些知识点的理解和应用。 总之,JavaBean结合反射机制可以灵活地处理数据,而通过各种库支持,我们可以方便...

    Jmesa示例[分页,排序,导出CSV,EXCEL,PDF]

    "Jmesa示例[分页,排序,导出CSV,EXCEL,PDF]" 这个标题提到了几个关键功能点,它们是Jmesa库在实际应用中的常见操作: 1. **分页**:这是在处理大量数据时非常重要的功能,允许用户按指定数量的数据分批次加载和显示...

    search2csv:将您的 Google 搜索历史导出为 CSV

    将您的 Google 搜索历史导出为 CSV Google 刚刚添加了将完整搜索历史导出为 JSON 的功能。 这太酷了! 不幸的是,导出的表单是一系列不太容易使用的 JSON 文件。 search2csv将它们全部连接成一个仅包含时间戳和...

    导出大量数据到excel

    本话题主要探讨如何高效地处理百万级别的数据导出,并利用内置的压缩功能优化存储和传输。以下是对这个主题的详细阐述: 一、Excel与大数据 Excel是一款广泛使用的电子表格软件,它在处理中小规模数据时表现出色。...

    shell脚本导出表数据并压缩文件上传指定ftp目录

    在这个场景中,我们关注的是如何利用shell脚本来实现特定的功能:根据时间条件导出数据库表数据,计算文件信息,压缩文件,以及通过FTP上传到指定的远程目录。下面将详细阐述这些知识点。 首先,我们需要理解`shell...

    数据库数据导出工具:导出格式支持MS Excel,CSV, HTML, XML, DBF, Text, MS Word, MS Access

    压缩包子文件的文件名称列表中,我们可以看到几个可能与数据库管理和导出相关的工具: - `cbsidlm-tr1_11-FlySpeed_SQL_Query-BP-10745925.exe` 可能是一个SQL查询工具,如FlySpeed SQL Query,它可能提供了多种...

    CSV文件操作及Gzip压缩文件操作

    文档中包括使用流文件读取CSV文件、SqlServer的各种... 对统计好的文件进行的导出CSV和excel操作。本项目还涉及到文件的下载操作及断点续传操作,以及性能监视的部分功能。可谓多重技术混合,对初步入门的人员有所帮助

    一款可以将普通HTML表格内容导出为CSVXLSTXT或SQL格式的jQuery插件

    3. **初始化插件**:通过JavaScript代码调用tableExport插件,并指定导出的格式和配置选项。 4. **触发导出**:可以添加按钮或者其他交互元素,当用户点击时触发导出操作。 5. **处理结果**:根据所选格式,插件会...

Global site tag (gtag.js) - Google Analytics