liusheng
2025-12-26 2944ea778f0fc87c8e09ae47200d9de8069049e3
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
package com.ruoyi.project.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.domain.ServiceDonatebaseinfoReportFile;
import com.ruoyi.project.domain.ServiceTransportFile;
import com.ruoyi.project.mapper.ServiceTransportFileMapper;
import com.ruoyi.project.service.IServiceTransportFileService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
 
/**
 * 供者转运登记附件Service业务层处理
 *
 * @author ruoyi
 * @date 2025-12-15
 */
@Service
public class ServiceTransportFileServiceImpl extends ServiceImpl<ServiceTransportFileMapper, ServiceTransportFile> implements IServiceTransportFileService {
 
 
    /**
     * 查询供者转运登记附件列表
     *
     * @param serviceTransportFile 供者转运登记附件
     * @return 供者转运登记附件
     */
    @Override
    public List<ServiceTransportFile> queryList(ServiceTransportFile serviceTransportFile) {
        LambdaQueryWrapper<ServiceTransportFile> wrappers = Wrappers.lambdaQuery();
        if (serviceTransportFile.getTransportId() != null) {
            wrappers.eq(ServiceTransportFile::getTransportId, serviceTransportFile.getTransportId());
        }
        if (StringUtils.isNotBlank(serviceTransportFile.getFileName())) {
            wrappers.eq(ServiceTransportFile::getFileName, serviceTransportFile.getFileName());
        }
        if (StringUtils.isNotBlank(serviceTransportFile.getType())) {
            wrappers.eq(ServiceTransportFile::getType, serviceTransportFile.getType());
        }
        if (StringUtils.isNotBlank(serviceTransportFile.getPath())) {
            wrappers.eq(ServiceTransportFile::getPath, serviceTransportFile.getPath());
        }
        if (StringUtils.isNotBlank(serviceTransportFile.getRemart())) {
            wrappers.eq(ServiceTransportFile::getRemart, serviceTransportFile.getRemart());
        }
        if (StringUtils.isNotBlank(serviceTransportFile.getCaseNo())) {
            wrappers.eq(ServiceTransportFile::getCaseNo, serviceTransportFile.getCaseNo());
        }
        return this.list(wrappers);
    }
 
 
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Boolean addList(List<ServiceTransportFile> annexfilesList, Long transportId,String caseNo,String createName) {
        boolean save = false;
        if (CollectionUtils.isNotEmpty(annexfilesList)) {
            for (ServiceTransportFile serviceTransportFile : annexfilesList) {
                serviceTransportFile.setTransportId(transportId);
                serviceTransportFile.setCreateTime(new Date());
                serviceTransportFile.setCreateBy(createName);
                serviceTransportFile.setCaseNo(caseNo);
                save = save(serviceTransportFile);
            }
        }
        return save;
    }
 
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Boolean updateList(List<ServiceTransportFile> annexfilesList, Long reportId,String caseNo,String updateName) {
        // 先将数据查出来
        List<ServiceTransportFile> list = list(new LambdaQueryWrapper<ServiceTransportFile>().eq(ServiceTransportFile::getTransportId, reportId));
 
        // 提取现有记录的路径集合,用于高效比较
        Set<String> existingPaths = list.stream().map(file -> file.getFileName() != null ? file.getPath().trim() : "").filter(StringUtils::isNotEmpty).collect(Collectors.toSet());
 
        // 提取待处理路径集合
        Set<String> newPathSet = annexfilesList.stream().map(serviceTransportFile -> serviceTransportFile.getFileName() != null ? serviceTransportFile.getFileName().trim() : "").filter(StringUtils::isNotEmpty).collect(Collectors.toSet());
 
        boolean result = true;
 
        // 标记需要删除的记录(存在于数据库但不在新列表中)
        for (ServiceTransportFile file : list) {
            if (StringUtils.isNotEmpty(file.getFileName()) && !newPathSet.contains(file.getFileName().trim())) {
                file.setDelFlag(1);
                file.setUpdateTime(new Date());
                file.setUpdateBy(updateName);
                result &= updateById(file);
            }
        }
 
        // 添加新的记录(存在于新列表但不在数据库中)
        for (ServiceTransportFile serviceTransportFile : annexfilesList) {
            if (StringUtils.isNotEmpty(serviceTransportFile.getFileName()) && !existingPaths.contains(serviceTransportFile.getFileName().trim())) {
                serviceTransportFile.setTransportId(reportId);
                serviceTransportFile.setCreateBy(updateName);
                serviceTransportFile.setUpdateTime(new Date());
                result &= save(serviceTransportFile);
            }
        }
 
        return result;
    }
 
 
}