-解决循环依赖问题
-建立关系处添加文件上传类型
This commit is contained in:
s2042968 2025-04-17 10:17:29 +08:00
parent a7c19b1c93
commit 419d3f0a9e
7 changed files with 66 additions and 72 deletions

View File

@ -10,7 +10,8 @@ import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation;
import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest; import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO; import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO;
import com.electromagnetic.industry.software.manage.service.serviceimpl.EdFileRelationServiceImpl; import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.EdFileRelationService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -20,8 +21,10 @@ import org.springframework.web.multipart.MultipartFile;
public class RepoEdFileRelationController { public class RepoEdFileRelationController {
@Resource @Resource
EdFileRelationServiceImpl edFileRelationService; EdFileRelationService edFileRelationService;
@Resource
EdFileInfoService edFileInfoService;
/** /**
* 创建文件关系 * 创建文件关系
* *
@ -91,6 +94,6 @@ public class RepoEdFileRelationController {
@RequestParam("file") MultipartFile file, @RequestParam("file") MultipartFile file,
@RequestParam("description") String description, @RequestParam("description") String description,
@RequestParam("id") String id) { @RequestParam("id") String id) {
return ElectromagneticResultUtil.success(edFileRelationService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.SYS_FILE.code)); return ElectromagneticResultUtil.success(edFileInfoService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.REPO_FILE.code));
} }
} }

View File

@ -10,7 +10,8 @@ import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation;
import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest; import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO; import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO;
import com.electromagnetic.industry.software.manage.service.serviceimpl.EdFileRelationServiceImpl; import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.EdFileRelationService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -20,7 +21,9 @@ import org.springframework.web.multipart.MultipartFile;
public class SysEdFileRelationController { public class SysEdFileRelationController {
@Resource @Resource
EdFileRelationServiceImpl edFileRelationService; EdFileRelationService edFileRelationService;
@Resource
EdFileInfoService edFileInfoService;
/** /**
* 创建文件关系 * 创建文件关系
@ -91,6 +94,6 @@ public class SysEdFileRelationController {
@RequestParam("file") MultipartFile file, @RequestParam("file") MultipartFile file,
@RequestParam("description") String description, @RequestParam("description") String description,
@RequestParam("id") String id) { @RequestParam("id") String id) {
return ElectromagneticResultUtil.success(edFileRelationService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.SYS_FILE.code)); return ElectromagneticResultUtil.success(edFileInfoService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.SYS_FILE.code));
} }
} }

View File

@ -10,6 +10,8 @@ import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation; import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation;
import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest; import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO; import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.EdFileRelationService;
import com.electromagnetic.industry.software.manage.service.serviceimpl.EdFileRelationServiceImpl; import com.electromagnetic.industry.software.manage.service.serviceimpl.EdFileRelationServiceImpl;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -20,7 +22,9 @@ import org.springframework.web.multipart.MultipartFile;
public class UserEdFileRelationController { public class UserEdFileRelationController {
@Resource @Resource
EdFileRelationServiceImpl edFileRelationService; EdFileRelationService edFileRelationService;
@Resource
EdFileInfoService edFileInfoService;
/** /**
* 创建文件关系 * 创建文件关系
@ -91,6 +95,6 @@ public class UserEdFileRelationController {
@RequestParam("file") MultipartFile file, @RequestParam("file") MultipartFile file,
@RequestParam("description") String description, @RequestParam("description") String description,
@RequestParam("id") String id) { @RequestParam("id") String id) {
return ElectromagneticResultUtil.success(edFileRelationService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.SYS_FILE.code)); return ElectromagneticResultUtil.success(edFileInfoService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.USER_FILE.code));
} }
} }

View File

@ -197,14 +197,6 @@ public interface EdFileInfoService {
*/ */
void resetFileInfoName(EdFileInfo fileInfo); void resetFileInfoName(EdFileInfo fileInfo);
/**
* 判断是否是文件夹
*
* @param id
* @return
*/
public boolean isFolder(String id);
/** /**
* 添加收藏 * 添加收藏
* *
@ -240,4 +232,15 @@ public interface EdFileInfoService {
* @return * @return
*/ */
IPage<FileInfoVO> findFavorite(String userId, FileInfoQueryDTO fileInfoQueryDTO); IPage<FileInfoVO> findFavorite(String userId, FileInfoQueryDTO fileInfoQueryDTO);
/**
* 文件上传并建立关系
*
* @param parentId
* @param id 主文件Id
* @param file
* @param desc 关系描述
* @return
*/
ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String desc, int dataOwnCode);
} }

View File

@ -40,14 +40,4 @@ public interface EdFileRelationService extends IService<EdFileRelation> {
*/ */
Boolean checkNameExist(CheckNameUniqueRequest checkNameUniqueRequest); Boolean checkNameExist(CheckNameUniqueRequest checkNameUniqueRequest);
/**
* 文件上传并建立关系
*
* @param parentId
* @param id 主文件Id
* @param file
* @param desc 关系描述
* @return
*/
ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String desc, int dataOwnCode);
} }

View File

@ -1453,19 +1453,6 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
return this.baseMapper.queryFileList(page, ids, queryDTO, saveStatus, effectFlag); return this.baseMapper.queryFileList(page, ids, queryDTO, saveStatus, effectFlag);
} }
/**
* 判断是否是文件夹
*
* @param id
* @return
*/
@Override
public boolean isFolder(String id) {
EdFileInfo fileInfo = this.baseMapper.selectById(id);
Assert.notNull(fileInfo, StrFormatter.format("文件不存在ID为{}", id));
return fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code);
}
/** /**
* 添加收藏 * 添加收藏
* *
@ -1579,4 +1566,31 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
return fileInfoVOIPage; return fileInfoVOIPage;
} }
/**
* 文件上传并建立关系
*
* @param parentId
* @param id 主文件Id
* @param file
* @param desc 关系描述
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String desc, int dataOwnCode) {
// 上传文件
ElectromagneticResult<?> uploadResult = upload(parentId, file, FileRepeatEnum.NEW.code, dataOwnCode);
Assert.notNull(uploadResult.getData(), "上传失败");
String relatedFileId = (String) uploadResult.getData();
// 创建文件关系
EdFileRelation relation = new EdFileRelation();
relation.newInit();
relation.setId1(id);
relation.setId2(relatedFileId);
relation.setRelationship(desc);
edFileRelationService.createRelation(relation);
UserThreadLocal.setSuccessInfo("", id, StrFormatter.format("建立了文件 {} 与文件 {} 的关系", id, relatedFileId));
return ElectromagneticResultUtil.success(true);
}
} }

View File

@ -1,7 +1,10 @@
package com.electromagnetic.industry.software.manage.service.serviceimpl; package com.electromagnetic.industry.software.manage.service.serviceimpl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.text.StrFormatter; import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -17,12 +20,12 @@ import com.electromagnetic.industry.software.manage.pojo.models.Edge;
import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest; import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest;
import com.electromagnetic.industry.software.manage.pojo.resp.FileRelationViewVO; import com.electromagnetic.industry.software.manage.pojo.resp.FileRelationViewVO;
import com.electromagnetic.industry.software.manage.pojo.resp.FileSimpleInfoVO; import com.electromagnetic.industry.software.manage.pojo.resp.FileSimpleInfoVO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.EdFileRelationService; import com.electromagnetic.industry.software.manage.service.EdFileRelationService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.*; import java.util.*;
@ -33,10 +36,6 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
@Resource @Resource
EdFileInfoMapper edFileInfoMapper; EdFileInfoMapper edFileInfoMapper;
@Resource
EdFileInfoServiceImpl edFileInfoService;
@Resource
private CommonService commonService;
/** /**
* 创建文件关系 * 创建文件关系
@ -51,7 +50,7 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
String queryId1 = edFileRelation.getId1(); String queryId1 = edFileRelation.getId1();
String queryId2 = edFileRelation.getId2(); String queryId2 = edFileRelation.getId2();
if (edFileInfoService.isFolder(queryId1) || edFileInfoService.isFolder(queryId2)) { if (isFolder(queryId1) || isFolder(queryId2)) {
throw new BizException("文件夹无法建立关系"); throw new BizException("文件夹无法建立关系");
} }
@ -173,7 +172,7 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
newEdFileInfo.newInit(); newEdFileInfo.newInit();
// 首先检查是否是同名文件 // 首先检查是否是同名文件
Assert.isTrue(EleCommonUtil.isFileNameValid(mainName + "." + suffix), NAME_VALID_MSG); Assert.isTrue(EleCommonUtil.isFileNameValid(mainName + "." + suffix), NAME_VALID_MSG);
long count = edFileInfoService.count(Wrappers.lambdaQuery(EdFileInfo.class) long count = edFileInfoMapper.selectCount(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getParentId, parentId) .eq(EdFileInfo::getParentId, parentId)
.eq(EdFileInfo::getFileName, mainName) .eq(EdFileInfo::getFileName, mainName)
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)
@ -201,32 +200,10 @@ public class EdFileRelationServiceImpl extends ServiceImpl<EdFileRelationMapper,
return edges; return edges;
} }
/** private boolean isFolder(String id) {
* 文件上传 EdFileInfo fileInfo = edFileInfoMapper.selectById(id);
* Assert.notNull(fileInfo, StrFormatter.format("文件不存在ID为{}", id));
* @param parentId return fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code);
* @param id 主文件Id
* @param file
* @param desc 关系描述
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String desc, int dataOwnCode) {
// 上传文件
ElectromagneticResult<?> uploadResult = edFileInfoService.upload(parentId, file, FileRepeatEnum.NEW.code, dataOwnCode);
Assert.notNull(uploadResult.getData(), "上传失败");
String relatedFileId = (String) uploadResult.getData();
// 创建文件关系
EdFileRelation relation = new EdFileRelation();
relation.newInit();
relation.setId1(id);
relation.setId2(relatedFileId);
relation.setRelationship(desc);
createRelation(relation);
UserThreadLocal.setSuccessInfo("", id, StrFormatter.format("建立了文件 {} 与文件 {} 的关系", id, relatedFileId));
return ElectromagneticResultUtil.success(true);
} }
} }