|
@@ -0,0 +1,131 @@
|
|
|
+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<NoveltyReportReferencesMapper, NoveltyReportReferences> {
|
|
|
+ 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();
|
|
|
+ NoveltyReportTemplate noveltyReportTemplate = noveltyReportTemplateService.getById(templateId);
|
|
|
+ String dataSource = noveltyReportReferenceDTO.getDataSource();
|
|
|
+ //添加附件
|
|
|
+ References references = new References();
|
|
|
+ references.setReferencesName("");
|
|
|
+ references.insert();
|
|
|
+ //添加查新报告附件
|
|
|
+ NoveltyReportReferences noveltyReportReferences = new NoveltyReportReferences();
|
|
|
+ noveltyReportReferences.setReportReferenceId(references.getId());
|
|
|
+ noveltyReportReferences.setIfHaveFinalFile(false);
|
|
|
+ noveltyReportReferences.setTemplateId(templateId);
|
|
|
+ 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<NoveltyReportReferences> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(NoveltyReportReferences::getReportReferenceId, id);
|
|
|
+ NoveltyReportReferences noveltyReportReferences = this.getOne(queryWrapper, false);
|
|
|
+ noveltyReportReferences.setDataSource(dataSource);
|
|
|
+ noveltyReportReferences.setDataSource(dataSource);
|
|
|
+ noveltyReportReferences.updateById();
|
|
|
+ return id;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer addFinalReference(Integer id, String fileGuid) {
|
|
|
+ References references = referencesService.getById(id);
|
|
|
+ references.setFileGuid(fileGuid);
|
|
|
+ LambdaQueryWrapper<NoveltyReportReferences> 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<NoveltyReferencesVO> noveltyReferencesVOS = new ArrayList<>();
|
|
|
+ GetReferencesDTO getReferencesDTO = new GetReferencesDTO();
|
|
|
+ BeanUtils.copyProperties(noveltyReportReferenceQueryDTO, getReferencesDTO);
|
|
|
+ Records records = referencesService.query(getReferencesDTO);
|
|
|
+ List<ReferencesVO> referencesVOS = (List<ReferencesVO>) records.getData();
|
|
|
+ List<Integer> ids = referencesVOS.stream().map(ReferencesVO::getId).collect(Collectors.toList());
|
|
|
+ if (ids == null || ids.size() == 0) {
|
|
|
+ records.setData(noveltyReferencesVOS);
|
|
|
+ return records;
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<NoveltyReportReferences> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(NoveltyReportReferences::getReportReferenceId, ids);
|
|
|
+ List<NoveltyReportReferences> 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<Integer> delete(List<Integer> ids){
|
|
|
+ //删除文件
|
|
|
+ referencesService.removeBatchByIds(ids);
|
|
|
+ //删除
|
|
|
+ LambdaQueryWrapper<NoveltyReportReferences> queryWrapper =new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(NoveltyReportReferences::getReportReferenceId,ids);
|
|
|
+
|
|
|
+ this.remove(queryWrapper);
|
|
|
+
|
|
|
+ return ids;
|
|
|
+ }
|
|
|
+}
|