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 implements IServiceTransportFileService { /** * 查询供者转运登记附件列表 * * @param serviceTransportFile 供者转运登记附件 * @return 供者转运登记附件 */ @Override public List queryList(ServiceTransportFile serviceTransportFile) { LambdaQueryWrapper 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 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 annexfilesList, Long reportId,String caseNo,String updateName) { // 先将数据查出来 List list = list(new LambdaQueryWrapper().eq(ServiceTransportFile::getTransportId, reportId)); // 提取现有记录的路径集合,用于高效比较 Set existingPaths = list.stream().map(file -> file.getFileName() != null ? file.getPath().trim() : "").filter(StringUtils::isNotEmpty).collect(Collectors.toSet()); // 提取待处理路径集合 Set 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; } }