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;
|
}
|
|
|
}
|