删除上传的工程文件。
This commit is contained in:
parent
c6dcd99afb
commit
95a82bb69c
|
|
@ -1565,69 +1565,79 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateImportPrj2FileSystem(MultipartFile file, String prjId) throws IOException {
|
private void updateImportPrj2FileSystem(MultipartFile file, String prjId) throws IOException {
|
||||||
String orgName = file.getOriginalFilename();
|
String tmpZipFile = null;
|
||||||
String tmpZipFile = elePropertyConfig.getEleTmpPath() + File.separator + orgName;
|
String destDir = null;
|
||||||
String mainName = FileUtil.mainName(orgName);
|
|
||||||
FileUtil.del(tmpZipFile);
|
|
||||||
FileUtil.writeFromStream(file.getInputStream(), tmpZipFile);
|
|
||||||
String destDir = elePropertyConfig.getEleTmpPath() + File.separator + IdUtil.fastSimpleUUID();
|
|
||||||
try {
|
try {
|
||||||
ZipUtil.unzip(tmpZipFile, destDir, StandardCharsets.UTF_8);
|
String orgName = file.getOriginalFilename();
|
||||||
} catch (Exception e) {
|
tmpZipFile = elePropertyConfig.getEleTmpPath() + File.separator + orgName;
|
||||||
ZipUtil.unzip(tmpZipFile, destDir, Charset.forName("GBK"));
|
String mainName = FileUtil.mainName(orgName);
|
||||||
}
|
FileUtil.del(tmpZipFile);
|
||||||
|
FileUtil.writeFromStream(file.getInputStream(), tmpZipFile);
|
||||||
File file1 = Objects.requireNonNull(new File(destDir).listFiles())[0];
|
destDir = elePropertyConfig.getEleTmpPath() + File.separator + IdUtil.fastSimpleUUID();
|
||||||
FileUtil.rename(file1, mainName, true);
|
try {
|
||||||
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
ZipUtil.unzip(tmpZipFile, destDir, StandardCharsets.UTF_8);
|
||||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
} catch (Exception e) {
|
||||||
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT)
|
ZipUtil.unzip(tmpZipFile, destDir, Charset.forName("GBK"));
|
||||||
.eq(EdFileInfo::getDataOwn, DataOwnEnum.SYS_PRJ.code));
|
|
||||||
Map<String, String> idNameMap = edFileInfos.stream().collect(Collectors.toMap(EdFileInfo::getId, EdFileInfo::getFileName));
|
|
||||||
idNameMap.put(prjId, mainName);
|
|
||||||
Map<String, EdFileInfo> filePathMap = new HashMap<>();
|
|
||||||
for (EdFileInfo edFileInfo : edFileInfos) {
|
|
||||||
StringBuilder names = new StringBuilder();
|
|
||||||
for (String id : edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT)) {
|
|
||||||
String name = idNameMap.get(id);
|
|
||||||
names.append(MYSQL_FILE_PATH_SPLIT).append(name);
|
|
||||||
}
|
}
|
||||||
filePathMap.put(names.substring(1), edFileInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<File> files = FileUtil.loopFiles(destDir);
|
File file1 = Objects.requireNonNull(new File(destDir).listFiles())[0];
|
||||||
String tmpPath = FileUtil.normalize(destDir);
|
FileUtil.rename(file1, mainName, true);
|
||||||
for (File importFile : files) {
|
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
Assert.isTrue(EleCommonUtil.isFileNameValid(importFile.getName()), "文件名称不符合规范");
|
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
||||||
String parentDir = FileUtil.normalize(importFile.getParent());
|
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT)
|
||||||
String relativeFilePath = parentDir.replace(tmpPath, "");
|
.eq(EdFileInfo::getDataOwn, DataOwnEnum.SYS_PRJ.code));
|
||||||
String fileType = FileUtil.getSuffix(importFile.getName());
|
Map<String, String> idNameMap = edFileInfos.stream().collect(Collectors.toMap(EdFileInfo::getId, EdFileInfo::getFileName));
|
||||||
relativeFilePath = relativeFilePath.startsWith("/") ? relativeFilePath.substring(1) : relativeFilePath;
|
idNameMap.put(prjId, mainName);
|
||||||
relativeFilePath = relativeFilePath.replace("/", MYSQL_FILE_PATH_SPLIT);
|
Map<String, EdFileInfo> filePathMap = new HashMap<>();
|
||||||
EdFileInfo edFileInfo = filePathMap.get(relativeFilePath);
|
for (EdFileInfo edFileInfo : edFileInfos) {
|
||||||
Assert.notNull(edFileInfo, "导入的工程与定义的层级结构不一致");
|
StringBuilder names = new StringBuilder();
|
||||||
String id = edFileInfo.getId();
|
for (String id : edFileInfo.getFilePath().split(MYSQL_FILE_PATH_SPLIT)) {
|
||||||
EdFileInfo newEdFileInfo = new EdFileInfo();
|
String name = idNameMap.get(id);
|
||||||
newEdFileInfo.newInit();
|
names.append(MYSQL_FILE_PATH_SPLIT).append(name);
|
||||||
String fileCode = commonService.createFileCode(id, fileType, FILE_START_VERSION, newEdFileInfo.getFileTime());
|
}
|
||||||
newEdFileInfo.setParentId(id)
|
filePathMap.put(names.substring(1), edFileInfo);
|
||||||
.setFileCode(fileCode)
|
}
|
||||||
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
|
||||||
.setDataOwn(DataOwnEnum.SYS_FILE.code)
|
List<File> files = FileUtil.loopFiles(destDir);
|
||||||
.setFileName(FileUtil.mainName(importFile))
|
String tmpPath = FileUtil.normalize(destDir);
|
||||||
.setFileContent(EleCommonUtil.parse(FileUtil.getInputStream(importFile), fileType))
|
for (File importFile : files) {
|
||||||
.setFileType(fileType)
|
Assert.isTrue(EleCommonUtil.isFileNameValid(importFile.getName()), "文件名称不符合规范");
|
||||||
.setFileVersion(FILE_START_VERSION)
|
String parentDir = FileUtil.normalize(importFile.getParent());
|
||||||
.setFileSize(importFile.length())
|
String relativeFilePath = parentDir.replace(tmpPath, "");
|
||||||
.setFilePath(edFileInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newEdFileInfo.getId())
|
String fileType = FileUtil.getSuffix(importFile.getName());
|
||||||
.setDataType(EleDataTypeEnum.FILE.code)
|
relativeFilePath = relativeFilePath.startsWith("/") ? relativeFilePath.substring(1) : relativeFilePath;
|
||||||
.setDataStatus(PublishEnum.PUBLISHED.getCode())
|
relativeFilePath = relativeFilePath.replace("/", MYSQL_FILE_PATH_SPLIT);
|
||||||
.setEffectFlag(EffectFlagEnum.EFFECT.code);
|
EdFileInfo edFileInfo = filePathMap.get(relativeFilePath);
|
||||||
this.baseMapper.insert(newEdFileInfo);
|
Assert.notNull(edFileInfo, "导入的工程与定义的层级结构不一致");
|
||||||
String destPath = commonService.getPrjRootPath1(DataOwnEnum.SYS_FILE.code) + File.separator + newEdFileInfo.getId();
|
String id = edFileInfo.getId();
|
||||||
FileUtil.move(importFile, new File(destPath), false);
|
EdFileInfo newEdFileInfo = new EdFileInfo();
|
||||||
EleCommonUtil.encryptFile(destPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
|
newEdFileInfo.newInit();
|
||||||
UserThreadLocal.setSuccessInfo(newEdFileInfo.getParentId(), newEdFileInfo.getId(), "解析导入的工程文件成功,导入的工程名为 {},文件名为 {}", orgName, importFile.getName());
|
String fileCode = commonService.createFileCode(id, fileType, FILE_START_VERSION, newEdFileInfo.getFileTime());
|
||||||
|
newEdFileInfo.setParentId(id)
|
||||||
|
.setFileCode(fileCode)
|
||||||
|
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
||||||
|
.setDataOwn(DataOwnEnum.SYS_FILE.code)
|
||||||
|
.setFileName(FileUtil.mainName(importFile))
|
||||||
|
.setFileContent(EleCommonUtil.parse(FileUtil.getInputStream(importFile), fileType))
|
||||||
|
.setFileType(fileType)
|
||||||
|
.setFileVersion(FILE_START_VERSION)
|
||||||
|
.setFileSize(importFile.length())
|
||||||
|
.setFilePath(edFileInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newEdFileInfo.getId())
|
||||||
|
.setDataType(EleDataTypeEnum.FILE.code)
|
||||||
|
.setDataStatus(PublishEnum.PUBLISHED.getCode())
|
||||||
|
.setEffectFlag(EffectFlagEnum.EFFECT.code);
|
||||||
|
this.baseMapper.insert(newEdFileInfo);
|
||||||
|
String destPath = commonService.getPrjRootPath1(DataOwnEnum.SYS_FILE.code) + File.separator + newEdFileInfo.getId();
|
||||||
|
FileUtil.move(importFile, new File(destPath), false);
|
||||||
|
EleCommonUtil.encryptFile(destPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
|
||||||
|
UserThreadLocal.setSuccessInfo(newEdFileInfo.getParentId(), newEdFileInfo.getId(), "解析导入的工程文件成功,导入的工程名为 {},文件名为 {}", orgName, importFile.getName());
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
String info = "上传失败,原因 " + e.getMessage();
|
||||||
|
throw new BizException(info, e);
|
||||||
|
} finally {
|
||||||
|
FileUtil.del(destDir);
|
||||||
|
FileUtil.del(tmpZipFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue