tj
2025-06-05 2d549a04870d1315868a7cf19952b64e8071e711
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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;
    }
 
 
}