package cn.cslg.pas.service.novelty; import cn.cslg.pas.common.dto.NoveltyProjectDTO.NoveltyReportReferenceDTO; import cn.cslg.pas.common.dto.NoveltyProjectDTO.NoveltyReportReferenceQueryDTO; import cn.cslg.pas.common.dto.business.GetReferencesDTO; import cn.cslg.pas.common.model.cronModel.Records; import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyReferencesVO; import cn.cslg.pas.common.vo.business.ReferencesVO; import cn.cslg.pas.domain.business.References; import cn.cslg.pas.domain.business.ReportTemple; import cn.cslg.pas.domain.business.novelty.NoveltyReportTemplate; import cn.cslg.pas.service.business.ReferencesService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.cslg.pas.domain.business.novelty.NoveltyReportReferences; import cn.cslg.pas.mapper.novelty.NoveltyReportReferencesMapper; import lombok.RequiredArgsConstructor; import org.apache.poi.hslf.record.Record; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @author admin * @description 针对表【novelty_report_references(查新报告文档)】的数据库操作Service实现 * @createDate 2024-09-30 15:33:57 */ @Service @RequiredArgsConstructor public class NoveltyReportReferencesService extends ServiceImpl { private final NoveltyReportTemplateService noveltyReportTemplateService; private final ReferencesService referencesService; public Integer addOrUpdate(NoveltyReportReferenceDTO noveltyReportReferenceDTO) { Integer id = noveltyReportReferenceDTO.getId(); if (id != null) { return this.updateReference(noveltyReportReferenceDTO); } else { return this.addReference(noveltyReportReferenceDTO); } } private Integer addReference(NoveltyReportReferenceDTO noveltyReportReferenceDTO) { Integer templateId = noveltyReportReferenceDTO.getTemplateId(); Integer projectId =noveltyReportReferenceDTO.getProjectId(); NoveltyReportTemplate noveltyReportTemplate = noveltyReportTemplateService.getById(templateId); String dataSource = noveltyReportReferenceDTO.getDataSource(); //添加附件 References references = new References(); references.setReferencesName(""); references.setProjectId(projectId); references.insert(); //添加查新报告附件 NoveltyReportReferences noveltyReportReferences = new NoveltyReportReferences(); noveltyReportReferences.setReportReferenceId(references.getId()); noveltyReportReferences.setIfHaveFinalFile(false); noveltyReportReferences.setTemplateId(templateId); noveltyReportReferences.setDataSource(dataSource); noveltyReportReferences.setConfigMessage(noveltyReportTemplate.getConfigMessage()); noveltyReportReferences.insert(); return references.getId(); } private Integer updateReference(NoveltyReportReferenceDTO noveltyReportReferenceDTO) { Integer templateId = noveltyReportReferenceDTO.getTemplateId(); String dataSource = noveltyReportReferenceDTO.getDataSource(); Integer id = noveltyReportReferenceDTO.getId(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(NoveltyReportReferences::getReportReferenceId, id); NoveltyReportReferences noveltyReportReferences = this.getOne(queryWrapper, false); noveltyReportReferences.setDataSource(dataSource); noveltyReportReferences.updateById(); return id; } public Integer addFinalReference(Integer id, String fileGuid) { References references = referencesService.getById(id); references.setFileGuid(fileGuid); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(NoveltyReportReferences::getReportReferenceId, id); NoveltyReportReferences noveltyReportReferences = this.getOne(queryWrapper, false); noveltyReportReferences.setIfHaveFinalFile(true); noveltyReportReferences.updateById(); return id; } public Records queryReference(NoveltyReportReferenceQueryDTO noveltyReportReferenceQueryDTO) { List noveltyReferencesVOS = new ArrayList<>(); GetReferencesDTO getReferencesDTO = new GetReferencesDTO(); BeanUtils.copyProperties(noveltyReportReferenceQueryDTO, getReferencesDTO); Records records = referencesService.query(getReferencesDTO); List referencesVOS = (List) records.getData(); List ids = referencesVOS.stream().map(ReferencesVO::getId).collect(Collectors.toList()); if (ids == null || ids.size() == 0) { records.setData(noveltyReferencesVOS); return records; } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(NoveltyReportReferences::getReportReferenceId, ids); List noveltyReportReferences = this.list(queryWrapper); referencesVOS.forEach(item -> { NoveltyReferencesVO noveltyReferencesVO = new NoveltyReferencesVO(); BeanUtils.copyProperties(item, noveltyReferencesVO); NoveltyReportReferences noveltyReportReference = noveltyReportReferences.stream().filter(tem -> tem.getReportReferenceId().equals(item.getId())).findFirst().orElse(null); if (noveltyReportReference != null) { noveltyReferencesVO.setIfHaveFinalFile(noveltyReportReference.getIfHaveFinalFile()); noveltyReferencesVO.setDataSource(noveltyReportReference.getDataSource()); noveltyReferencesVO.setConfigMessage(noveltyReportReference.getConfigMessage()); } noveltyReferencesVOS.add(noveltyReferencesVO); }); records.setData(referencesVOS); return records; } public List delete(List ids){ //删除文件 referencesService.removeBatchByIds(ids); //删除 LambdaQueryWrapper queryWrapper =new LambdaQueryWrapper<>(); queryWrapper.in(NoveltyReportReferences::getReportReferenceId,ids); this.remove(queryWrapper); return ids; } }