Compare commits

...

2 Commits

5 changed files with 107 additions and 99 deletions

View File

@ -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));
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -72,8 +72,6 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
private Environment environment;
@Resource
private PermissionService permissionService;
@Resource
private EdFileRelationService edFileRelationService;
private String downloadDataDir = "";
private String uploadDataDir = "";
@ -1068,84 +1066,4 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
return destColibPath;
}
/**
* 文件上传
*
* @param parentId
* @param id 主文件Id
* @param file
* @param descrption 关系描述
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> 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);
}
}

View File

@ -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<EdFileRelationMapper, EdFileRelation> implements EdFileRelationService {
@ -36,6 +39,11 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
EdFileInfoMapper edFileInfoMapper;
@Resource
EdFileInfoServiceImpl edFileInfoService;
@Resource
private CommonService commonService;
private final EleLog log = new EleLog(EdFileInfoServiceImpl.class);
@Resource
private FileSystemService fileSystemService;
/**
* 创建文件关系
@ -161,6 +169,87 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
}
return edges;
}
/**
* 文件上传
*
* @param parentId
* @param id 主文件Id
* @param file
* @param descrption 关系描述
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> 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);
}
}