1.修改案例推荐表信息下载乱码问题;2.修改案例推荐表撤回操作报错问题;3.修改案例推荐记录表中推送时间类型为date类型

This commit is contained in:
wangwenchao
2023-06-26 16:03:50 +08:00
parent c146a89ae0
commit 13b7007633
3 changed files with 74 additions and 40 deletions

View File

@@ -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<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId);
// 用个List<Map>装表格的所有内容
// 拼接上列明。我这里用的最土的方法,很不优雅别学我
List<Map<String, Object>> rows = recordList.stream().map(it -> {
Map<String, Object> 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<Map>装表格的所有内容
// 拼接上列明。我这里用的最土的方法,很不优雅别学我
LinkedHashMap<String,String> 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<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId);
List<CasesRecommendPushRecordExportVo> 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());
}
}

View File

@@ -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;
}

View File

@@ -64,7 +64,7 @@ public class CasesRecommendPushRecord extends BaseEntity {
* 推送时间
*/
@Column(name = "push_time")
private Integer pushTime;
private Date pushTime;
/**