This repository was archived by the owner on Sep 4, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7.6k
使用模板填充,有20个sheet,在某个几万条的sheet处oom,并且服务重启第一次跑正常,多导几次oom #4118
Copy link
Copy link
Open
Labels
help wantedExtra attention is neededExtra attention is needed
Description
建议先去看文档
异常代码
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try (ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(this.adjustTempByEasyExcel(organizationId,scanId,lang)).build()) {
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
//-------------------------第一个sheet页(封面)-----------------------------
Map<String, Object> coverParam = this.getPrompt(lang, "xhiker.analyseReport");
Object coverSheetName = coverParam.get("xhiker_analyseReport_cover_cover");
WriteSheet coverSheet = EasyExcel.writerSheet(0).registerWriteHandler(new CustomTemplateSheetStrategyHandler(0, String.valueOf(coverSheetName))).build();
ScanInfoQueryVO scanInfo = scanInfoRepository.selectScanInfoDetail(scanId);
coverParam.put("projectNumber", scanInfo.getProjectCode());
coverParam.put("projectName", scanInfo.getProjectName());
coverParam.put("projectVersion", scanInfo.getProjectVersion());
coverParam.put("sapVersionName", scanInfo.getTargetVersionName());
coverParam.put("reportDate", new Date());
excelWriter.fill(coverParam, coverSheet);
Map<String, Object> systemBackgroundParam = this.getPrompt(lang, "xhiker.systemBackground");
if (this.isAdministratorRole()) {
this.uewSheet(organizationId, scanId, lang, excelWriter, fillConfig, systemBackgroundParam);
this.customizedDevelopmentSheet(organizationId, scanId, lang, excelWriter, fillConfig);
} else {
if (Constants.ScanStatus.COMPLETE.equals(scanInfo.getUewStatusCode())) {
this.uewSheet(organizationId, scanId, lang, excelWriter, fillConfig, systemBackgroundParam);
}
if (Constants.ScanStatus.COMPLETE.equals(scanInfo.getCsaStatusCode())) {
this.customizedDevelopmentSheet(organizationId, scanId, lang, excelWriter, fillConfig);
}
}
excelWriter.finish();
outputStream.close();
return outputStream;
} catch (IOException e) {
log.error("Error creating temporary file", e);
throw new CommonException("Failed to create temporary file");
}
}
private void uewSheet(Long organizationId, Long scanId, String lang, ExcelWriter excelWriter, FillConfig fillConfig, Map<String, Object> systemBackgroundParam) throws IOException {
//客制程序
this.scanCpSheet(organizationId, scanId, lang, excelWriter, fillConfig);
、、、
}
public void scanCpSheet(Long tenantId, Long scanId, String lang, ExcelWriter excelWriter, FillConfig fillConfig){
//分页写入
int pageSize = 1500; // 每批处理量
int pageNum = 0;
PageRequest pageRequest = new PageRequest();
pageRequest.setSize(pageSize);
pageRequest.setPage(pageNum);
List<ScanCpDetail> batchList;
do {
batchList = scanCpDetailService.viewQuery(tenantId, pageRequest, scanCpDetail);
excelWriter.fill(new FillWrapper("data1", batchList), fillConfig, scanCpSheet);
pageNum++;
pageRequest.setPage(pageNum);
} while (!batchList.isEmpty());
}异常提示
大家尽量把问题一次性描述清楚,然后贴上全部异常,这样方便把问题一次性解决掉。
至少大家要符合一个原则就是,能让其他人复现出这个问题,如果无法复现,肯定无法解决。
问题描述
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
help wantedExtra attention is neededExtra attention is needed