yanghb
2024-12-18 5daff3511eb027b6ad22c70c4de080cadc6def47
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
package com.zzg.system.service.state.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzg.common.core.domain.BaseEntity;
import com.zzg.common.core.domain.entity.state.StateProjectCollectionFile;
import com.zzg.common.enums.CollectionFileEnum;
import com.zzg.common.enums.DeleteFlagEnum;
import com.zzg.system.convert.StateProjectConvert;
import com.zzg.system.domain.bo.FileBO;
import com.zzg.system.domain.bo.UploadFileBO;
import com.zzg.system.domain.vo.ParentCollectionFileVO;
import com.zzg.system.mapper.state.StateProjectCollectionFileMapper;
import com.zzg.system.service.state.StateProjectCollectionFileService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
 
import java.util.*;
import java.util.stream.Collectors;
 
@Service
@RequiredArgsConstructor
public class StateProjectCollectionFileServiceImpl extends ServiceImpl<StateProjectCollectionFileMapper, StateProjectCollectionFile> implements StateProjectCollectionFileService {
// Create
    public void create(StateProjectCollectionFile file) {
        this.save(file);
    }
 
    // Read
    @Override
    public List<StateProjectCollectionFile> getByProjectIdAndType(String projectId, Integer fileType, Boolean isBefore) {
        LambdaQueryWrapper<StateProjectCollectionFile> queryWrapper = new LambdaQueryWrapper<>();
        if (StringUtils.isNotBlank(projectId)) {
            queryWrapper.eq(StateProjectCollectionFile::getProjectId, projectId);
        } else {
            queryWrapper.isNull(StateProjectCollectionFile::getProjectId);
        }
        queryWrapper
                .eq(StateProjectCollectionFile::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey())
                .eq(StateProjectCollectionFile::getFileType, fileType)
                .and(
                        qw -> qw.isNotNull(StateProjectCollectionFile::getParentId)
                                .or()
                                .ne(StateProjectCollectionFile::getParentId, "0"));
        if (Boolean.TRUE.equals(isBefore)) {
            queryWrapper.le(StateProjectCollectionFile::getFileType, 12);
        }
        return this.list(queryWrapper);
    }
 
    @Override
    public List<ParentCollectionFileVO> getParentCollectionFile(Boolean isBefore) {
        LambdaQueryWrapper<StateProjectCollectionFile> queryWrapper = new LambdaQueryWrapper<>();
 
        List<Integer> fileTypeList = Arrays.stream(CollectionFileEnum.values())
                .map(CollectionFileEnum::getCode)
                .collect(Collectors.toList());
 
        int threshold = 12;
        fileTypeList = fileTypeList.stream()
                .filter(e -> Boolean.TRUE.equals(isBefore) == (e <= threshold))
                .collect(Collectors.toList());
 
 
 
        queryWrapper.in(StateProjectCollectionFile::getFileType, fileTypeList)
                .and(qw -> qw.isNull(StateProjectCollectionFile::getParentId).or().eq(StateProjectCollectionFile::getParentId, "0"))
                .isNull(StateProjectCollectionFile::getProjectId)
                .orderByAsc(StateProjectCollectionFile::getFileType);
        List<StateProjectCollectionFile> list = list(queryWrapper);
        if (CollectionUtils.isEmpty(list)) {
            return Collections.emptyList();
        }
        List<ParentCollectionFileVO> voList = new ArrayList<>();
        ParentCollectionFileVO vo;
        for (StateProjectCollectionFile e : list) {
            vo = new ParentCollectionFileVO();
            vo.setUpdateTime(e.getUpdateTime());
            vo.setFileType(e.getFileType());
            vo.setMaterialName(CollectionFileEnum.getDescription(e.getFileType()));
            voList.add(vo);
        }
        return voList;
    }
 
    @Override
    public Boolean addCollectionFile(UploadFileBO uploadFileBO) {
        List<FileBO> files = uploadFileBO.getFileBOList();
 
        StateProjectCollectionFile stateProjectCollectionFile;
        List<StateProjectCollectionFile> collectionFileList = new ArrayList<>();
 
        for (FileBO filefileBO : files) {
            stateProjectCollectionFile = StateProjectConvert.INSTANCE.uploadCollectionFileToEntity(uploadFileBO);
            stateProjectCollectionFile.setFileName(filefileBO.getOriginalFilename());
            stateProjectCollectionFile.setFileUrl(filefileBO.getUrl());
            collectionFileList.add(stateProjectCollectionFile);
        }
        List<Integer> fileTypeList = collectionFileList.stream().map(StateProjectCollectionFile::getFileType).collect(Collectors.toList());
        LambdaUpdateWrapper<StateProjectCollectionFile> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        lambdaUpdateWrapper.in(StateProjectCollectionFile::getFileType, fileTypeList)
                .and(qw -> qw.isNull(StateProjectCollectionFile::getParentId).or().eq(StateProjectCollectionFile::getParentId, "0"))
                .isNull(StateProjectCollectionFile::getProjectId)
                .set(BaseEntity::getUpdateTime, new Date());
        update(lambdaUpdateWrapper);
        return saveOrUpdateBatch(collectionFileList);
    }
 
    // Update
    public void update(StateProjectCollectionFile file) {
        this.updateById(file);
    }
 
    // Delete
    public void delete(Integer fileId) {
        this.removeById(fileId);
    }
}