fix:报告名称传入脚本

This commit is contained in:
2026-02-12 13:54:33 +08:00
parent f039e6e484
commit 4fd88faa52

View File

@@ -1495,12 +1495,17 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
throw new RuntimeException(e);
}
String reportName = "report_" +
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) +
".docx";
// 构建python命令
List<String> command = new ArrayList<>();
command.add("python");
command.add("/opt/script/newExportWord.py");
command.add(TEMP_REPORT_PATH + randomId);
command.add("/opt/script/template/仿真报告标准模板_v1.0.docx");
command.add(reportName);
String commands = String.join(" ", command);
// 调用脚本
@@ -1532,9 +1537,6 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
if (response != null) {
try {
// 获取临时路径中脚本生成的报告
String reportName = "report_" +
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) +
".docx";
FileInputStream fileInputStream = new FileInputStream(TEMP_REPORT_PATH + randomId + File.separator + reportName);
fileData = fileInputStream.readAllBytes();
@@ -1696,6 +1698,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
// 下载到本地临时目录
dataFeignClient.downloadFileToLocal(reportTemplateFileId, TEMP_REPORT_PATH + randomId);
String reportName = "report_" +
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) +
".docx";
// 构建python命令
List<String> command = new ArrayList<>();
command.add("python");
@@ -1703,6 +1709,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
// command.add(TEMP_REPORT_PATH + File.separator +"modifyReport.py");
command.add(TEMP_REPORT_PATH + randomId);
command.add(TEMP_REPORT_PATH + randomId + File.separator + originalName);
command.add(reportName);
String commands = String.join(" ", command);
// 前端参数写入临时目录
@@ -1743,14 +1750,14 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
}
// 读取脚本生成的报告并归档
archiveReportAndImage(req.getTaskId(), req.getRunId(), randomId, FileBizTypeEnum.REPORT_FILE, null, null);
archiveReportAndImage(reportName, req.getTaskId(), req.getRunId(), randomId, FileBizTypeEnum.REPORT_FILE, null, null);
// 读取脚本生成的图片并按顺序归档
List<String> imageNames = extractPicNames(reportContent);
if (CollectionUtils.isNotEmpty(imageNames)) {
int sortOrder = 1;
for (String imageName : imageNames) {
archiveReportAndImage(req.getTaskId(), req.getRunId(), randomId, FileBizTypeEnum.CLOUD_FILE, imageName, String.valueOf(sortOrder++));
archiveReportAndImage(null, req.getTaskId(), req.getRunId(), randomId, FileBizTypeEnum.CLOUD_FILE, imageName, String.valueOf(sortOrder++));
}
}
return SdmResponse.success();
@@ -1761,7 +1768,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
return SdmResponse.failed("生成自动化报告失败");
}
private void archiveReportAndImage(String taskId, String runId, String randomId, FileBizTypeEnum fileBizTypeEnum, String imageName, String sortOrder) {
private void archiveReportAndImage(String reportName, String taskId, String runId, String randomId, FileBizTypeEnum fileBizTypeEnum, String imageName, String sortOrder) {
byte[] fileData = null;
try {
String fileName = "";
@@ -1769,9 +1776,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
if (fileBizTypeEnum == FileBizTypeEnum.CLOUD_FILE) {
fileName = imageName + ".png";
} else {
fileName = "report_" +
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) +
".docx";
fileName = reportName;
}
FileInputStream fileInputStream = new FileInputStream(TEMP_REPORT_PATH + randomId + File.separator + fileName);
fileData = fileInputStream.readAllBytes();
@@ -2020,6 +2025,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
// 下载到本地临时目录
dataFeignClient.downloadFileToLocal(reportTemplateFileId, TEMP_REPORT_PATH + randomId);
String reportName = "report_" +
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) +
".docx";
// 构建python命令
List<String> command = new ArrayList<>();
command.add("python");
@@ -2027,6 +2036,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
// command.add(TEMP_REPORT_PATH + File.separator +"modifyReport.py");
command.add(TEMP_REPORT_PATH + randomId);
command.add(TEMP_REPORT_PATH + randomId + File.separator + originalName);
command.add(reportName);
String commands = String.join(" ", command);
// 前端参数写入临时目录
@@ -2069,21 +2079,17 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
if (response != null) {
try {
// 读取脚本生成的报告并归档
archiveReportAndImage(req.getTaskId(), req.getRunId(), randomId, FileBizTypeEnum.REPORT_FILE, null, null);
archiveReportAndImage(reportName, req.getTaskId(), req.getRunId(), randomId, FileBizTypeEnum.REPORT_FILE, null, null);
// 读取脚本生成的图片并按顺序归档
List<String> imageNames = extractPicNames(reportContent);
if (CollectionUtils.isNotEmpty(imageNames)) {
int sortOrder = 1;
for (String imageName : imageNames) {
archiveReportAndImage(req.getTaskId(), req.getRunId(), randomId, FileBizTypeEnum.CLOUD_FILE, imageName, String.valueOf(sortOrder++));
archiveReportAndImage(null, req.getTaskId(), req.getRunId(), randomId, FileBizTypeEnum.CLOUD_FILE, imageName, String.valueOf(sortOrder++));
}
}
// 获取临时路径中脚本生成的报告
String reportName = "report_" +
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) +
".docx";
FileInputStream fileInputStream = new FileInputStream(TEMP_REPORT_PATH + randomId + File.separator + reportName);
fileData = fileInputStream.readAllBytes();