自适应

This commit is contained in:
lims1@hunktimes.com
2023-08-05 20:54:11 +08:00
parent 439626790a
commit 1c06ccec8e
8 changed files with 56 additions and 61 deletions

View File

@@ -159,6 +159,11 @@ public class CasesApi extends ApiBaseController {
return success(views); return success(views);
} }
@PostMapping("/caseYears")
public JsonResponse<List<String>> caseYears() {
List<String> result = casesService.getCaseYears();
return success(result);
}
/** /**
* 案例分页搜索 是否置顶 * 案例分页搜索 是否置顶

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.BigExcelWriter;
import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter; 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.CasesRecommendLaunchVo;
import com.xboe.module.boecase.vo.CasesRecommendPushVo; import com.xboe.module.boecase.vo.CasesRecommendPushVo;
import com.xboe.module.boecase.vo.CasesRecommendVo; import com.xboe.module.boecase.vo.CasesRecommendVo;
import com.xboe.module.excel.ExportsExcelSenderUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -35,9 +36,7 @@ import javax.annotation.Resource;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -137,8 +136,8 @@ public class CasesRecommendApi extends ApiBaseController {
public void downloadTemplate(HttpServletResponse response) throws Exception { public void downloadTemplate(HttpServletResponse response) throws Exception {
// 通过工具类创建writer默认创建xls格式 // 通过工具类创建writer默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter(); ExcelWriter writer = ExcelUtil.getWriter();
writer.setColumnWidth(0, 40);
writer.writeHeadRow(ListUtil.toList("标题")); writer.writeHeadRow(ListUtil.toList("标题"));
writer.autoSizeColumnAll();
response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=failData.xls"); response.setHeader("Content-Disposition", "attachment;filename=failData.xls");
ServletOutputStream out = response.getOutputStream(); ServletOutputStream out = response.getOutputStream();
@@ -167,6 +166,7 @@ public class CasesRecommendApi extends ApiBaseController {
if (CollectionUtil.isNotEmpty(dataList)) { if (CollectionUtil.isNotEmpty(dataList)) {
writer.write(dataList); writer.write(dataList);
} }
writer.autoSizeColumnAll();
response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=failData.xls"); response.setHeader("Content-Disposition", "attachment;filename=failData.xls");
ServletOutputStream out = response.getOutputStream(); ServletOutputStream out = response.getOutputStream();
@@ -208,8 +208,7 @@ public class CasesRecommendApi extends ApiBaseController {
if (StringUtils.isEmpty(token)) { if (StringUtils.isEmpty(token)) {
token = request.getHeader("token"); token = request.getHeader("token");
} }
iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch, getCurrent(), token); return success(iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch, getCurrent(), token));
return success(true);
} }
/** /**
@@ -219,61 +218,42 @@ public class CasesRecommendApi extends ApiBaseController {
* @throws Exception * @throws Exception
*/ */
@PostMapping("/info_download") @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())) { if (StringUtils.isEmpty(vo.getCasesRecommendId())) {
throw new RuntimeException("缺少必要参数"); throw new RuntimeException("缺少必要参数");
} }
try (OutputStream outputStream = response.getOutputStream()) { CasesRecommend casesRecommend = iCasesRecommendService.findById(vo.getCasesRecommendId());
// 用个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(vo.getCasesRecommendId()); // 拿取表格里需要的数据
List<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(vo.getCasesRecommendId());
// 拿取表格里需要的数据 List<CasesRecommendPushRecordExportVo> exportVos = new ArrayList<>();
List<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(vo.getCasesRecommendId()); if (CollectionUtil.isNotEmpty(recordList)) {
List<CasesRecommendPushRecordExportVo> exportVos = new ArrayList<>(); exportVos = recordList.stream().map(record -> {
if (CollectionUtil.isNotEmpty(recordList)) { CasesRecommendPushRecordExportVo exportVo = new CasesRecommendPushRecordExportVo();
exportVos = recordList.stream().map(record -> { exportVo.setCaseTitle(record.getCaseTitle());
CasesRecommendPushRecordExportVo exportVo = new CasesRecommendPushRecordExportVo(); exportVo.setPushUserName(record.getPushUserName());
exportVo.setCaseTitle(record.getCaseTitle()); exportVo.setRecommendOrgName(casesRecommend.getRecommendOrgName());
exportVo.setPushUserName(record.getPushUserName()); exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime()));
exportVo.setRecommendOrgName(casesRecommend.getRecommendOrgName()); exportVo.setReadFlag(record.getReadFlag() == 1 ? "" : "");
exportVo.setPushTime(DateUtil.formatDateTime(record.getPushTime())); exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime()));
exportVo.setReadFlag(record.getReadFlag() == 1 ? "" : ""); Long browseDuration = casesBrowseService.getBrowseDuration(record.getCaseId(), getCurrent().getAccountId());
exportVo.setReadStartTime(DateUtil.formatDateTime(record.getReadStartTime())); exportVo.setTotalReadTime(browseDuration.toString());
Long browseDuration = casesBrowseService.getBrowseDuration(record.getCaseId(), getCurrent().getAccountId()); return exportVo;
exportVo.setTotalReadTime(browseDuration.toString()); }).collect(Collectors.toList());
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());
} }
// 通过工具类创建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);
} }

View File

@@ -72,4 +72,8 @@ public interface CasesRecordDao extends JpaRepository<Cases, String>, JpaSpecifi
" and (:isTop IS NULL or bc.isTop = :isTop)" + " and (:isTop IS NULL or bc.isTop = :isTop)" +
" GROUP BY bc.id ORDER BY bc.sysCreateTime desc") " GROUP BY bc.id ORDER BY bc.sysCreateTime desc")
List<Cases> exportCase(String keyWord, String authorName,String orgDomain,Boolean excellent,Boolean isTop); List<Cases> 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<String> caseYears();
} }

View File

@@ -33,6 +33,6 @@ public class CasesRecommendPushRecordExportVo {
@Alias(value = "首次查看时间") @Alias(value = "首次查看时间")
private String readStartTime; private String readStartTime;
@Alias(value = "总查看时间()") @Alias(value = "总查看时间()")
private String totalReadTime; private String totalReadTime;
} }

View File

@@ -16,7 +16,7 @@ public interface ICasesRecommendPushRecordService {
* @param * @param
* @return * @return
*/ */
void launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token); boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token);
/** /**
* 根据案例推荐ID查询案例推送列表信息 * 根据案例推荐ID查询案例推送列表信息

View File

@@ -108,5 +108,7 @@ public interface ICasesService{
List<CasesVo> caseIndexV2(CurrentUser current); List<CasesVo> caseIndexV2(CurrentUser current);
List<String> getCaseYears();
} }

View File

@@ -23,7 +23,6 @@ import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
import com.xboe.system.user.dao.UserDao; import com.xboe.system.user.dao.UserDao;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -66,8 +65,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
private AsyncSendCasesRecommendService asyncSendCasesRecommendService; private AsyncSendCasesRecommendService asyncSendCasesRecommendService;
@Override @Override
@Async public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token) {
public void launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token) {
long t1 = System.currentTimeMillis(); long t1 = System.currentTimeMillis();
List<String> caseIds = new ArrayList<>(); List<String> caseIds = new ArrayList<>();
@@ -154,7 +152,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
} catch (Exception e) { } catch (Exception e) {
log.error("推送失败", e); log.error("推送失败", e);
} }
// return true; return true;
} }

View File

@@ -1037,6 +1037,12 @@ public class CasesServiceImpl implements ICasesService {
return casesVos; return casesVos;
} }
@Override
public List<String> getCaseYears() {
List<String> years = this.casesRecordDao.caseYears();
return years;
}
@Override @Override
public void excellent(String id, Boolean excellent) { public void excellent(String id, Boolean excellent) {
//取消时,把时间清空 //取消时,把时间清空