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.mapper.ServiceDonatebaseinfoReportFileMapper;
|
import com.ruoyi.project.service.IServiceDonatebaseinfoReportFileService;
|
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 ServiceDonatebaseinfoReportFileServiceImpl extends ServiceImpl<ServiceDonatebaseinfoReportFileMapper, ServiceDonatebaseinfoReportFile> implements IServiceDonatebaseinfoReportFileService {
|
|
|
/**
|
* 查询案例上报附件列表
|
*
|
* @param serviceDonatebaseinfoReportFile 案例上报附件
|
* @return 案例上报附件
|
*/
|
@Override
|
public List<ServiceDonatebaseinfoReportFile> queryList(ServiceDonatebaseinfoReportFile serviceDonatebaseinfoReportFile) {
|
LambdaQueryWrapper<ServiceDonatebaseinfoReportFile> wrappers = Wrappers.lambdaQuery();
|
if (serviceDonatebaseinfoReportFile.getDonatebaseinfoReportId() != null) {
|
wrappers.eq(ServiceDonatebaseinfoReportFile::getDonatebaseinfoReportId, serviceDonatebaseinfoReportFile.getDonatebaseinfoReportId());
|
}
|
if (StringUtils.isNotBlank(serviceDonatebaseinfoReportFile.getFileName())) {
|
wrappers.eq(ServiceDonatebaseinfoReportFile::getFileName, serviceDonatebaseinfoReportFile.getFileName());
|
}
|
if (StringUtils.isNotBlank(serviceDonatebaseinfoReportFile.getType())) {
|
wrappers.eq(ServiceDonatebaseinfoReportFile::getType, serviceDonatebaseinfoReportFile.getType());
|
}
|
if (StringUtils.isNotBlank(serviceDonatebaseinfoReportFile.getPath())) {
|
wrappers.eq(ServiceDonatebaseinfoReportFile::getPath, serviceDonatebaseinfoReportFile.getPath());
|
}
|
if (StringUtils.isNotBlank(serviceDonatebaseinfoReportFile.getRemart())) {
|
wrappers.eq(ServiceDonatebaseinfoReportFile::getRemart, serviceDonatebaseinfoReportFile.getRemart());
|
}
|
if (StringUtils.isNotBlank(serviceDonatebaseinfoReportFile.getCaseNo())) {
|
wrappers.eq(ServiceDonatebaseinfoReportFile::getCaseNo, serviceDonatebaseinfoReportFile.getCaseNo());
|
}
|
return this.list(wrappers);
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public Boolean addList(List<ServiceDonatebaseinfoReportFile> serviceDonatebaseinfoReportFiles,String caseNo,String createName) {
|
boolean save = false;
|
if (CollectionUtils.isNotEmpty(serviceDonatebaseinfoReportFiles)) {
|
for (ServiceDonatebaseinfoReportFile serviceDonatebaseinfoReportFile : serviceDonatebaseinfoReportFiles) {
|
serviceDonatebaseinfoReportFile.setCreateTime(new Date());
|
serviceDonatebaseinfoReportFile.setCreateBy(createName);
|
serviceDonatebaseinfoReportFile.setCaseNo(caseNo);
|
serviceDonatebaseinfoReportFile.setCreateTime(new Date());
|
save = save(serviceDonatebaseinfoReportFile);
|
}
|
}
|
return save;
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public Boolean updateList(List<ServiceDonatebaseinfoReportFile> serviceDonatebaseinfoReportFiles, Long reportId,String caseNo,String updateName) {
|
// 先将数据查出来
|
List<ServiceDonatebaseinfoReportFile> list = list(new LambdaQueryWrapper<ServiceDonatebaseinfoReportFile>().eq(ServiceDonatebaseinfoReportFile::getDonatebaseinfoReportId, reportId));
|
|
// 提取现有记录的路径集合,用于高效比较
|
Set<String> existingPaths = list.stream().map(file -> StringUtils.isNotEmpty(file.getFileName()) ? file.getFileName().trim() : "").filter(StringUtils::isNotEmpty).collect(Collectors.toSet());
|
|
// 提取待处理路径集合
|
Set<String> newPathSet = serviceDonatebaseinfoReportFiles.stream().map(serviceDonatebaseinfoReportFile -> StringUtils.isNotEmpty(serviceDonatebaseinfoReportFile.getFileName()) ? serviceDonatebaseinfoReportFile.getFileName().trim() : "").filter(StringUtils::isNotEmpty).collect(Collectors.toSet());
|
|
boolean result = true;
|
|
// 标记需要删除的记录(存在于数据库但不在新列表中)
|
for (ServiceDonatebaseinfoReportFile file : list) {
|
if (StringUtils.isNotEmpty(file.getPath()) && !newPathSet.contains(file.getPath().trim())) {
|
file.setDelFlag(1);
|
file.setUpdateTime(new Date());
|
file.setUpdateBy(updateName);
|
result &= updateById(file);
|
}
|
}
|
|
// 添加新的记录
|
for (ServiceDonatebaseinfoReportFile serviceDonatebaseinfoReportFile : serviceDonatebaseinfoReportFiles) {
|
if (StringUtils.isNotEmpty(serviceDonatebaseinfoReportFile.getFileName()) && !existingPaths.contains(serviceDonatebaseinfoReportFile.getFileName().trim())) {
|
serviceDonatebaseinfoReportFile.setUpdateBy(updateName);
|
serviceDonatebaseinfoReportFile.setUpdateTime(new Date());
|
serviceDonatebaseinfoReportFile.setCaseNo(caseNo);
|
result &= save(serviceDonatebaseinfoReportFile);
|
}
|
}
|
|
return result;
|
}
|
}
|