From b3c6845c9dc2b5710b76624e38a3ef82c1df2a2e Mon Sep 17 00:00:00 2001 From: s2042968 Date: Mon, 6 Jan 2025 13:34:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E5=B9=B6=E5=BB=BA=E7=AB=8B?= =?UTF-8?q?=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EdFileRelationController.java | 4 +- .../manage/service/EdFileInfoService.java | 10 -- .../manage/service/EdFileRelationService.java | 13 +++ .../serviceimpl/EdFileInfoServiceImpl.java | 82 ---------------- .../EdFileRelationServiceImpl.java | 97 ++++++++++++++++++- 5 files changed, 107 insertions(+), 99 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileRelationController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileRelationController.java index 04ee98d..ef50b8f 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileRelationController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileRelationController.java @@ -17,8 +17,6 @@ public class EdFileRelationController { @Resource EdFileRelationService edFileRelationService; - @Resource - EdFileInfoService edFileInfoService; /** * 创建文件关系 @@ -66,6 +64,6 @@ public class EdFileRelationController { @RequestParam("file") MultipartFile file, @RequestParam("description") String description, @RequestParam("id") String id){ - return ElectromagneticResultUtil.success(edFileInfoService.uploadFileAndRelation(parentId,id,file,description)); + return ElectromagneticResultUtil.success(edFileRelationService.uploadFileAndRelation(parentId,id,file,description)); } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java index 05500a7..58795ae 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java @@ -152,14 +152,4 @@ public interface EdFileInfoService { */ ElectromagneticResult detail(String id); - /** - * 文件上传并建立关系 - * - * @param parentId - * @param id 主文件Id - * @param file - * @param descrption 关系描述 - * @return - */ - ElectromagneticResult uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java index b7205d0..e284556 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java @@ -1,7 +1,9 @@ package com.electromagnetic.industry.software.manage.service; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; import com.electromagnetic.industry.software.manage.pojo.resp.FileRelationViewVO; +import org.springframework.web.multipart.MultipartFile; public interface EdFileRelationService { @@ -33,4 +35,15 @@ public interface EdFileRelationService { * @return */ Boolean checkNameUnique(String parentId, String fileName); + + /** + * 文件上传并建立关系 + * + * @param parentId + * @param id 主文件Id + * @param file + * @param descrption 关系描述 + * @return + */ + ElectromagneticResult uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 1b96393..691e1e6 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -72,8 +72,6 @@ public class EdFileInfoServiceImpl extends ServiceImpl uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption) { - - 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(), "层级目录不允许上传文件"); - 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) - .eq(EdFileInfo::getFileName, mainName) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) - .eq(EdFileInfo::getFileType, suffix)); - if (count > 0) { - handUploadRepeatFile(parentId, file, 3); - } else { - EdFileInfo parentFolderInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) - .eq(EdFileInfo::getId, parentId) - .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); - - String codePathByDbPath = commonService.getCodePathByDbPath(parentFolderInfo.getFilePath()); - String fileCode = commonService.createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime()); - newEdFileInfo.setParentId(parentId) - .setFileCode(fileCode) - .setFileName(mainName) - .setFileType(suffix) - .setFileVersion(FILE_START_VERSION) - .setFileSize(file.getSize()) - .setFilePath(parentFolderInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newEdFileInfo.getId()) - .setDataType(EleDataTypeEnum.FILE.code) - .setDataStatus(PublishEnum.PUBLISHED.getCode()) - .setEffectFlag(EffectFlagEnum.EFFECT.code) - .setFileCode(fileCode) - .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) - .setPrjDir(false); - this.saveOrUpdate(newEdFileInfo); - String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath()); - fileSystemService.save(file.getInputStream(), fileDestPath); - - // 创建文件关系 - EdFileRelation relation = new EdFileRelation(); - relation.setId1(id); - relation.setId2(newEdFileInfo.getId()); - relation.setRelationship(descrption); - edFileRelationService.createRelation(relation); - } - } 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.saveOrUpdate(newEdFileInfo); - String info = "上传文件失败"; - log.error(info, e); - throw new BizException(-1, info); - } - return ElectromagneticResultUtil.success(true); - } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java index 9523650..572b6e2 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java @@ -6,11 +6,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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; -import com.electromagnetic.industry.software.common.util.EleCommonUtil; -import com.electromagnetic.industry.software.common.util.IdWorker; -import com.electromagnetic.industry.software.common.util.UserThreadLocal; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.*; import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper; import com.electromagnetic.industry.software.manage.mapper.EdFileRelationMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; @@ -19,15 +20,17 @@ import com.electromagnetic.industry.software.manage.pojo.models.Edge; import com.electromagnetic.industry.software.manage.pojo.resp.FileRelationViewVO; import com.electromagnetic.industry.software.manage.pojo.resp.FileSimpleInfoVO; import com.electromagnetic.industry.software.manage.service.EdFileRelationService; +import com.electromagnetic.industry.software.manage.service.FileSystemService; import org.springframework.beans.BeanUtils; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.util.*; -import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.NAME_VALID_MSG; +import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.*; @Service public class EdFileRelationServiceImpl extends ServiceImpl implements EdFileRelationService { @@ -36,6 +39,11 @@ public class EdFileRelationServiceImpl extends ServiceImpl uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption) { + + Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), NAME_VALID_MSG); + EdFileInfo fileInfo = edFileInfoService.getById(parentId); + Assert.isTrue(fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code) && !fileInfo.getPrjDir(), "层级目录不允许上传文件"); + 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 = edFileInfoService.count(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getParentId, parentId) + .eq(EdFileInfo::getFileName, mainName) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .eq(EdFileInfo::getFileType, suffix)); + if (count > 0) { + edFileInfoService.handUploadRepeatFile(parentId, file, 3); + } else { + EdFileInfo parentFolderInfo = edFileInfoService.getOne(Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getId, parentId) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); + + String codePathByDbPath = commonService.getCodePathByDbPath(parentFolderInfo.getFilePath()); + String fileCode = commonService.createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime()); + newEdFileInfo.setParentId(parentId) + .setFileCode(fileCode) + .setFileName(mainName) + .setFileType(suffix) + .setFileVersion(FILE_START_VERSION) + .setFileSize(file.getSize()) + .setFilePath(parentFolderInfo.getFilePath() + MYSQL_FILE_PATH_SPLIT + newEdFileInfo.getId()) + .setDataType(EleDataTypeEnum.FILE.code) + .setDataStatus(PublishEnum.PUBLISHED.getCode()) + .setEffectFlag(EffectFlagEnum.EFFECT.code) + .setFileCode(fileCode) + .setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code) + .setPrjDir(false); + edFileInfoService.saveOrUpdate(newEdFileInfo); + String fileDestPath = commonService.getFileSysPath(newEdFileInfo.getFilePath()); + fileSystemService.save(file.getInputStream(), fileDestPath); + + // 创建文件关系 + EdFileRelation relation = new EdFileRelation(); + relation.setId1(id); + relation.setId2(newEdFileInfo.getId()); + relation.setRelationship(descrption); + createRelation(relation); + } + } 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); + edFileInfoService.saveOrUpdate(newEdFileInfo); + String info = "上传文件失败"; + log.error(info, e); + throw new BizException(-1, info); + } + return ElectromagneticResultUtil.success(true); + } }