文件上传记录接口

This commit is contained in:
chenxudong 2024-12-31 17:21:14 +08:00
parent 2ee833f8e4
commit 4b03e36209
6 changed files with 89 additions and 6 deletions

View File

@ -103,4 +103,9 @@ public class EdFileInfoController {
public ElectromagneticResult<?> checkChunkExist(FileChunkDTO fileChunkDTO) {
return edFileInfoService.checkChunkExist(fileChunkDTO);
}
@RequestMapping(value = "/uploadRecord", method = RequestMethod.GET)
public ElectromagneticResult<?> uploadRecord(@RequestParam int pageNum, @RequestParam int pageSize) {
return edFileInfoService.uploadRecord(pageNum, pageSize);
}
}

View File

@ -0,0 +1,14 @@
package com.electromagnetic.industry.software.manage.pojo.other;
import lombok.Data;
import java.util.Date;
@Data
public class UploadRecordDTO {
private String id;
private String fileName;
private Integer saveStatus;
private Date createdTime;
}

View File

@ -3,6 +3,7 @@ package com.electromagnetic.industry.software.manage.pojo.resp;
import lombok.Data;
import lombok.experimental.FieldNameConstants;
import java.util.ArrayList;
import java.util.List;
@FieldNameConstants
@ -14,5 +15,5 @@ public class FileProjectVO {
private Integer dataStatus;
private Integer sort;
private List<FileProjectVO> children;
private List<FileProjectVO> children = new ArrayList<>();
}

View File

@ -0,0 +1,17 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import com.electromagnetic.industry.software.manage.pojo.other.UploadRecordDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UploadRecordVO {
private long total;
List<UploadRecordDTO> records = new ArrayList<>();
}

View File

@ -138,4 +138,10 @@ public interface EdFileInfoService {
* @return
*/
ElectromagneticResult<?> copyFile(String id, String targetFolderId, Integer strategy);
/**
* 发布管理
* @return
*/
ElectromagneticResult<?> uploadRecord(int pageNum, int pageSize);
}

View File

@ -3,6 +3,7 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.lang.Assert;
@ -24,6 +25,7 @@ import com.electromagnetic.industry.software.common.util.*;
import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
import com.electromagnetic.industry.software.manage.pojo.other.FileInfoDTO;
import com.electromagnetic.industry.software.manage.pojo.other.UploadRecordDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkResultDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
@ -31,6 +33,7 @@ import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
import com.electromagnetic.industry.software.manage.pojo.resp.FileInfoQueryPageVO;
import com.electromagnetic.industry.software.manage.pojo.resp.FileVersionViewVO;
import com.electromagnetic.industry.software.manage.pojo.resp.ProjectVO;
import com.electromagnetic.industry.software.manage.pojo.resp.UploadRecordVO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.FileSystemService;
import org.springframework.beans.factory.annotation.Autowired;
@ -93,6 +96,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
.select()
.eq(EdFileInfo::getSaveStatus, EleDataSaveStatusEnum.SUCCESS.code)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
.eq(EdFileInfo::getParentId, fileInfoQueryDTO.getParentId())
.like(StrUtil.isNotEmpty(fileInfoQueryDTO.getKeyword()), EdFileInfo::getFileName, fileInfoQueryDTO.getKeyword())
@ -623,11 +627,14 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), NAME_VALID_MSG);
EdFileInfo fileInfo = this.baseMapper.selectById(parentId);
Assert.isTrue(fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code) && !fileInfo.getPrjDir(), "层级目录不允许上传文件");
// 首先检查是否是同名文件
try {
String fileName = file.getOriginalFilename();
String mainName = FileUtil.mainName(fileName);
String suffix = FileUtil.getSuffix(fileName);
EdFileInfo newEdFileInfo = new EdFileInfo();
newEdFileInfo.newInit();
// 首先检查是否是同名文件
try {
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), NAME_VALID_MSG);
Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, parentId)
@ -640,8 +647,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
EdFileInfo parentFolderInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getId, parentId)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
EdFileInfo newEdFileInfo = new EdFileInfo();
newEdFileInfo.newInit();
String codePathByDbPath = commonService.getCodePathByDbPath(parentFolderInfo.getFilePath());
String fileCode = commonService.createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime());
newEdFileInfo.setParentId(parentId)
@ -662,6 +668,18 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
fileSystemService.save(file.getInputStream(), fileDestPath);
}
} catch (Exception e) {
newEdFileInfo.setParentId(parentId)
.setFileName(mainName)
.setFileType(suffix)
.setFileSize(file.getSize())
.setDataType(EleDataTypeEnum.FILE.code)
.setDataStatus(PublishEnum.PUBLISHED.getCode())
.setEffectFlag(EffectFlagEnum.NOT_EFFECTIVE.code)
.setSaveStatus(EleDataSaveStatusEnum.FAIL.code)
.setPrjDir(false);
this.baseMapper.insert(newEdFileInfo);
String info = "上传文件失败";
log.error(info, e);
throw new BizException(-1, info);
@ -831,6 +849,28 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
return ElectromagneticResultUtil.success(true);
}
/**
* 发布管理
*
* @return
*/
@Override
public ElectromagneticResult<?> uploadRecord(int pageNum, int pageSize) {
List<String> prjIds = ListUtil.list(false, "100001", "100002"); //TODO 从权限处获取该用户有哪些工程的权限这里先写静态方便调试
List<EdFileInfo> res = new ArrayList<>();
LambdaQueryWrapper<EdFileInfo> lambdaQuery = Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getSaveStatus, EdFileInfo::getCreatedTime)
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code).likeRight(EdFileInfo::getFilePath, prjIds.get(0));
for (int i = 1; i < pageSize; i++) {
lambdaQuery.or().likeRight(EdFileInfo::getFilePath, prjIds.get(i));
}
Page<EdFileInfo> edFileInfoPage = this.baseMapper.selectPage(new Page<>(pageNum, pageSize), lambdaQuery);
long total = edFileInfoPage.getTotal();
List<UploadRecordDTO> uploadRecordDTOS = BeanUtil.copyToList(edFileInfoPage.getRecords(), UploadRecordDTO.class);
return ElectromagneticResultUtil.success(new UploadRecordVO(total, uploadRecordDTOS));
}
private ElectromagneticResult<?> handCopyConflict(String targetFolderId, Integer strategy, EdFileInfo srcFileInfo, EdFileInfo destFolderInfo) {
// 禁止同目录下移动和复制
if (srcFileInfo.getParentId().equals(destFolderInfo.getId())) {