解决层级沿用的bug

This commit is contained in:
chenxudong 2025-02-19 16:20:08 +08:00
parent de63dfe9d6
commit 634dd42778
2 changed files with 16 additions and 11 deletions

View File

@ -325,29 +325,35 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
// 把source工程的层级结构copy到目标工程 // 把source工程的层级结构copy到目标工程
// 查找source的全部目录 // 查找source的全部目录
List<EdFileInfo> sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId, true, null); List<EdFileInfo> sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId, true, null);
List<EdFileInfo> targetEdFileInfos = commonService.selectAllAdminFolder(targetId, true, null);
List<String> needSavePaths = new ArrayList<>(); List<String> needSavePaths = new ArrayList<>();
// 确定层级最大为prjFolderMaxLength层现在逐层来处理 // 确定层级最大为prjFolderMaxLength层现在逐层来处理
for (int i = 1; i <= prjFolderMaxLength; ++i) { for (int i = 1; i <= prjFolderMaxLength; ++i) {
List<EdFileInfo> targetEdFileInfos = commonService.selectAllAdminFolder(targetId, true, null);
// 先查找source第i层下有那些子集 // 先查找source第i层下有那些子集
final int count = i; final int count = i;
EdFileInfo targetParentFile = targetEdFileInfos.stream() // 取source当前层
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1)
.collect(Collectors.toList()).stream().findFirst().orElse(null);
if (targetParentFile == null) {
continue;
}
List<EdFileInfo> sourceTmpEdFiles = sourceEdFileInfos.stream() List<EdFileInfo> sourceTmpEdFiles = sourceEdFileInfos.stream()
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count)
.collect(Collectors.toList()); .collect(Collectors.toList());
// 取target父层
List<EdFileInfo> targetTmpEdFiles = targetEdFileInfos.stream() List<EdFileInfo> targetTmpEdFiles = targetEdFileInfos.stream()
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1)
.collect(Collectors.toList());
// 获取source名称的map
Map<String, EdFileInfo> sourceFileNameMap = sourceTmpEdFiles.stream()
.collect(Collectors.toMap(EdFileInfo::getFileName, e -> e));
// 获取target当前层级的子集名称
List<String> targetFileNames = targetTmpEdFiles.stream()
.filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count)
.map(EdFileInfo::getFileName)
.collect(Collectors.toList()); .collect(Collectors.toList());
Map<String, EdFileInfo> sourceFileNameMap = sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e));
List<String> targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList());
int sort = targetTmpEdFiles.size(); int sort = targetTmpEdFiles.size();
for (EdFileInfo edFileInfo : sourceTmpEdFiles) { for (EdFileInfo edFileInfo : sourceTmpEdFiles) {
String sourceFileName = edFileInfo.getFileName(); String sourceFileName = edFileInfo.getFileName();
String sourceFileParentName = sourceEdFileInfos.stream().filter(e -> e.getId().equals(edFileInfo.getParentId())).findFirst().get().getFileName();
EdFileInfo targetParentFile = i == 1 ? targetTmpEdFiles.stream().filter(e -> e.getId().equals(targetId)).findFirst().get() : targetTmpEdFiles.stream().filter(e -> e.getFileName().equals(sourceFileParentName)).findFirst().get();
if (!targetFileNames.contains(sourceFileName)) { if (!targetFileNames.contains(sourceFileName)) {
EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName); EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName);
EdFileInfo targetFile = new EdFileInfo(); EdFileInfo targetFile = new EdFileInfo();

View File

@ -14,7 +14,6 @@ pagehelper.helperDialect=mysql
pagehelper.reasonable=false pagehelper.reasonable=false
server.port=12395 server.port=12395
file.security.passwd=adknfhkj87654knd file.security.passwd=adknfhkj87654knd
#windows文件存储目录,用于测试
data.windows.path=D:/tmp/eleData/project/ data.windows.path=D:/tmp/eleData/project/
data.linux.path=/szsd/data/eleData/project/ data.linux.path=/szsd/data/eleData/project/
data.upload.windows.tmp.path=D:/tmp/eleData/upload/ data.upload.windows.tmp.path=D:/tmp/eleData/upload/