新增导出工程时用户创建的空文件夹校验。

This commit is contained in:
chenxudong 2025-04-17 17:13:28 +08:00
parent 0dc0c1d658
commit 6c31cd0c42
2 changed files with 13 additions and 0 deletions

View File

@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data @Data
@TableName("file_tag_relations") @TableName("file_tag_relations")
public class FileTagRelation extends BaseModel { public class FileTagRelation extends BaseModel {

View File

@ -873,6 +873,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
maps.putAll(edFileInfos); maps.putAll(edFileInfos);
} }
Set<EdFileInfo> resFiles = new HashSet<>(maps.values()); Set<EdFileInfo> resFiles = new HashSet<>(maps.values());
String prjId = resFiles.stream().findFirst().get().getFilePath().split(MYSQL_FILE_PATH_SPLIT)[0]; String prjId = resFiles.stream().findFirst().get().getFilePath().split(MYSQL_FILE_PATH_SPLIT)[0];
List<EdFileInfo> prjFolders = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) List<EdFileInfo> prjFolders = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT) .likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT)
@ -886,12 +887,22 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
resFiles.clear(); resFiles.clear();
resFiles.addAll(tmps.values()); resFiles.addAll(tmps.values());
resFiles.add(prjFileInfo); resFiles.add(prjFileInfo);
List<EdFileInfo> files = resFiles.stream().filter(e -> e.getDataType().equals(EleDataTypeEnum.FILE.code)).toList(); List<EdFileInfo> files = resFiles.stream().filter(e -> e.getDataType().equals(EleDataTypeEnum.FILE.code)).toList();
for (EdFileInfo edFileInfo : files) { for (EdFileInfo edFileInfo : files) {
String filePath = commonService.getFileSysPath(edFileInfo.getId()); // file String filePath = commonService.getFileSysPath(edFileInfo.getId()); // file
String destPath = userDownloadDataDir + File.separator + EXPORT_PRJ_NAME + "_" + nowTimeStr + File.separator + EXPORT_PRJ_NAME + File.separator + edFileInfo.getId(); String destPath = userDownloadDataDir + File.separator + EXPORT_PRJ_NAME + "_" + nowTimeStr + File.separator + EXPORT_PRJ_NAME + File.separator + edFileInfo.getId();
fileSystemService.copyFile(filePath, destPath); fileSystemService.copyFile(filePath, destPath);
} }
// 去除用户创建的空文件夹
List<EdFileInfo> userFolders = resFiles.stream().filter(e ->
e.getDataType().equals(EleDataTypeEnum.FOLDER.code) && DataOwnEnum.isFileCode(e.getDataOwn())
).toList();
List<String> userFolderIds = userFolders.stream().map(EdFileInfo::getId).collect(Collectors.toList());
List<String> fileParentIds = files.stream().map(EdFileInfo::getParentId).toList();
userFolderIds.removeAll(fileParentIds);
resFiles = resFiles.stream().filter(e -> !userFolderIds.contains(e.getId())).collect(Collectors.toSet());
String json = JSONUtil.toJsonStr(resFiles); String json = JSONUtil.toJsonStr(resFiles);
String mysqlFilePath = userDownloadDataDir + File.separator + EXPORT_PRJ_NAME + "_" + nowTimeStr + File.separator + PRJ_INFO + ".json"; String mysqlFilePath = userDownloadDataDir + File.separator + EXPORT_PRJ_NAME + "_" + nowTimeStr + File.separator + PRJ_INFO + ".json";
fileSystemService.writeStringToFile(mysqlFilePath, json); fileSystemService.writeStringToFile(mysqlFilePath, json);