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;
/**
*
* 文件关联关系表 服务实现类
*
*
* @author generator@TaoJie
* @since 2024-08-06
*/
@Service
public class LinFileReServiceImpl extends ServiceImpl implements LinFileReService {
@Autowired
private FileService fileService;
@Override
public List getByReIdType(String reid, FileReTypeEnum fileReTypeEnum) {
QueryWrapper fileReDOQueryWrapper=new QueryWrapper<>();
fileReDOQueryWrapper.lambda()
.eq(StringUtils.isNotBlank(reid),LinFileReDO::getReId,reid)
.eq(!Objects.isNull(fileReTypeEnum),LinFileReDO::getType,fileReTypeEnum.getCode());
final List fileReDOList = baseMapper.selectList(fileReDOQueryWrapper);
final List fileIds = fileReDOList.stream().map(fileReDO -> fileReDO.getFileId()).collect(Collectors.toList());
return fileIds;
}
@Override
public List getFileByReIdType(String reid, FileReTypeEnum fileReTypeEnum) {
if(StringUtils.isNotBlank(reid)){
final List fileIds = this.getByReIdType(reid, fileReTypeEnum);
if(!CollectionUtils.isEmpty(fileIds)){
final List fileDOS = fileService.getBaseMapper().selectBatchIds(fileIds);
return fileDOS;
}
}
return null;
}
@Transactional
@Override
public boolean saveFileReByReIdType(String reId,List ganteImgList, FileReTypeEnum fileReTypeEnum) {
// 甘特图
// 先删除甘特图信息
QueryWrapper linFileReDOQueryWrapper=new QueryWrapper<>();
linFileReDOQueryWrapper.lambda()
.eq(LinFileReDO::getReId,reId)
.eq(LinFileReDO::getType,fileReTypeEnum.getCode())
;
remove(linFileReDOQueryWrapper);
if(CollectionUtils.isEmpty(ganteImgList)) return false;
// 保存甘特图信息
final List 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 transFileToFileImageInfo(List fileList) {
if(!CollectionUtils.isEmpty(fileList)){
List 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 fileList, FileReTypeEnum fileReTypeEnum) {
QueryWrapper 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 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;
}
}