From 13b7007633f15fba59bdafb369ba3d2e859261b9 Mon Sep 17 00:00:00 2001 From: wangwenchao Date: Mon, 26 Jun 2023 16:03:50 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B=E6=8E=A8?= =?UTF-8?q?=E8=8D=90=E8=A1=A8=E4=BF=A1=E6=81=AF=E4=B8=8B=E8=BD=BD=E4=B9=B1?= =?UTF-8?q?=E7=A0=81=E9=97=AE=E9=A2=98=EF=BC=9B2.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A1=88=E4=BE=8B=E6=8E=A8=E8=8D=90=E8=A1=A8=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98=EF=BC=9B?= =?UTF-8?q?3.=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=A1=A8=E4=B8=AD=E6=8E=A8=E9=80=81=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=B1=BB=E5=9E=8B=E4=B8=BAdate=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/boecase/api/CasesRecommendApi.java | 79 ++++++++++--------- .../dto/CasesRecommendPushRecordExportVo.java | 33 ++++++++ .../entity/CasesRecommendPushRecord.java | 2 +- 3 files changed, 74 insertions(+), 40 deletions(-) create mode 100644 servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasesRecommendPushRecordExportVo.java diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index 3783433f..c2bad212 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -2,6 +2,7 @@ package com.xboe.module.boecase.api; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; @@ -12,6 +13,7 @@ import com.xboe.core.JsonResponse; import com.xboe.core.api.ApiBaseController; import com.xboe.data.dto.ImportData; import com.xboe.enums.CasesRecommendLaunchTypeEnum; +import com.xboe.module.boecase.dto.CasesRecommendPushRecordExportVo; import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; import com.xboe.module.boecase.entity.CasesRecommendPushRecord; @@ -21,6 +23,7 @@ import com.xboe.module.boecase.service.ICasesRecommendService; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.module.boecase.vo.CasesRecommendPushVo; import com.xboe.module.boecase.vo.CasesRecommendVo; +import com.xboe.module.excel.ExportsExcelSenderUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; @@ -29,6 +32,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -179,47 +184,43 @@ public class CasesRecommendApi extends ApiBaseController { if (StringUtils.isEmpty(casesRecommendId)) { throw new RuntimeException("缺少必要参数"); } - CasesRecommend casesRecommend = iCasesRecommendService.findById(casesRecommendId); - // 拿取表格里需要的数据 - List recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId); - // 用个List装表格的所有内容 - // 拼接上列明。我这里用的最土的方法,很不优雅别学我 - List> rows = recordList.stream().map(it -> { - Map row = new LinkedHashMap<>(); - row.put("案例名称", it.getCaseTitle()); - row.put("推送用户", it.getPushUserName()); - row.put("所属组织", casesRecommend.getRecommendOrgName()); - row.put("推送时间", it.getPushTime()); - row.put("是否查看", it.getReadFlag()); - row.put("首次查看时间", it.getReadStartTime()); - row.put("总查看时间", it.getReadEndTime()); - return row; - }).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(rows)) { - // 通过工具类创建writer - try (ExcelWriter writer = ExcelUtil.getWriter(); - // 输出流 - ServletOutputStream servletOutputStream = response.getOutputStream() - ) { - // 一次性写出内容 - writer.write(rows, true); - // 微调一下每个列的宽度 - writer.setColumnWidth(0, 50); - writer.setColumnWidth(1, 16); - writer.setColumnWidth(2, 24); - writer.setColumnWidth(3, 34); - writer.setColumnWidth(4, 10); - writer.setColumnWidth(5, 20); - writer.setColumnWidth(6, 20); - // 此处的response.setContentType 和教程里的不同 - response.setContentType("application/vnd.ms-excel;charset=utf-8"); - // filename就是表格的名字,这个无所谓,反正前端还会重命名 - response.setHeader("Content-Disposition", "attachment;filename=推荐信息.xls"); - writer.flush(servletOutputStream, true); - } catch (Exception e) { - throw new RuntimeException(e.getMessage()); + try(OutputStream outputStream = response.getOutputStream()) { + // 用个List装表格的所有内容 + // 拼接上列明。我这里用的最土的方法,很不优雅别学我 + LinkedHashMap map = new LinkedHashMap<>(); + map.put("案例名称","caseTitle"); + map.put("推送用户","pushUserName"); + map.put("所属组织","recommendOrgName"); + map.put("推送时间","pushTime"); + map.put("是否查看","readFlag"); + map.put("首次查看时间","readStartTime"); + map.put("总查看时间","totalReadTime"); + + CasesRecommend casesRecommend = iCasesRecommendService.findById(casesRecommendId); + + // 拿取表格里需要的数据 + List recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId); + List exportVos = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(recordList)) { + exportVos = recordList.stream().map(record -> { + CasesRecommendPushRecordExportVo vo = new CasesRecommendPushRecordExportVo(); + vo.setCaseTitle(record.getCaseTitle()); + vo.setPushUserName(record.getPushUserName()); + vo.setRecommendOrgName(casesRecommend.getRecommendOrgName()); + vo.setPushTime(DateUtil.formatDateTime(record.getPushTime())); + vo.setReadFlag(record.getReadFlag() == 1 ? "是" : "否"); + vo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime())); + vo.setTotalReadTime(DateUtil.formatBetween(record.getReadStartTime(), record.getReadEndTime())); + return vo; + }).collect(Collectors.toList()); } + + response.setContentType("application/octet-stream"); + response.setHeader("Content-disposition", "attachment;filename=casesRecommend.xls"); + ExportsExcelSenderUtil.export(map, exportVos, outputStream,"yyyy-MM-dd HH:mm:ss"); + }catch (Exception e){ + log.error("导出失败",e.getMessage()); } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasesRecommendPushRecordExportVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasesRecommendPushRecordExportVo.java new file mode 100644 index 00000000..6570c9ee --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasesRecommendPushRecordExportVo.java @@ -0,0 +1,33 @@ +package com.xboe.module.boecase.dto; + +import lombok.Data; + +import javax.persistence.Column; +import java.util.Date; + +@Data +public class CasesRecommendPushRecordExportVo { + + /** + * 案例标题 + */ + private String caseTitle; + /** + * 推送用户名称 + */ + private String pushUserName; + /**推荐组织名称*/ + private String recommendOrgName; + + private String pushTime; + + private String readFlag; + + /** + * 首次查看时间 + */ + private String readStartTime; + + private String totalReadTime; + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java index 49b83179..3c4cb6ab 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java @@ -64,7 +64,7 @@ public class CasesRecommendPushRecord extends BaseEntity { * 推送时间 */ @Column(name = "push_time") - private Integer pushTime; + private Date pushTime; /**