feat: 相同网元申请添加序号

This commit is contained in:
caiyuchao
2025-09-04 10:40:15 +08:00
parent 84b8be0758
commit a746d8503e

View File

@@ -5,7 +5,6 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.extra.compress.CompressUtil;
import cn.hutool.extra.compress.archiver.Archiver;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -52,9 +51,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -196,6 +193,7 @@ public class LicenseServiceImpl implements LicenseService {
.setUserId(userId).setTemplateCode(templateCode).setTemplateParams(templateParams));
// List<LicenseNeCodeVO> neCodeList = updateReqVO.getNeCodeList();
List<String> resultList = new ArrayList<>(); // 初始化结果列表
for (LicenseDetailDO neCodeVO : licenseDetails) {
// 添加数据到License提供者表
@@ -224,6 +222,28 @@ public class LicenseServiceImpl implements LicenseService {
}
neLabels.add(label);
}
// 重复网元后面添加序号
String currentElement = neLabels.get(0);
boolean isDuplicate = false;
for (String item : resultList) {
if (item.equals(currentElement)) {
isDuplicate = true;
break;
}
}
if (isDuplicate) {
int count = 1;
String newElement = currentElement + "_" + count;
while (resultList.contains(newElement)) {
count++;
newElement = currentElement + "_" + count;
}
neLabels.set(0, newElement);
resultList.add(newElement);
} else {
resultList.add(currentElement);
}
licenseProviderDO.setNeList(StrUtil.join(",", neLabels));
licenseProviderDO.setActivationCode(neCodeVO.getActivationCode());
licenseProviderDO.setOperationType(1);
@@ -384,45 +404,7 @@ public class LicenseServiceImpl implements LicenseService {
boolean isCompleted = licenseDetails.stream().allMatch(c -> StrUtil.isNotBlank(c.getFileUrl()));
if (isCompleted && CollUtil.isNotEmpty(licenseDetails)) {
// 打包压缩上传
List<String> pathList = new ArrayList<>();
List<ByteArrayInputStream> inputStreamList = new ArrayList<>();
for (LicenseDetailDO detail : licenseDetails) {
LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(detail.getProviderId());
String fileName = getFileName(licenseDO.getSerialNo(), detail.getNeList());
if (StrUtil.isNotBlank(licenseProviderDO.getNewFilePath1())) {
// String preFileName = "45G_";
// if (licenseProviderDO.getNewFilePath1().contains("Legacy_")) {
// preFileName = "Legacy_";
// }
fileName = FileUtil.getName(licenseProviderDO.getNewFilePath1());
pathList.add(fileName);
inputStreamList.add(new ByteArrayInputStream(FileUtil.readBytes(licenseProviderDO.getNewFilePath1())));
}
if (StrUtil.isNotBlank(licenseProviderDO.getNewFilePath0())) {
// String preFileName = "45G_";
// if (licenseProviderDO.getNewFilePath0().contains("Legacy_")) {
// preFileName = "Legacy_";
// }
fileName = FileUtil.getName(licenseProviderDO.getNewFilePath0());
pathList.add(fileName);
inputStreamList.add(new ByteArrayInputStream(FileUtil.readBytes(licenseProviderDO.getNewFilePath0())));
}
if (StrUtil.isBlank(licenseProviderDO.getNewFilePath0()) && StrUtil.isBlank(licenseProviderDO.getNewFilePath1())) {
pathList.add(fileName);
inputStreamList.add(new ByteArrayInputStream(ResourceUtil.readBytes("file/MME_13750602_2024-08-02_system.ini")));
}
}
// File tempFile = new File("D:/temp/temp.zip");
File tempFile = new File("/usr/local/licGen/temp.zip");
ZipUtil.zip(tempFile, pathList.toArray(new String[0]), inputStreamList.toArray(new ByteArrayInputStream[inputStreamList.size()]));
String fileURL = fileApi.createFile(FileUtil.readBytes(tempFile), licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + ".zip");
FileUtil.del(tempFile);
licenseDO.setFileUrl(fileURL);
licenseDO.setStatus(LicenseStatusEnum.COMPLETED.getCode());
licenseMapper.updateById(licenseDO);
}