diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java index 4d9d665b..0c7a468f 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java @@ -159,6 +159,11 @@ public class CasesApi extends ApiBaseController { return success(views); } + @PostMapping("/caseYears") + public JsonResponse> caseYears() { + List result = casesService.getCaseYears(); + return success(result); + } /** * 案例分页搜索 是否置顶 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 89299de8..d6a79099 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 @@ -5,6 +5,7 @@ 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.BigExcelWriter; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; @@ -25,9 +26,9 @@ import com.xboe.module.boecase.vo.BrowseDurationVo; 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.apache.poi.xssf.streaming.SXSSFSheet; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -35,9 +36,7 @@ import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.OutputStream; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.stream.Collectors; @@ -137,8 +136,8 @@ public class CasesRecommendApi extends ApiBaseController { public void downloadTemplate(HttpServletResponse response) throws Exception { // 通过工具类创建writer,默认创建xls格式 ExcelWriter writer = ExcelUtil.getWriter(); - writer.setColumnWidth(0, 40); writer.writeHeadRow(ListUtil.toList("标题")); + writer.autoSizeColumnAll(); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=failData.xls"); ServletOutputStream out = response.getOutputStream(); @@ -167,6 +166,7 @@ public class CasesRecommendApi extends ApiBaseController { if (CollectionUtil.isNotEmpty(dataList)) { writer.write(dataList); } + writer.autoSizeColumnAll(); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=failData.xls"); ServletOutputStream out = response.getOutputStream(); @@ -208,8 +208,7 @@ public class CasesRecommendApi extends ApiBaseController { if (StringUtils.isEmpty(token)) { token = request.getHeader("token"); } - iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch, getCurrent(), token); - return success(true); + return success(iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch, getCurrent(), token)); } /** @@ -219,61 +218,42 @@ public class CasesRecommendApi extends ApiBaseController { * @throws Exception */ @PostMapping("/info_download") - public void infoDownload(@RequestBody CasesRecommendVo vo, HttpServletResponse response) { + public void infoDownload(@RequestBody CasesRecommendVo vo, HttpServletResponse response) throws Exception { if (StringUtils.isEmpty(vo.getCasesRecommendId())) { throw new RuntimeException("缺少必要参数"); } - 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(vo.getCasesRecommendId()); - CasesRecommend casesRecommend = iCasesRecommendService.findById(vo.getCasesRecommendId()); - - // 拿取表格里需要的数据 - List recordList = iCasesRecommendPushRecordService.findAllByRecommendId(vo.getCasesRecommendId()); - List exportVos = new ArrayList<>(); - if (CollectionUtil.isNotEmpty(recordList)) { - exportVos = recordList.stream().map(record -> { - CasesRecommendPushRecordExportVo exportVo = new CasesRecommendPushRecordExportVo(); - exportVo.setCaseTitle(record.getCaseTitle()); - exportVo.setPushUserName(record.getPushUserName()); - exportVo.setRecommendOrgName(casesRecommend.getRecommendOrgName()); - exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime())); - exportVo.setReadFlag(record.getReadFlag() == 1 ? "是" : "否"); - exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime())); - Long browseDuration = casesBrowseService.getBrowseDuration(record.getCaseId(), getCurrent().getAccountId()); - exportVo.setTotalReadTime(browseDuration.toString()); - return exportVo; - }).collect(Collectors.toList()); - } - - // 通过工具类创建writer,默认创建xls格式 - ExcelWriter writer = ExcelUtil.getWriter(); - writer.setColumnWidth(0, 40); - writer.write(exportVos, true); - response.setContentType("application/vnd.ms-excel;charset=utf-8"); - response.setHeader("Content-Disposition", "attachment;filename=casesRecommend.xls"); - ServletOutputStream out = response.getOutputStream(); - writer.flush(out, true); - writer.close(); - IoUtil.close(out); - -// 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) { - e.printStackTrace(); - log.error("导出失败", e.getMessage()); + // 拿取表格里需要的数据 + List recordList = iCasesRecommendPushRecordService.findAllByRecommendId(vo.getCasesRecommendId()); + List exportVos = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(recordList)) { + exportVos = recordList.stream().map(record -> { + CasesRecommendPushRecordExportVo exportVo = new CasesRecommendPushRecordExportVo(); + exportVo.setCaseTitle(record.getCaseTitle()); + exportVo.setPushUserName(record.getPushUserName()); + exportVo.setRecommendOrgName(casesRecommend.getRecommendOrgName()); + exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime())); + exportVo.setReadFlag(record.getReadFlag() == 1 ? "是" : "否"); + exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime())); + Long browseDuration = casesBrowseService.getBrowseDuration(record.getCaseId(), getCurrent().getAccountId()); + exportVo.setTotalReadTime(browseDuration.toString()); + return exportVo; + }).collect(Collectors.toList()); } + // 通过工具类创建writer,默认创建xls格式 + BigExcelWriter writer = ExcelUtil.getBigWriter(); + // 设置所有列为自动宽度,不考虑合并单元格 + writer.write(exportVos, true); + SXSSFSheet sheet = (SXSSFSheet) writer.getSheet(); + writer.autoSizeColumnAll(); + response.setContentType("application/vnd.ms-excel;charset=utf-8"); + response.setHeader("Content-Disposition", "attachment;filename=casesRecommend.xls"); + ServletOutputStream out = response.getOutputStream(); + writer.flush(out, true); + writer.close(); + IoUtil.close(out); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java index 84180909..deecfd10 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java @@ -72,4 +72,8 @@ public interface CasesRecordDao extends JpaRepository, JpaSpecifi " and (:isTop IS NULL or bc.isTop = :isTop)" + " GROUP BY bc.id ORDER BY bc.sysCreateTime desc") List exportCase(String keyWord, String authorName,String orgDomain,Boolean excellent,Boolean isTop); + + + @Query(nativeQuery = true, value ="SELECT DATE_FORMAT(sys_create_time,'%Y') FROM `boe_cases` where deleted = FALSE GROUP BY DATE_FORMAT(sys_create_time,'%Y')") + List caseYears(); } 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 index 80467417..71c2f55c 100644 --- 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 @@ -33,6 +33,6 @@ public class CasesRecommendPushRecordExportVo { @Alias(value = "首次查看时间") private String readStartTime; - @Alias(value = "总查看时间(秒)") + @Alias(value = "总查看时间(分)") private String totalReadTime; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java index cecc2110..30fe719b 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java @@ -16,7 +16,7 @@ public interface ICasesRecommendPushRecordService { * @param * @return */ - void launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token); + boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token); /** * 根据案例推荐ID查询案例推送列表信息 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java index d2dc937a..151af48b 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java @@ -108,5 +108,7 @@ public interface ICasesService{ List caseIndexV2(CurrentUser current); + List getCaseYears(); + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java index 9ad5a0e0..11f3ca36 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -23,7 +23,6 @@ import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.system.user.dao.UserDao; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -66,8 +65,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR private AsyncSendCasesRecommendService asyncSendCasesRecommendService; @Override - @Async - public void launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token) { + public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token) { long t1 = System.currentTimeMillis(); List caseIds = new ArrayList<>(); @@ -154,7 +152,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR } catch (Exception e) { log.error("推送失败", e); } -// return true; + return true; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 1fba2104..6ce16399 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -1037,6 +1037,12 @@ public class CasesServiceImpl implements ICasesService { return casesVos; } + @Override + public List getCaseYears() { + List years = this.casesRecordDao.caseYears(); + return years; + } + @Override public void excellent(String id, Boolean excellent) { //取消时,把时间清空