修复:重名文件建立关系

This commit is contained in:
s2042968 2025-02-19 17:50:08 +08:00
parent 3755ce201a
commit 086ec057a0
3 changed files with 51 additions and 36 deletions

View File

@ -1,6 +1,7 @@
package com.electromagnetic.industry.software.manage.service;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
@ -164,4 +165,10 @@ public interface EdFileInfoService {
* @return
*/
ElectromagneticResult<?> queryChildFolder(String parentId);
/**
* 处理重名文件文件名后+_1
* @param fileInfo
*/
void resetFileInfoName(EdFileInfo fileInfo);
}

View File

@ -561,7 +561,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
update2FileSystem(allObjs, prjDirPath);
}
private void resetFileInfoName(EdFileInfo fileInfo) {
@Override
public void resetFileInfoName(EdFileInfo fileInfo) {
String fileName = fileInfo.getFileName();
String parentId = fileInfo.getParentId();
for (int i = 0; i < 1000; ++i) {

View File

@ -22,7 +22,9 @@ import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequ
import com.electromagnetic.industry.software.manage.pojo.resp.FileRelationViewVO;
import com.electromagnetic.industry.software.manage.pojo.resp.FileSimpleInfoVO;
import com.electromagnetic.industry.software.manage.service.EdFileRelationService;
import com.electromagnetic.industry.software.manage.service.FileSystemService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@ -42,6 +44,10 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
EdFileInfoServiceImpl edFileInfoService;
@Resource
private CommonService commonService;
@Resource
private FileSystemService fileSystemService;
@Autowired
private EdFileInfoServiceImpl edFileInfoServiceImpl;
/**
* 创建文件关系
@ -197,42 +203,43 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
String suffix = FileUtil.getSuffix(fileName);
EdFileInfo newEdFileInfo = new EdFileInfo();
newEdFileInfo.newInit();
// 首先检查是否是同名文件
try {
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), NAME_VALID_MSG);
Long count = edFileInfoService.count(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getFileName, mainName)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getFileType, suffix));
if (count > 0) {
edFileInfoService.handUploadRepeatFile(parentId, file, 3);
} else {
EdFileInfo parentFolderInfo = edFileInfoService.getOne(Wrappers.lambdaQuery(EdFileInfo.class)
EdFileInfo parentFileInfo = edFileInfoMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
String codePathByDbPath = commonService.getCodePathByDbPath(parentFolderInfo.getFilePath());
String codePathByDbPath = commonService.getCodePathByDbPath(parentFileInfo.getFilePath());
String fileCode = commonService.createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime());
newEdFileInfo.setParentId(parentId)
.setFileCode(fileCode)
.setFileName(mainName)
.setFileType(suffix)
.setFileVersion(FILE_START_VERSION)
.setFileTime(newEdFileInfo.getFileTime())
.setFileSize(file.getSize())
.setFilePath(parentFolderInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newEdFileInfo.getId())
.setFilePath(parentFileInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newEdFileInfo.getId())
.setDataType(EleDataTypeEnum.FILE.code)
.setDataStatus(PublishEnum.PUBLISHED.getCode())
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setPrjDir(false);
// 文件名加_1存为新文件
if (count > 0) {
edFileInfoService.resetFileInfoName(newEdFileInfo);
}
edFileInfoService.saveOrUpdate(newEdFileInfo);
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath());
FileUtil.writeFromStream(file.getInputStream(), fileDestPath);
EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
// fileSystemService.save(FileUtil.getInputStream(fileDestPath), fileDestPath); // 这里会导致文件大小为0考虑到当前的系统为OS文件系统暂不处理
// 创建文件关系
EdFileRelation relation = new EdFileRelation();
@ -240,7 +247,7 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
relation.setId2(newEdFileInfo.getId());
relation.setRelationship(descrption);
createRelation(relation);
}
} catch (Exception e) {
newEdFileInfo.setParentId(parentId)
.setFileName(mainName)