上传文件夹效率优化,解决上传文件夹数据库报错问题,创建目录失败问题修复

This commit is contained in:
MAC 2023-08-06 23:40:00 +08:00
parent 3649b7d493
commit e96bac0198
3 changed files with 48 additions and 35 deletions

View File

@ -6,11 +6,11 @@
<parent> <parent>
<groupId>com.qiwenshare</groupId> <groupId>com.qiwenshare</groupId>
<artifactId>qiwenshare</artifactId> <artifactId>qiwenshare</artifactId>
<version>1.2.3</version> <version>1.2.7</version>
</parent> </parent>
<artifactId>qiwen-file</artifactId> <artifactId>qiwen-file</artifactId>
<version>1.2.2-SNAPSHOT</version> <version>1.2.7-SNAPSHOT</version>
<name>qiwen-file</name> <name>qiwen-file</name>
<description>pan.qiwenshare.com</description> <description>pan.qiwenshare.com</description>
<packaging>jar</packaging> <packaging>jar</packaging>

View File

@ -78,7 +78,7 @@ public class FileDealComp {
@Autowired @Autowired
private ElasticsearchClient elasticsearchClient; private ElasticsearchClient elasticsearchClient;
public static Executor exec = Executors.newFixedThreadPool(10); public static Executor exec = Executors.newFixedThreadPool(20);
/** /**
* 获取重复文件名 * 获取重复文件名
@ -160,11 +160,7 @@ public class FileDealComp {
try { try {
userFileMapper.insert(userFile); userFileMapper.insert(userFile);
} catch (Exception e) { } catch (Exception e) {
if (e.getMessage().contains("Duplicate entry")) { //ignore
//ignore
} else {
log.error(e.getMessage());
}
} }
} }
qiwenFile = new QiwenFile(parentFilePath, true); qiwenFile = new QiwenFile(parentFilePath, true);
@ -285,15 +281,15 @@ public class FileDealComp {
public void uploadESByUserFileId(String userFileId) { public void uploadESByUserFileId(String userFileId) {
exec.execute(()->{
try {
try { Map<String, Object> param = new HashMap<>();
param.put("userFileId", userFileId);
Map<String, Object> param = new HashMap<>(); List<UserFile> userfileResult = userFileMapper.selectByMap(param);
param.put("userFileId", userFileId); if (userfileResult != null && userfileResult.size() > 0) {
List<UserFile> userfileResult = userFileMapper.selectByMap(param); FileSearch fileSearch = new FileSearch();
if (userfileResult != null && userfileResult.size() > 0) { BeanUtil.copyProperties(userfileResult.get(0), fileSearch);
FileSearch fileSearch = new FileSearch();
BeanUtil.copyProperties(userfileResult.get(0), fileSearch);
/*if (fileSearch.getIsDir() == 0) { /*if (fileSearch.getIsDir() == 0) {
Reader reader = ufopFactory.getReader(fileSearch.getStorageType()); Reader reader = ufopFactory.getReader(fileSearch.getStorageType());
@ -304,11 +300,13 @@ public class FileDealComp {
fileSearch.setContent(content); fileSearch.setContent(content);
}*/ }*/
elasticsearchClient.index(i -> i.index("filesearch").id(fileSearch.getUserFileId()).document(fileSearch)); elasticsearchClient.index(i -> i.index("filesearch").id(fileSearch.getUserFileId()).document(fileSearch));
}
} catch (Exception e) {
log.debug("ES更新操作失败请检查配置");
} }
} catch (Exception e) { });
log.debug("ES更新操作失败请检查配置");
}
} }

View File

@ -49,6 +49,8 @@ import java.util.Base64;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.zip.Adler32; import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream; import java.util.zip.CheckedOutputStream;
@ -79,7 +81,7 @@ public class FiletransferService implements IFiletransferService {
@Resource @Resource
PictureFileMapper pictureFileMapper; PictureFileMapper pictureFileMapper;
public static Executor exec = Executors.newFixedThreadPool(20);
@Override @Override
public UploadFileVo uploadFileSpeed(UploadFileDTO uploadFileDTO) { public UploadFileVo uploadFileSpeed(UploadFileDTO uploadFileDTO) {
@ -99,16 +101,25 @@ public class FiletransferService implements IFiletransferService {
if (list != null && !list.isEmpty()) { if (list != null && !list.isEmpty()) {
FileBean file = list.get(0); FileBean file = list.get(0);
UserFile userFile = new UserFile(qiwenFile, SessionUtil.getUserId(), file.getFileId()); UserFile userFile = new UserFile(qiwenFile, SessionUtil.getUserId(), file.getFileId());
UserFile param1 = QiwenFileUtil.searchQiwenFileParam(userFile);
List<UserFile> userFileList = userFileMapper.selectList(new QueryWrapper<>(param1)); try {
if (userFileList.size() <= 0) { userFileMapper.insert(userFile);
fileDealComp.uploadESByUserFileId(userFile.getUserFileId());
} catch (Exception e) {
log.warn("文件冲突重命名处理: {}", e.getMessage());
String fileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath());
userFile.setFileName(fileName);
userFileMapper.insert(userFile); userFileMapper.insert(userFile);
fileDealComp.uploadESByUserFileId(userFile.getUserFileId()); fileDealComp.uploadESByUserFileId(userFile.getUserFileId());
} }
if (relativePath.contains("/")) { if (relativePath.contains("/")) {
fileDealComp.restoreParentFilePath(qiwenFile, SessionUtil.getUserId()); QiwenFile finalQiwenFile = qiwenFile;
exec.execute(()->{
fileDealComp.restoreParentFilePath(finalQiwenFile, SessionUtil.getUserId());
});
} }
uploadFileVo.setSkipUpload(true); uploadFileVo.setSkipUpload(true);
@ -182,22 +193,26 @@ public class FiletransferService implements IFiletransferService {
UserFile userFile = new UserFile(qiwenFile, userId, fileBean.getFileId()); UserFile userFile = new UserFile(qiwenFile, userId, fileBean.getFileId());
try {
UserFile param = QiwenFileUtil.searchQiwenFileParam(userFile); userFileMapper.insert(userFile);
List<UserFile> userFileList = userFileMapper.selectList(new QueryWrapper<>(param)); fileDealComp.uploadESByUserFileId(userFile.getUserFileId());
if (userFileList.size() > 0) { } catch (Exception e) {
log.warn("文件冲突重命名处理: {}", e.getMessage());
String fileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); String fileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath());
userFile.setFileName(fileName); userFile.setFileName(fileName);
userFileMapper.insert(userFile);
fileDealComp.uploadESByUserFileId(userFile.getUserFileId());
} }
userFileMapper.insert(userFile);
if (relativePath.contains("/")) { if (relativePath.contains("/")) {
fileDealComp.restoreParentFilePath(qiwenFile, userId); QiwenFile finalQiwenFile = qiwenFile;
exec.execute(()->{
fileDealComp.restoreParentFilePath(finalQiwenFile, userId);
});
} }
fileDealComp.uploadESByUserFileId(userFile.getUserFileId());
LambdaQueryWrapper<UploadTaskDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<UploadTaskDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UploadTaskDetail::getIdentifier, uploadFileDto.getIdentifier()); lambdaQueryWrapper.eq(UploadTaskDetail::getIdentifier, uploadFileDto.getIdentifier());
uploadTaskDetailMapper.delete(lambdaQueryWrapper); uploadTaskDetailMapper.delete(lambdaQueryWrapper);