调通了文件上传

This commit is contained in:
chenxudong 2024-12-26 14:44:27 +08:00
parent 89a939a0b2
commit 822cfcc496
5 changed files with 35 additions and 31 deletions

View File

@ -5,7 +5,6 @@ import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import io.swagger.annotations.ApiOperation;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@ -32,9 +31,9 @@ public class EdFileInfoController {
return edFileInfoService.createFolder(parentId, newFolderName);
}
@RequestMapping("deleteFolder")
public ElectromagneticResult<?> deleteFolder(@RequestParam String id, @RequestParam Integer dataType) {
return edFileInfoService.deleteFolder(id, dataType);
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String id) {
return edFileInfoService.delete(id);
}
@RequestMapping("info")

View File

@ -38,10 +38,9 @@ public interface EdFileInfoService {
* 删除目录
*
* @param id
* @param dataType
* @return
*/
ElectromagneticResult<?> deleteFolder(String id, Integer dataType);
ElectromagneticResult<?> delete(String id);
/**
* 下载文件

View File

@ -28,6 +28,7 @@ import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@ -140,17 +141,11 @@ public class CommonService {
.likeRight(EdFileInfo::getFilePath, id));
}
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> addFolder(String parentId, String folderName, boolean maxLengthCheck, boolean isPrjDir, String folderId) {
// 验证名称是否合法
Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。");
if (!EleCommonUtil.isFileNameValid(folderName)) {
String info = StrFormatter.format("子集名称{}不符合要求", folderName);
log.error(info);
return ElectromagneticResultUtil.fail("-1", info);
}
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFilePath)
.eq(EdFileInfo::getId, parentId);
@ -168,10 +163,11 @@ public class CommonService {
// 判断文件夹名称是否存在
List<EdFileInfo> edFileInfos = edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFileName)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getParentId, parentId));
List<String> names = edFileInfos.stream().map(EdFileInfo::getFileName).collect(Collectors.toList());
if (names.contains(folderName)) {
String info = "子集名称已存在";
String info = "名称已存在";
log.error(info);
return ElectromagneticResultUtil.fail("-1", info);
}
@ -206,7 +202,7 @@ public class CommonService {
fileSystemService.createDirectory(targetFilePath);
return ElectromagneticResultUtil.success(true);
} catch (Exception e) {
String info = "添加子集失败";
String info = "添加失败";
log.error(info, e);
throw new BizException(-1, info);
}
@ -251,8 +247,8 @@ public class CommonService {
}
}
public ElectromagneticResult<?> deleteFolder(String id, String parentId, boolean needResort) {
// 如果文件夹下存在文件包括文件夹和已经逻辑删除的文件则不允许删除后面管理员选择会有物理删除文件夹和文件的功能此时MySQL和文件系统则会进行物理删除该文件
public ElectromagneticResult<?> deleteFolder(String id, String parentId) {
// 如果文件夹下存在文件包括文件夹和已经逻辑删除的文件则不允许删除后面管理员选择会有物理删除文件夹和文件的功能此时MySQL和文件系统则会进行物理删除该文件
try {
// 这里要分两种情况1是删除层级目录2是删除用户创建的文件夹
EdFileInfo fileInfo = edFileInfoMapper.selectOne(Wrappers.<EdFileInfo>lambdaQuery().eq(EdFileInfo::getId, id));
@ -291,7 +287,7 @@ public class CommonService {
} else { // 删除的是用户自己创建的文件夹
// 检查该文件夹下是否有没有被废除的文件
long count = edFileInfoMapper.selectCount(Wrappers.<EdFileInfo>lambdaQuery()
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getParentId, id)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
if (count > 0) {
String info = "禁止删除非空文件夹";

View File

@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum;
import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum;
import com.electromagnetic.industry.software.common.enums.PublishEnum;
import com.electromagnetic.industry.software.common.exception.BizException;
@ -144,15 +145,14 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
/**
* 删除目录
* @param id
* @param dataType
* @return
*/
@Override
public ElectromagneticResult<?> deleteFolder(String id, Integer dataType) {
Assert.isTrue(dataType == 0 || dataType == 1, "参数错误");
if (dataType == 0) {
return commonService.deleteFolder(id, null, false);
public ElectromagneticResult<?> delete(String id) {
EdFileInfo fileInfo = this.baseMapper.selectById(id);
String parentId = fileInfo.getParentId();
if (fileInfo.getDataType() == 0) {
return commonService.deleteFolder(id, parentId);
}
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class)
@ -434,6 +434,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
for (int i = 0; i < 1000; ++i) {
long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getFileName, fileName)
.eq(EdFileInfo::getFileType, fileInfo.getFileType())
.eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
@ -556,7 +557,11 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy) {
EdFileInfo fileInfo = this.baseMapper.selectById(parentId);
Assert.isTrue(fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code) && !fileInfo.getPrjDir(), "层级目录不允许上传文件");
// 首先检查是否是同名文件
try {
String fileName = file.getOriginalFilename();
@ -589,9 +594,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.setDataStatus(PublishEnum.PUBLISHED.getCode())
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setPrjDir(false);
this.baseMapper.insert(newEdFileInfo);
String fileDestPath = commonService.getFileSysPath(parentFolderInfo.getFileId()) + File.separator + mainName + suffix + "." + fileCode;
String fileDestPath = commonService.getFileSysPath(parentFolderInfo.getFilePath()) + File.separator + mainName + "." + suffix + "." + fileCode;
fileSystemService.save(file.getInputStream(), fileDestPath);
}
} catch (Exception e) {
@ -716,7 +722,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
return moveFile(id, targetFolderId, strategy, false);
}
private void handUploadRepeatFile(String parentId, MultipartFile file, Integer strategy) throws IOException {
@Transactional(rollbackFor = Exception.class)
public void handUploadRepeatFile(String parentId, MultipartFile file, Integer strategy) throws IOException {
Assert.isTrue(Arrays.asList(1, 2, 3).contains(strategy), "解决同名文件参数错误");
String fileName = file.getOriginalFilename();
String mainName = FileUtil.mainName(fileName);
@ -733,7 +740,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
Integer maxFileVersion = Collections.max(parentFileInfos, Comparator.comparing(EdFileInfo::getFileVersion)).getFileVersion();
// 找到当前展示的版本
EdFileInfo effectFileInfo = parentFileInfos.stream().filter(e -> e.getEffectFlag().equals(true)).collect(Collectors.toList()).get(0);
EdFileInfo effectFileInfo = parentFileInfos.stream().filter(e -> e.getEffectFlag().equals(EffectFlagEnum.EFFECT.code)).collect(Collectors.toList()).get(0);
String codePathByDbPath = commonService.getCodePathByDbPath(effectFileInfo.getFilePath());
String timeStr = EleCommonUtil.getNowTimeStr();
String fileCode = commonService.createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, timeStr);
@ -760,9 +767,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.setDataStatus(PublishEnum.PUBLISHED.getCode())
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setPrjDir(false);
this.baseMapper.insert(newEdFileInfo);
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFileId()) + File.separator + mainName + suffix + "." + fileCode;
String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath()) + File.separator + mainName + "." + suffix + "." + fileCode;
fileSystemService.save(file.getInputStream(), fileDestPath);
} else if (strategy == 3) {
// 文件名加_1存为新文件
@ -775,7 +783,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
String fileCode = commonService.createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime());
newEdFileInfo.setParentId(parentId)
.setFileCode(fileCode)
.setFileName(mainName + "_1")
.setFileName(mainName)
.setFileType(suffix)
.setFileVersion(FILE_START_VERSION)
.setFileTime(newEdFileInfo.getFileTime())
@ -785,9 +793,11 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.setDataStatus(PublishEnum.PUBLISHED.getCode())
.setEffectFlag(EffectFlagEnum.EFFECT.code)
.setFileCode(fileCode)
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
.setPrjDir(false);
resetFileInfoName(newEdFileInfo);
this.baseMapper.insert(newEdFileInfo);
String fileDestPath = commonService.getFileSysPath(parentFileInfo.getFileId()) + File.separator + mainName + "_1." + suffix + "." + fileCode;
String fileDestPath = commonService.getFileSysPath(parentFileInfo.getFilePath()) + File.separator + newEdFileInfo.getFileName() + "." + suffix + "." + fileCode;
fileSystemService.save(file.getInputStream(), fileDestPath);
}

View File

@ -275,7 +275,7 @@ public class EdPrjServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileInfo>
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> deleteFolder(String fileId, String parentId) {
return commonService.deleteFolder(fileId, parentId, true);
return commonService.deleteFolder(fileId, parentId);
}
/**