diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java index 53dc10d..f45a8ff 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java @@ -594,13 +594,13 @@ public class CommonService { public ElectromagneticResult upload(String parentId, MultipartFile file, Integer strategy, int dataOwnCode) { - Assert.isTrue(FileRepeatEnum.contains(strategy), "解决重名文件参数错误"); + Assert.isTrue(contains(strategy), "解决重名文件参数错误"); String fileName = file.getOriginalFilename(); String mainName = FileUtil.mainName(fileName); String suffix = FileUtil.getSuffix(fileName); Assert.isTrue(StrUtil.isNotEmpty(suffix), "文件类型不能为空"); String destPath = getDbPathById(parentId); - String strategyStr = FileRepeatEnum.getDesc(strategy); + String strategyStr = getDesc(strategy); Assert.isTrue(!file.isEmpty(), StrFormatter.format("文件 {} 为空,文件上传到 {} 失败,同名同后缀的处理方式为 {}", fileName, destPath, strategyStr)); Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), StrFormatter.format("文件 {} {},上传到 {} 失败,同名同后缀的处理方式为 {}", fileName, NAME_VALID_MSG, destPath, strategyStr)); // 查找下一层,看是否存在顶级定义相关文件,如果存在,则该层属于管理员层级定义的,不允许上传文件 @@ -620,7 +620,7 @@ public class CommonService { Assert.isTrue(dirCount == 0, "文件 {} 上传到 {} 失败,层级结构不允许上传文件,同名同后缀的处理方式为 {}", fileName, destPath, strategyStr); EdFileInfo newEdFileInfo = new EdFileInfo(); newEdFileInfo.newInit(); - EdFileInfo finalEdFileInfo; + EdFileInfo finalEdFileInfo = null; // 首先检查是否是同名文件 try { Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), NAME_VALID_MSG); @@ -640,7 +640,7 @@ public class CommonService { String fileCode = createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime()); newEdFileInfo.setParentId(parentId) .setFileCode(fileCode) - .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setSaveStatus(EleDataSaveStatusEnum.UPLOADING.code) .setDataOwn(dataOwnCode) .setFileName(mainName) .setFileContent(EleCommonUtil.parse(file.getInputStream(), suffix)) @@ -656,10 +656,16 @@ public class CommonService { FileUtil.writeFromStream(file.getInputStream(), fileDestPath); EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes())); finalEdFileInfo = newEdFileInfo; + newEdFileInfo.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code); + edFileInfoMapper.insertOrUpdate(newEdFileInfo); } } catch (Exception e) { String info = StrFormatter.format("文件 {} 为上传到 {} 失败,原因 {},同名同后缀的处理方式为 {}", fileName, destPath, e.getMessage(), strategyStr); - newEdFileInfo.setParentId(parentId) + if (Objects.isNull(finalEdFileInfo)) { + log.error(info, e); + throw new BizException(info); + } + finalEdFileInfo.setParentId(parentId) .setFileName(mainName) .setSaveStatus(EleDataSaveStatusEnum.FAIL.code) .setFileType(suffix) @@ -670,18 +676,18 @@ public class CommonService { .setDataType(EleDataTypeEnum.FILE.code) .setDataStatus(PublishEnum.PUBLISHED.getCode()) .setEffectFlag(EffectFlagEnum.NOT_EFFECTIVE.code); - edFileInfoMapper.insertOrUpdate(newEdFileInfo); + edFileInfoMapper.insertOrUpdate(finalEdFileInfo); log.error(info, e); throw new BizException(info); } - UserThreadLocal.setSuccessInfo(Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getParentId).orElse(""), + UserThreadLocal.setSuccessInfo(parentId, Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getId).orElse(""), "文件 {} 为上传到 {} 成功,同名同后缀的处理方式为 {},存入的文件名为 {}", fileName, destPath, strategyStr, - Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getFileName).orElse(fileName) + "." + Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getFileType).orElse(suffix)); - return ElectromagneticResultUtil.success(newEdFileInfo.getId()); + fileName + "." + suffix); + return ElectromagneticResultUtil.success(Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getId).orElse("")); } @Transactional(rollbackFor = Exception.class) @@ -699,7 +705,7 @@ public class CommonService { .setFileSize(file.getSize()) .setDataType(EleDataTypeEnum.FILE.code) .setDataStatus(PublishEnum.PUBLISHED.getCode()) - .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setSaveStatus(EleDataSaveStatusEnum.UPLOADING.code) .setDataOwn(dataOwnCode) .setEffectFlag(EffectFlagEnum.EFFECT.code); if (strategy == REVERSION.code) { @@ -752,6 +758,8 @@ public class CommonService { String fileDestPath = getFileSysPath(newEdFileInfo.getId()); fileSystemService.save(file.getInputStream(), fileDestPath); EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes())); + newEdFileInfo.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code); + edFileInfoMapper.insertOrUpdate(newEdFileInfo); return newEdFileInfo; }