@@ -2,7 +2,6 @@ package com.sdm.data.service.impl;
import com.alibaba.fastjson2.JSONObject ;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper ;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils ;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper ;
import com.github.pagehelper.PageHelper ;
import com.github.pagehelper.PageInfo ;
@@ -13,6 +12,9 @@ import com.sdm.common.entity.constants.NumberConstants;
import com.sdm.common.entity.enums.ApprovalFileDataStatusEnum ;
import com.sdm.common.entity.enums.ApproveFileDataTypeEnum ;
import com.sdm.common.entity.req.data.CreateDirReq ;
import com.sdm.common.entity.req.data.DelDirReq ;
import com.sdm.common.entity.req.data.RenameDirReq ;
import com.sdm.data.model.req.RenameFileReq ;
import com.sdm.common.entity.req.project.DelNodeReq ;
import com.sdm.common.entity.req.project.RenameNodeReq ;
import com.sdm.common.entity.req.system.LaunchApproveReq ;
@@ -38,6 +40,7 @@ import com.sdm.data.service.impl.dataFileHandle.ApproveStrategyFactory;
import jakarta.servlet.http.HttpServletResponse ;
import lombok.extern.slf4j.Slf4j ;
import org.apache.commons.collections4.CollectionUtils ;
import org.apache.commons.lang3.ObjectUtils ;
import org.assertj.core.util.DateUtil ;
import org.jetbrains.annotations.NotNull ;
import org.springframework.beans.BeanUtils ;
@@ -115,7 +118,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}
try {
// 处理根目录创建逻辑(知识库根目录创建逻辑和项目节点目录创建)
if ( ObjectUtils . isNull ( req . getParDirId ( ) ) & & ObjectUtils . isNull ( req . getParentUuId ( ) ) ) {
if ( ObjectUtils . isEmpty ( req . getParDirId ( ) ) & & ObjectUtils . isEmpty ( req . getParentUuId ( ) ) ) {
return createRootDir ( req ) ;
} else {
// 处理子目录创建逻辑
@@ -231,7 +234,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
*/
public SdmResponse < ? > createRootDir ( CreateDirReq req ) {
if ( ObjectUtils . isNull ( req . getDirType ( ) ) ) {
if ( ObjectUtils . isEmpty ( req . getDirType ( ) ) ) {
return SdmResponse . failed ( " 请选择目录类型:1 知识库文件夹, 2 项目节点文件夹, 3 头像库文件夹, 4 仿真参数库文件夹,5 训练模型文件夹 " ) ;
}
@@ -302,7 +305,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}
FileMetadataInfo parDirInfo = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getId , parDirId ) . one ( ) ;
if ( ObjectUtils . isNull ( parDirInfo ) ) {
if ( ObjectUtils . isEmpty ( parDirInfo ) ) {
return SdmResponse . failed ( " 上级目录不存在 " ) ;
}
@@ -478,7 +481,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
deleteDirMetadataInfo = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getId , req . getDelDirId ( ) ) . one ( ) ;
}
if ( ObjectUtils . isNull ( deleteDirMetadataInfo ) ) {
if ( ObjectUtils . isEmpty ( deleteDirMetadataInfo ) ) {
return SdmResponse . failed ( " 目录不存在 " ) ;
}
@@ -502,7 +505,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
// minio文件系统批量删除文件
minioService . deleteDirectoryRecursively ( dirMinioObjectKey ) ;
if ( ObjectUtils . isNotNull ( req . getDelUuid ( ) ) & & ObjectUtils . isNotNull ( req . getDelUuIdOwnType ( ) ) ) {
if ( ObjectUtils . isNotEmpty ( req . getDelUuid ( ) ) & & ObjectUtils . isNotEmpty ( req . getDelUuIdOwnType ( ) ) ) {
DelNodeReq delNodeReq = new DelNodeReq ( ) ;
delNodeReq . setUuid ( req . getDelUuid ( ) ) ;
delNodeReq . setUuidOwnType ( req . getDelUuIdOwnType ( ) ) ;
@@ -527,7 +530,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
try {
Long delFileId = req . getDelFileId ( ) ;
FileMetadataInfo deleteFileMetadataInfo = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getId , delFileId ) . one ( ) ;
if ( ObjectUtils . isNull ( deleteFileMetadataInfo ) ) {
if ( ObjectUtils . isEmpty ( deleteFileMetadataInfo ) ) {
return SdmResponse . failed ( " 文件不存在 " ) ;
}
@@ -559,10 +562,10 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
public SdmResponse fileSearch ( FileSearchReq minioFileSearchReq ) {
FileMetadataInfo fileMetadataInfo = null ;
if ( ObjectUtils . isNotNull ( minioFileSearchReq . getParentUuid ( ) ) ) {
if ( ObjectUtils . isNotEmpty ( minioFileSearchReq . getParentUuid ( ) ) ) {
// 项目节点下搜索文件
fileMetadataInfo = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getRelatedResourceUuid , minioFileSearchReq . getParentUuid ( ) ) . one ( ) ;
} else if ( ObjectUtils . isNotNull ( minioFileSearchReq . getParentDirId ( ) ) ) {
} else if ( ObjectUtils . isNotEmpty ( minioFileSearchReq . getParentDirId ( ) ) ) {
// 知识库的文件查询
fileMetadataInfo = fileMetadataInfoService . getById ( minioFileSearchReq . getParentDirId ( ) ) ;
}
@@ -633,9 +636,9 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
return SdmResponse . success ( ) ;
}
List < FileMetadataInfo > list = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getParentId , parentId )
. eq ( ObjectUtils . isNotNull ( req . getUploadUserId ( ) ) , FileMetadataInfo : : getCreatorId , req . getUploadUserId ( ) )
. eq ( ObjectUtils . isNotNull ( req . getQueryTarget ( ) ) , FileMetadataInfo : : getDataType , req . getQueryTarget ( ) )
. like ( ObjectUtils . isNotNull ( req . getFileName ( ) ) , FileMetadataInfo : : getOriginalName , req . getFileName ( ) )
. eq ( ObjectUtils . isNotEmpty ( req . getUploadUserId ( ) ) , FileMetadataInfo : : getCreatorId , req . getUploadUserId ( ) )
. eq ( ObjectUtils . isNotEmpty ( req . getQueryTarget ( ) ) , FileMetadataInfo : : getDataType , req . getQueryTarget ( ) )
. like ( ObjectUtils . isNotEmpty ( req . getFileName ( ) ) , FileMetadataInfo : : getOriginalName , req . getFileName ( ) )
. eq ( FileMetadataInfo : : getIsLatest , Constants . FileIsLast . YES . getValue ( ) )
. list ( ) ;
if ( ObjectUtils . isEmpty ( list ) ) {
@@ -725,7 +728,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
@Transactional ( rollbackFor = Exception . class )
public SdmResponse updatePermission ( UpdatePermissionReq req ) {
Map < Long , Byte > userPermissions = req . getUserPermissions ( ) ;
if ( ObjectUtils . isNull ( userPermissions ) ) return SdmResponse . failed ( " 参数错误,缺少userPermissions参数 " ) ;
if ( ObjectUtils . isEmpty ( userPermissions ) ) return SdmResponse . failed ( " 参数错误,缺少userPermissions参数 " ) ;
Long fileId = req . getFileId ( ) ;
FileMetadataInfo fileMetadataInfo = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getId , fileId ) . one ( ) ;
@@ -831,10 +834,17 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
@Override
public SdmResponse renameDirNew ( RenameDirReq req ) {
FileMetadataInfo dirMetadataInfo = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getId , req . getDirId ( ) ) . one ( ) ;
if ( dirMetadataInfo = = null ) {
FileMetadataInfo dirMetadataInfo = null ;
if ( ObjectUtils . isNotEmpty ( req . getUuid ( ) ) ) {
dirMetadataInfo = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getRelatedResourceUuid , req . getUuid ( ) ) . one ( ) ;
} else {
dirMetadataInfo = fileMetadataInfoService . lambdaQuery ( ) . eq ( FileMetadataInfo : : getId , req . getDirId ( ) ) . one ( ) ;
}
if ( ObjectUtils . isEmpty ( dirMetadataInfo ) ) {
return SdmResponse . failed ( " 文件夹不存在 " ) ;
}
String oldDirMinioObjectKey = dirMetadataInfo . getObjectKey ( ) ;
boolean hasWritePermission = fileUserPermissionService . hasFilePermission ( dirMetadataInfo . getId ( ) , ThreadLocalContext . getUserId ( ) , Constants . FilePermission . WRITE ) ;
@@ -848,7 +858,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
minioService . renameFile ( oldDirMinioObjectKey , newDirMinioObjectKey ) ;
fileMetadataInfoService . lambdaUpdate ( ) . set ( FileMetadataInfo : : getObjectKey , newDirMinioObjectKey ) . set ( FileMetadataInfo : : getOriginalName , req . getNewName ( ) ) . eq ( FileMetadataInfo : : getId , dirMetadataInfo . getId ( ) ) . update ( ) ;
if ( ObjectUtils . isNotNull ( req . getUuid ( ) ) & & ObjectUtils . isNotNull ( req . getUuIdOwnType ( ) ) ) {
if ( ObjectUtils . isNotEmpty ( req . getUuid ( ) ) & & ObjectUtils . isNotEmpty ( req . getUuIdOwnType ( ) ) ) {
RenameNodeReq renameNodeReq = new RenameNodeReq ( ) ;
renameNodeReq . setUuid ( req . getUuid ( ) ) ;
renameNodeReq . setUuidOwnType ( req . getUuIdOwnType ( ) ) ;
@@ -972,6 +982,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
fileInfo . setApproveType ( ApproveFileDataTypeEnum . UPLOAD_REVIEWING . getCode ( ) ) ;
fileMetadataInfoService . save ( fileInfo ) ;
// 需要保存文件的历史版本记录, 同一文件的所有版本共享一个ID,
fileInfo . setFileGroupId ( fileInfo . getId ( ) ) ;
fileMetadataInfoService . updateById ( fileInfo ) ;
// 调用审批流,开启审批; 上面先入库拿到主键id,审批流创建失败后再回退数据
@@ -1033,7 +1044,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
@Override
public SdmResponse < List < FileMetadataInfoResp > > listDir ( Integer dirType , Long parentDirId ) {
try {
if ( ObjectUtils . isNull ( dirType ) ) {
if ( ObjectUtils . isEmpty ( dirType ) ) {
return SdmResponse . failed ( " 请选择目录类型:1 知识库文件夹, 2 项目节点文件夹, 3 头像库文件夹, 4 仿真参数库文件夹,5 训练模型文件夹 " ) ;
}
@@ -1090,7 +1101,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
Long fileGroupId = fileMetadataInfo . getFileGroupId ( ) ;
Long versionNo = fileMetadataInfo . getVersionNo ( ) ;
// 修改待审批的元数据主键id
if ( ObjectUtils . isNull ( req . getFile ( ) ) ) {
if ( ObjectUtils . isEmpty ( req . getFile ( ) ) ) {
FileMetadataInfo tempFileMetadataInfo = new FileMetadataInfo ( ) ;
BeanUtils . copyProperties ( fileMetadataInfo , tempFileMetadataInfo ) ;
// 不需要上传minio新文件, 只更新文件元数据