解决已知问题
This commit is contained in:
parent
f0e17b0704
commit
7d0dd012ac
|
|
@ -37,7 +37,7 @@ public class EdFileInfoController {
|
||||||
return edFileInfoService.delete(id);
|
return edFileInfoService.delete(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("getFileInfoList")
|
@RequestMapping("info")
|
||||||
public ElectromagneticResult<?> info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) {
|
public ElectromagneticResult<?> info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) {
|
||||||
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO);
|
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO);
|
||||||
}
|
}
|
||||||
|
|
@ -84,8 +84,8 @@ public class EdFileInfoController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("batchExport")
|
@RequestMapping("batchExport")
|
||||||
public ResponseEntity<InputStreamResource> batchExport(@RequestParam String dataIdArr, HttpServletResponse response) throws IOException {
|
public ResponseEntity<InputStreamResource> batchExport(@RequestParam String fileIds, HttpServletResponse response) throws IOException {
|
||||||
return edFileInfoService.batchExport(dataIdArr, response);
|
return edFileInfoService.batchExport(fileIds, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/mergeChunks", method = RequestMethod.GET)
|
@RequestMapping(value = "/mergeChunks", method = RequestMethod.GET)
|
||||||
|
|
@ -110,7 +110,7 @@ public class EdFileInfoController {
|
||||||
return edFileInfoService.uploadRecord(pageNum, pageSize);
|
return edFileInfoService.uploadRecord(pageNum, pageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/detail", method = RequestMethod.GET)
|
@RequestMapping(value = "/fileDetail", method = RequestMethod.GET)
|
||||||
public ElectromagneticResult<?> detail(@RequestParam String id) {
|
public ElectromagneticResult<?> detail(@RequestParam String id) {
|
||||||
return edFileInfoService.detail(id);
|
return edFileInfoService.detail(id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ public class CommonService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String createFileCode(String parentId, String fileType, int version, String timeStr) {
|
public String createFileCode(String parentId, String fileType, int version, String timeStr) {
|
||||||
return parentId + FILE_TYPE_ENUM.get(fileType) + version + timeStr;
|
return parentId + FILE_TYPE_ENUM.getOrDefault(fileType, "00") + version + timeStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EdFileInfo> selectAllAdminFolder(String id) {
|
public List<EdFileInfo> selectAllAdminFolder(String id) {
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import com.electromagnetic.industry.software.manage.service.FileSystemService;
|
||||||
import com.electromagnetic.industry.software.manage.service.PermissionService;
|
import com.electromagnetic.industry.software.manage.service.PermissionService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.core.io.FileSystemResource;
|
import org.springframework.core.io.FileSystemResource;
|
||||||
import org.springframework.core.io.InputStreamResource;
|
import org.springframework.core.io.InputStreamResource;
|
||||||
|
|
@ -73,6 +74,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
@Resource
|
@Resource
|
||||||
private PermissionService permissionService;
|
private PermissionService permissionService;
|
||||||
@Resource
|
@Resource
|
||||||
|
@Lazy
|
||||||
private EdFileRelationService edFileRelationService;
|
private EdFileRelationService edFileRelationService;
|
||||||
|
|
||||||
private String downloadDataDir = "";
|
private String downloadDataDir = "";
|
||||||
|
|
@ -177,7 +179,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
res.add(fileProjectVO);
|
res.add(fileProjectVO);
|
||||||
});
|
});
|
||||||
res.sort(Comparator.comparing(FileProjectVO::getSort));
|
res.sort(Comparator.comparing(FileProjectVO::getSort));
|
||||||
return ElectromagneticResultUtil.success(commonService.queryAllPrjInfo(false));
|
return ElectromagneticResultUtil.success(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -217,11 +219,12 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
String fileSysPath = commonService.getFileSysPath(fileInfo.getFilePath());
|
String fileSysPath = commonService.getFileSysPath(fileInfo.getFilePath());
|
||||||
Assert.isTrue(FileUtil.exist(fileSysPath), "下载文件不存在。");
|
Assert.isTrue(FileUtil.exist(fileSysPath), "下载文件不存在。");
|
||||||
FileSystemResource fileSystemResource = new FileSystemResource(fileSysPath);
|
FileSystemResource fileSystemResource = new FileSystemResource(fileSysPath);
|
||||||
|
String fileName = fileSystemResource.getFilename();
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
|
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
|
||||||
headers.add("Pragma", "no-cache");
|
headers.add("Pragma", "no-cache");
|
||||||
headers.add("Expires", "0");
|
headers.add("Expires", "0");
|
||||||
String fileName = Base64.encode(fileSystemResource.getFilename());
|
fileName = Base64.encode(fileName.substring(0, fileName.lastIndexOf(".")));
|
||||||
response.setHeader("content-disposition", "attachment;filename=" + fileName);
|
response.setHeader("content-disposition", "attachment;filename=" + fileName);
|
||||||
// 构建响应实体(可以返回<byte[]或Resource,返回类型取决body入参类型)
|
// 构建响应实体(可以返回<byte[]或Resource,返回类型取决body入参类型)
|
||||||
return ResponseEntity
|
return ResponseEntity
|
||||||
|
|
@ -263,13 +266,21 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
} else {
|
} else {
|
||||||
queryWrapper.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code);
|
queryWrapper.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code);
|
||||||
}
|
}
|
||||||
long count = this.baseMapper.selectCount(Wrappers.<EdFileInfo>lambdaQuery()
|
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.<EdFileInfo>lambdaQuery()
|
||||||
.select(EdFileInfo::getFileName)
|
.select(EdFileInfo::getId, EdFileInfo::getFileName)
|
||||||
.eq(EdFileInfo::getParentId, parentId)
|
.eq(EdFileInfo::getParentId, parentId)
|
||||||
.eq(EdFileInfo::getFileName, updateFileInfoDTO.getFileName())
|
.eq(EdFileInfo::getFileName, updateFileInfoDTO.getFileName())
|
||||||
.eq(EdFileInfo::getFileType, fileInfo.getFileType())
|
.eq(EdFileInfo::getFileType, fileInfo.getFileType())
|
||||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
|
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
|
||||||
Assert.isTrue(count == 0, "文件名已存在");
|
Map<String, EdFileInfo> map = edFileInfos.stream().collect(Collectors.toMap(EdFileInfo::getId, e -> e));
|
||||||
|
if (map.size() == 1) {
|
||||||
|
if (!map.values().iterator().next().getId().equals(updateFileInfoDTO.getId())) {
|
||||||
|
throw new BizException(-1, "文件名已经存在");
|
||||||
|
}
|
||||||
|
} else if (map.size() > 1) {
|
||||||
|
log.warn("数据库中存在了两份同名同后缀的文件");
|
||||||
|
throw new BizException(-1, "文件名已经存在");
|
||||||
|
}
|
||||||
|
|
||||||
String srcFilePath = commonService.getFileSysPath(fileInfo.getFilePath());
|
String srcFilePath = commonService.getFileSysPath(fileInfo.getFilePath());
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
|
|
@ -565,13 +576,14 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<InputStreamResource> batchExport(String dataIdArr, HttpServletResponse response) throws IOException {
|
public ResponseEntity<InputStreamResource> batchExport(String dataIdArr, HttpServletResponse response) throws IOException {
|
||||||
String[] ids = dataIdArr.split(",");
|
String[] ids = dataIdArr.split(",");
|
||||||
List<EdFileInfo> resFiles = new ArrayList<>();
|
Map<String, EdFileInfo> maps = new HashMap<>();
|
||||||
for (String id : ids) {
|
for (String id : ids) {
|
||||||
List<EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
Map<String, EdFileInfo> edFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT)
|
.like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id + MYSQL_FILE_PATH_SPLIT)
|
||||||
.eq(EdFileInfo::getEffectFlag, true));
|
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)).stream().collect(Collectors.toMap(EdFileInfo::getId, e -> e));
|
||||||
resFiles.addAll(edFileInfos);
|
maps.putAll(edFileInfos);
|
||||||
}
|
}
|
||||||
|
List<EdFileInfo> resFiles = new ArrayList<>(maps.values());
|
||||||
String prjId = resFiles.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT)[0];
|
String prjId = resFiles.get(0).getFilePath().split(MYSQL_FILE_PATH_SPLIT)[0];
|
||||||
List<EdFileInfo> prjFolders = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
List<EdFileInfo> prjFolders = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT)
|
.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT)
|
||||||
|
|
@ -736,8 +748,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
|
|
||||||
// 获取原文件mysql模型
|
// 获取原文件mysql模型
|
||||||
EdFileInfo srcFileInfo = this.baseMapper.selectById(id);
|
EdFileInfo srcFileInfo = this.baseMapper.selectById(id);
|
||||||
String srcFileDbPath = srcFileInfo.getFilePath();
|
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath());
|
||||||
String fileCode = srcFileInfo.getFileCode();
|
|
||||||
// 判断目标路径下是否有同名文件,如果所有的同名文件:1)如果所有文件都已经被作废,则该文件为新文件,版本号从100开始。2)如果有没有被作废的文件,则冲突处理方式按---1-跳过冲突文件 2-做版本更新 3-重命名,文件名加"_1"
|
// 判断目标路径下是否有同名文件,如果所有的同名文件:1)如果所有文件都已经被作废,则该文件为新文件,版本号从100开始。2)如果有没有被作废的文件,则冲突处理方式按---1-跳过冲突文件 2-做版本更新 3-重命名,文件名加"_1"
|
||||||
long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.eq(EdFileInfo::getParentId, targetFolderId)
|
.eq(EdFileInfo::getParentId, targetFolderId)
|
||||||
|
|
@ -759,8 +770,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
.setFileCode(newFileCode);
|
.setFileCode(newFileCode);
|
||||||
this.baseMapper.updateById(srcFileInfo);
|
this.baseMapper.updateById(srcFileInfo);
|
||||||
// 文件系统移动文件
|
// 文件系统移动文件
|
||||||
String srcFilePath = commonService.getFileSysPath(srcFileDbPath);
|
String destFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath());
|
||||||
String destFilePath = commonService.getFileSysPath(destFolderInfo.getFilePath());
|
|
||||||
fileSystemService.moveFile(srcFilePath, destFilePath);
|
fileSystemService.moveFile(srcFilePath, destFilePath);
|
||||||
} else {
|
} else {
|
||||||
return handMoveConflict(targetFolderId, strategy, srcFileInfo, destFolderInfo);
|
return handMoveConflict(targetFolderId, strategy, srcFileInfo, destFolderInfo);
|
||||||
|
|
@ -882,9 +892,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
LambdaQueryWrapper<EdFileInfo> lambdaQuery = Wrappers.lambdaQuery(EdFileInfo.class)
|
LambdaQueryWrapper<EdFileInfo> lambdaQuery = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getSaveStatus, EdFileInfo::getCreatedTime, EdFileInfo::getFileType)
|
.select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getSaveStatus, EdFileInfo::getCreatedTime, EdFileInfo::getFileType)
|
||||||
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code)
|
.eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code)
|
||||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code);
|
||||||
.likeRight(EdFileInfo::getFilePath, prjIds.get(0));
|
for (int i = 0; i < prjIds.size(); i++) {
|
||||||
for (int i = 1; i < pageSize; i++) {
|
|
||||||
lambdaQuery.or().likeRight(EdFileInfo::getFilePath, prjIds.get(i));
|
lambdaQuery.or().likeRight(EdFileInfo::getFilePath, prjIds.get(i));
|
||||||
}
|
}
|
||||||
Page<EdFileInfo> edFileInfoPage = this.baseMapper.selectPage(new Page<>(pageNum, pageSize), lambdaQuery);
|
Page<EdFileInfo> edFileInfoPage = this.baseMapper.selectPage(new Page<>(pageNum, pageSize), lambdaQuery);
|
||||||
|
|
@ -916,10 +925,11 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
|
|
||||||
if (strategy == 2) {
|
if (strategy == 2) {
|
||||||
// 做版本更新
|
// 做版本更新
|
||||||
List<EdFileInfo> sameFileInfos = this.baseMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class)
|
LambdaQueryWrapper<EdFileInfo> queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class)
|
||||||
.eq(EdFileInfo::getParentId, targetFolderId)
|
.eq(EdFileInfo::getParentId, targetFolderId)
|
||||||
.eq(EdFileInfo::getFileName, srcFileInfo.getFileName())
|
.eq(EdFileInfo::getFileName, srcFileInfo.getFileName())
|
||||||
.eq(EdFileInfo::getFileType, srcFileInfo.getFileType()));
|
.eq(EdFileInfo::getFileType, srcFileInfo.getFileType());
|
||||||
|
List<EdFileInfo> sameFileInfos = this.baseMapper.selectList(queryWrapper);
|
||||||
Integer maxFileVersion = Collections.max(sameFileInfos, Comparator.comparing(EdFileInfo::getFileVersion)).getFileVersion();
|
Integer maxFileVersion = Collections.max(sameFileInfos, Comparator.comparing(EdFileInfo::getFileVersion)).getFileVersion();
|
||||||
String newFileDbId = IdWorker.getSnowFlakeIdString();
|
String newFileDbId = IdWorker.getSnowFlakeIdString();
|
||||||
String fileTime = EleCommonUtil.getNowTimeStr();
|
String fileTime = EleCommonUtil.getNowTimeStr();
|
||||||
|
|
@ -933,6 +943,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
|
||||||
.setPreVersion(maxFileVersion)
|
.setPreVersion(maxFileVersion)
|
||||||
.setEffectFlag(EffectFlagEnum.EFFECT.code)
|
.setEffectFlag(EffectFlagEnum.EFFECT.code)
|
||||||
.setFileCode(fileCode);
|
.setFileCode(fileCode);
|
||||||
|
this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class).eq(EdFileInfo::getParentId, targetFolderId)
|
||||||
|
.eq(EdFileInfo::getFileName, srcFileInfo.getFileName())
|
||||||
|
.eq(EdFileInfo::getFileType, srcFileInfo.getFileType()).set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code));
|
||||||
this.baseMapper.insert(destSaveFileInfo);
|
this.baseMapper.insert(destSaveFileInfo);
|
||||||
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath());
|
String srcFilePath = commonService.getFileSysPath(srcFileInfo.getFilePath());
|
||||||
String destFilePath = commonService.getFileSysPath(destSaveFileInfo.getFilePath());
|
String destFilePath = commonService.getFileSysPath(destSaveFileInfo.getFilePath());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue