fix[project]: 修改推送报告的压缩包名称

This commit is contained in:
2026-03-20 18:15:24 +08:00
parent 90b552ceb9
commit 2ca637c6f8
3 changed files with 33 additions and 18 deletions

View File

@@ -2,33 +2,34 @@ package com.sdm.project.common.generator;
import java.security.SecureRandom;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class UniqueFileNameGenerator {
// 定义随机字符串的字符集(字母+数字避免混淆的字符如0/O、1/l已剔除
private static final String CHARACTERS = "abcdefghjkmnpqrstuvwxyz";
private static final int RANDOM_LENGTH = 12; // 随机字符串长度
private static final SecureRandom SECURE_RANDOM = new SecureRandom(); // 安全随机数生成器
// 日期格式化器年月日如20251221
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
// private static final String CHARACTERS = "abcdefghjkmnpqrstuvwxyz";
// private static final int RANDOM_LENGTH = 12; // 随机字符串长度
// private static final SecureRandom SECURE_RANDOM = new SecureRandom(); // 安全随机数生成器
// 日期格式化器(年月日时分秒毫秒如20251221123456789
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
/**
* 生成唯一文件名:年月日 + 12位随机字符串
* @return 格式化后的文件名如20251221akdesgdiujfs
* 生成唯一文件名:年月日时分秒毫秒
* @return 格式化后的文件名如20251221123456789
*/
public static String generateUniqueFileName() {
// 1. 获取当前年月日并格式化
String currentDate = LocalDate.now().format(DATE_FORMATTER);
String currentDate = LocalDateTime.now().format(DATE_FORMATTER);
// 2. 生成12位随机字符串
StringBuilder randomStr = new StringBuilder(RANDOM_LENGTH);
for (int i = 0; i < RANDOM_LENGTH; i++) {
// 随机获取字符集索引
int randomIndex = SECURE_RANDOM.nextInt(CHARACTERS.length());
randomStr.append(CHARACTERS.charAt(randomIndex));
}
// StringBuilder randomStr = new StringBuilder(RANDOM_LENGTH);
// for (int i = 0; i < RANDOM_LENGTH; i++) {
// // 随机获取字符集索引
// int randomIndex = SECURE_RANDOM.nextInt(CHARACTERS.length());
// randomStr.append(CHARACTERS.charAt(randomIndex));
// }
// 3. 拼接日期和随机字符串
return currentDate + "_" + randomStr;
return "_" + currentDate;
}
}

View File

@@ -1600,10 +1600,20 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
throw new RuntimeException("推送报告失败,原因为:创建临时文件夹失败");
}
}
// 推送类型 1:有限元 2:机器人 3:公差(产品工艺专项验收)
Integer pushType = req.getPushType();
// 准备要打包的文件列表
List<File> filesToZip = FilesUtil.getAllFiles(tempPath);
// 指定生成的ZIP文件路径
String zipFilePath = tempPath + File.separator + REPORT_ZIP_NAME + UniqueFileNameGenerator.generateUniqueFileName() + ZIP_SUFFIX;
String reportZipName;
if (pushType == 1) {
reportZipName = LyricParamConstants.FINITE_ELEMENT_PACKAGE_NAME_PREFIX;
} else if (pushType == 2) {
reportZipName = LyricParamConstants.ROBOT_PACKAGE_NAME_PREFIX;
} else {
reportZipName = LyricParamConstants.TOLERANCE_PACKAGE_NAME_PREFIX;
}
String zipFilePath = tempPath + File.separator + reportZipName + UniqueFileNameGenerator.generateUniqueFileName() + ZIP_SUFFIX;
log.info("zipFilePath为{}", zipFilePath);
// 执行打包
try {
@@ -1626,8 +1636,6 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
jobNumber = cidUserRespSdmResponse.getData().getUsername();
}
HkUploadFileReq uploadFileReq = new HkUploadFileReq();
// 推送类型 1:有限元 2:机器人 3:公差(产品工艺专项验收)
Integer pushType = req.getPushType();
if (pushType == 1) {
uploadFileReq.setComponentInstId(LyricParamConstants.FINITE_ELEMENT_COMPONENT_INST_ID);
uploadFileReq.setColumnName(LyricParamConstants.FINITE_ELEMENT_COLUMN_NAME);