package com.cloudroam.service.impl;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.cloudroam.common.enumeration.FileReTypeEnum;
|
import com.cloudroam.dto.file.FileImageInfo;
|
import com.cloudroam.model.FileDO;
|
import com.cloudroam.model.LinFileReDO;
|
import com.cloudroam.mapper.LinFileReMapper;
|
import com.cloudroam.service.FileService;
|
import com.cloudroam.service.LinFileReService;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 文件关联关系表 服务实现类
|
* </p>
|
*
|
* @author generator@TaoJie
|
* @since 2024-08-06
|
*/
|
@Service
|
public class LinFileReServiceImpl extends ServiceImpl<LinFileReMapper, LinFileReDO> implements LinFileReService {
|
|
@Autowired
|
private FileService fileService;
|
|
@Override
|
public List<String> getByReIdType(String reid, FileReTypeEnum fileReTypeEnum) {
|
QueryWrapper<LinFileReDO> fileReDOQueryWrapper=new QueryWrapper<>();
|
fileReDOQueryWrapper.lambda()
|
.eq(StringUtils.isNotBlank(reid),LinFileReDO::getReId,reid)
|
.eq(!Objects.isNull(fileReTypeEnum),LinFileReDO::getType,fileReTypeEnum.getCode());
|
final List<LinFileReDO> fileReDOList = baseMapper.selectList(fileReDOQueryWrapper);
|
|
final List<String> fileIds = fileReDOList.stream().map(fileReDO -> fileReDO.getFileId()).collect(Collectors.toList());
|
return fileIds;
|
}
|
|
@Override
|
public List<FileDO> getFileByReIdType(String reid, FileReTypeEnum fileReTypeEnum) {
|
if(StringUtils.isNotBlank(reid)){
|
final List<String> fileIds = this.getByReIdType(reid, fileReTypeEnum);
|
if(!CollectionUtils.isEmpty(fileIds)){
|
final List<FileDO> fileDOS = fileService.getBaseMapper().selectBatchIds(fileIds);
|
return fileDOS;
|
}
|
}
|
return null;
|
}
|
|
@Transactional
|
@Override
|
public boolean saveFileReByReIdType(String reId,List<FileImageInfo> ganteImgList, FileReTypeEnum fileReTypeEnum) {
|
|
// 甘特图
|
// 先删除甘特图信息
|
QueryWrapper<LinFileReDO> linFileReDOQueryWrapper=new QueryWrapper<>();
|
linFileReDOQueryWrapper.lambda()
|
.eq(LinFileReDO::getReId,reId)
|
.eq(LinFileReDO::getType,fileReTypeEnum.getCode())
|
;
|
remove(linFileReDOQueryWrapper);
|
|
if(CollectionUtils.isEmpty(ganteImgList)) return false;
|
|
// 保存甘特图信息
|
final List<LinFileReDO> fileReDOList = ganteImgList.stream().map(fileImageInfo -> {
|
LinFileReDO linFileReDO = new LinFileReDO();
|
linFileReDO.setId(IdUtil.simpleUUID());
|
linFileReDO.setFileId(String.valueOf(fileImageInfo.getImgId()));
|
linFileReDO.setReId(reId);
|
linFileReDO.setType(fileReTypeEnum.getCode());
|
return linFileReDO;
|
}).collect(Collectors.toList());
|
saveBatch(fileReDOList);
|
return true;
|
}
|
|
@Override
|
public List<FileImageInfo> transFileToFileImageInfo(List<FileDO> fileList) {
|
if(!CollectionUtils.isEmpty(fileList)){
|
List<FileImageInfo> fileImageInfos=fileList.stream().map(fileDO -> {
|
FileImageInfo fileImageInfo=new FileImageInfo();
|
fileImageInfo.setId(String.valueOf(fileDO.getId()));
|
fileImageInfo.setImgId(Integer.valueOf(fileDO.getId()));
|
fileImageInfo.setDisplay(fileDO.getPath());
|
return fileImageInfo;
|
}).collect(Collectors.toList());
|
return fileImageInfos;
|
}else{
|
return null;
|
}
|
}
|
|
@Transactional
|
@Override
|
public boolean saveFileAnyReByReIdType(String reId, List<Integer> fileList, FileReTypeEnum fileReTypeEnum) {
|
|
QueryWrapper<LinFileReDO> removeWrapper=new QueryWrapper<>();
|
removeWrapper.lambda()
|
.eq(LinFileReDO::getReId,reId)
|
.eq(LinFileReDO::getType,fileReTypeEnum.getCode())
|
;
|
remove(removeWrapper);
|
|
if(CollectionUtils.isEmpty(fileList)) return false;
|
|
if(!CollectionUtils.isEmpty(fileList)){
|
List<LinFileReDO> fileReDOList = fileList.stream().map(file -> {
|
LinFileReDO fileReDO = new LinFileReDO();
|
fileReDO.setId(IdUtil.simpleUUID());
|
fileReDO.setFileId(String.valueOf(file));
|
fileReDO.setReId(reId);
|
fileReDO.setType(fileReTypeEnum.getCode());
|
return fileReDO;
|
}).collect(Collectors.toList());
|
if(!CollectionUtils.isEmpty(fileReDOList)){
|
return saveBatch(fileReDOList);
|
}
|
|
}
|
return true;
|
}
|
|
|
}
|