From 634dd427781672b112a1d06dcff462b93255d207 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 19 Feb 2025 16:20:08 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E6=B2=BF=E7=94=A8=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/serviceimpl/EdPrjServiceImpl.java | 26 ++++++++++++------- .../src/main/resources/application.properties | 1 - 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java index 0b5d688..5d6c291 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java @@ -325,29 +325,35 @@ public class EdPrjServiceImpl extends ServiceImpl // 把source工程的层级结构copy到目标工程 // 查找source的全部目录 List sourceEdFileInfos = commonService.selectAllAdminFolder(sourceId, true, null); - List targetEdFileInfos = commonService.selectAllAdminFolder(targetId, true, null); List needSavePaths = new ArrayList<>(); // 确定层级最大为prjFolderMaxLength层,现在逐层来处理。 for (int i = 1; i <= prjFolderMaxLength; ++i) { + List targetEdFileInfos = commonService.selectAllAdminFolder(targetId, true, null); // 先查找source第i层下有那些子集 final int count = i; - EdFileInfo targetParentFile = targetEdFileInfos.stream() - .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count - 1) - .collect(Collectors.toList()).stream().findFirst().orElse(null); - if (targetParentFile == null) { - continue; - } + // 取source当前层 List sourceTmpEdFiles = sourceEdFileInfos.stream() .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) .collect(Collectors.toList()); + // 取target父层 List 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 sourceFileNameMap = sourceTmpEdFiles.stream() + .collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); + // 获取target当前层级的子集名称 + List targetFileNames = targetTmpEdFiles.stream() + .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) + .map(EdFileInfo::getFileName) .collect(Collectors.toList()); - Map sourceFileNameMap = sourceTmpEdFiles.stream().collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); - List targetFileNames = targetTmpEdFiles.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); int sort = targetTmpEdFiles.size(); for (EdFileInfo edFileInfo : sourceTmpEdFiles) { 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)) { EdFileInfo sourceFile = sourceFileNameMap.get(sourceFileName); EdFileInfo targetFile = new EdFileInfo(); diff --git a/electrmangnetic/src/main/resources/application.properties b/electrmangnetic/src/main/resources/application.properties index 8c19a2d..9a20aa3 100644 --- a/electrmangnetic/src/main/resources/application.properties +++ b/electrmangnetic/src/main/resources/application.properties @@ -14,7 +14,6 @@ pagehelper.helperDialect=mysql pagehelper.reasonable=false server.port=12395 file.security.passwd=adknfhkj87654knd -#windows文件存储目录,用于测试 data.windows.path=D:/tmp/eleData/project/ data.linux.path=/szsd/data/eleData/project/ data.upload.windows.tmp.path=D:/tmp/eleData/upload/ From e34cf519005833dfa9f65b76b29a31cfe9ba20e0 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 19 Feb 2025 16:51:01 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=B1=82=E7=BA=A7=E6=B2=BF=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/serviceimpl/EdPrjServiceImpl.java | 2 +- electrmangnetic/src/test/java/Test1.java | 65 ++----------------- 2 files changed, 7 insertions(+), 60 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java index 5d6c291..926217a 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java @@ -343,7 +343,7 @@ public class EdPrjServiceImpl extends ServiceImpl Map sourceFileNameMap = sourceTmpEdFiles.stream() .collect(Collectors.toMap(EdFileInfo::getFileName, e -> e)); // 获取target当前层级的子集名称 - List targetFileNames = targetTmpEdFiles.stream() + List targetFileNames = targetEdFileInfos.stream() .filter(e -> StrUtil.count(e.getFilePath(), MYSQL_FILE_PATH_SPLIT) == count) .map(EdFileInfo::getFileName) .collect(Collectors.toList()); diff --git a/electrmangnetic/src/test/java/Test1.java b/electrmangnetic/src/test/java/Test1.java index 5380d65..dfd6148 100644 --- a/electrmangnetic/src/test/java/Test1.java +++ b/electrmangnetic/src/test/java/Test1.java @@ -1,74 +1,21 @@ -//import cn.hutool.core.io.FileUtil; -//import cn.hutool.core.util.IdUtil; -//import cn.hutool.core.util.ZipUtil; -//import cn.hutool.crypto.SecureUtil; -//import cn.hutool.crypto.symmetric.AES; -//import com.electromagnetic.industry.software.common.util.UserThreadLocal; //import com.electromagnetic.industry.software.manage.Application; -//import com.electromagnetic.industry.software.manage.service.FileSystemService; -//import com.electromagnetic.industry.software.manage.service.serviceimpl.EdFileInfoServiceImpl; +//import com.electromagnetic.industry.software.manage.service.serviceimpl.EdPrjServiceImpl; //import org.junit.jupiter.api.Test; -//import org.springframework.beans.factory.annotation.Value; //import org.springframework.boot.test.context.SpringBootTest; -//import org.springframework.core.env.Environment; // -//import javax.annotation.PostConstruct; //import javax.annotation.Resource; -//import java.io.File; -//import java.io.InputStream; -//import java.io.OutputStream; -//import java.nio.file.Files; -//import java.nio.file.Paths; // //@SpringBootTest(classes = Application.class) //public class Test1 { // // @Resource -// private EdFileInfoServiceImpl edFileInfoServiceImpl; -// @Resource -// private FileSystemService fileSystemService; -// -// @Value("${file.security.passwd}") -// private String password; -// -// private String downloadDataDir = ""; -// private String uploadDataDir = ""; -// -// @Resource -// private Environment environment; -// -// @PostConstruct -// public void init() { -// String osName = System.getProperty("os.name").toLowerCase(); -// uploadDataDir = osName.startsWith("win") ? environment.getProperty("data.upload.windows.tmp.path") : environment.getProperty("data.upload.linux.tmp.path"); -// downloadDataDir = osName.startsWith("win") ? environment.getProperty("data.download.windows.tmp.path") : environment.getProperty("data.download.linux.tmp.path"); -// } +// private EdPrjServiceImpl edPrjService; // // @Test -// public void testImport() { -// String currentUserId = UserThreadLocal.getUserId(); -// String destColibPath = "E:/tmp/测试沿用.colib"; -// String mainName = FileUtil.mainName(destColibPath); -// String parentDir = FileUtil.getParent(destColibPath, 1); -// String zipDirPath = parentDir + File.separator + mainName + ".zip"; -// AES aes = SecureUtil.aes(password.getBytes()); -// try ( -// InputStream inputStream = Files.newInputStream(Paths.get(destColibPath)); -// OutputStream outputStream = Files.newOutputStream(Paths.get(zipDirPath)); -// ) { -// aes.decrypt(inputStream, outputStream, true); -// } catch (Exception e) { -// e.printStackTrace(); -// String info = "文件上传错误"; -// System.out.println("info = " + info); -// } -// String uuid = IdUtil.fastSimpleUUID(); -// String tmpDir = uploadDataDir + currentUserId + File.separator + uuid + File.separator; -// ZipUtil.unzip(zipDirPath, tmpDir); -// -// edFileInfoServiceImpl.update2Database(tmpDir); -// fileSystemService.deleteFile(zipDirPath, destColibPath); -// +// public void testFollow() { +// String sourceId = "100101"; +// String targetId = "100323"; +// edPrjService.follow(sourceId, targetId); // } // //} From 1d323e90813494c2b350fcdc5e18447f337feb7a Mon Sep 17 00:00:00 2001 From: chenxudong Date: Wed, 19 Feb 2025 17:18:11 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../software/manage/service/serviceimpl/EdPrjServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java index 926217a..73a1806 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java @@ -374,6 +374,7 @@ public class EdPrjServiceImpl extends ServiceImpl .setDataStatus(EleDataStatusEnum.NOT_PUBLISHED.code) .setEffectFlag(EffectFlagEnum.EFFECT.code) .setFileCode(fileCode) + .setFileType("文件夹") .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) .setFilePath(targetParentFile.getFilePath() + MYSQL_FILE_PATH_SPLIT + newFolderId) .setSort(++sort)