123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- 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.NoveltyProjectDTO.QueryNoveltyCompareRecordDTO;
- import cn.cslg.pas.common.dto.QuerySearchRecordDTO;
- import cn.cslg.pas.common.dto.TechnicalCaseIdDTO;
- import cn.cslg.pas.common.dto.business.GetReferencesDTO;
- import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
- import cn.cslg.pas.common.model.cronModel.PersonnelVO;
- import cn.cslg.pas.common.model.cronModel.Records;
- import cn.cslg.pas.common.model.cronModel.SystemFile;
- import cn.cslg.pas.common.model.request.QueryRequest;
- import cn.cslg.pas.common.model.request.StringRequest;
- import cn.cslg.pas.common.utils.*;
- import cn.cslg.pas.common.vo.CompareLiteratureVO;
- import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
- import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
- import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyReferencesVO;
- import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
- import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
- import cn.cslg.pas.common.vo.TechnicalCaseVO;
- 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.domain.es.Patent;
- import cn.cslg.pas.domain.es.PatentPerson;
- import cn.cslg.pas.factorys.noveltyTemplateFacotry.GetTemplateMapsImp;
- import cn.cslg.pas.factorys.noveltyTemplateFacotry.NoveltyTemplateFactory;
- import cn.cslg.pas.service.business.NoveltyProjectService;
- import cn.cslg.pas.service.business.ReferencesService;
- import cn.cslg.pas.service.business.TechnicalCaseService;
- import cn.cslg.pas.service.business.es.EsPatentService;
- 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.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Lazy;
- import org.springframework.stereotype.Service;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * @author admin
- * @description 针对表【novelty_report_references(查新报告文档)】的数据库操作Service实现
- * @createDate 2024-09-30 15:33:57
- */
- @Service
- @RequiredArgsConstructor(onConstructor_={@Lazy})
- public class NoveltyReportReferencesService extends ServiceImpl<NoveltyReportReferencesMapper, NoveltyReportReferences> {
- private final NoveltyReportTemplateService noveltyReportTemplateService;
- private final ReferencesService referencesService;
- private final NoveltyProjectService noveltyProjectService;
- private final TechnicalCaseService technicalCaseService;
- private final NoveltyCompareLiteratureService noveltyCompareLiteratureService;
- private final NoveltyCompareRecordService noveltyCompareRecordService;
- private final NoveltySearchRecordService noveltySearchRecordService;
- private final EsPatentService esPatentService;
- private final NoveltyTemplateFactory noveltyTemplateFactory;
- private final NoveltyExportReportService noveltyExportReportService;
- @Autowired
- private CacheUtils cacheUtils;
- @Autowired
- private LoginUtils loginUtils;
- 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();
- String name = noveltyReportTemplate.getTemplateName().replace("模板", "报告");
- PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- references.setReferencesName(name);
- references.setProjectId(projectId);
- references.setCreateId(personnelVO.getId());
- 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<NoveltyReportReferences> 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);
- references.updateById();
- 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());
- noveltyReferencesVO.setTemplateId(noveltyReportReference.getTemplateId());
- }
- noveltyReferencesVOS.add(noveltyReferencesVO);
- });
- records.setData(noveltyReferencesVOS);
- 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;
- }
- public Integer addOrUpdate2(NoveltyReportReferenceDTO noveltyReportReferenceDTO) throws Exception {
- Integer id = noveltyReportReferenceDTO.getId();
- Integer projectId = noveltyReportReferenceDTO.getProjectId();
- Integer templateId = noveltyReportReferenceDTO.getTemplateId();
- GetTemplateMapsImp getTemplateMapsImp = noveltyTemplateFactory.getClass(templateId);
- List<QueryNoveltyProjectVO> queryNoveltyProjectVOs = this.getQueryNoveltyProjectVOs(projectId);
- // String searchTime = noveltySearchRecordService.getLastRecordTime(projectId);
- // baseMap.put("searchTime", searchTime);
- TechnicalCaseVO technicalCaseVO = this.getTechnicalCaseVO(projectId);
- List<CompareLiteratureVO> compareLiteratureVOS = this.getCompareCompareLiteratureVO(projectId);
- List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS = this.getNoveltyCompareRecordQueryVOs(projectId);
- List<RetrieveRecordVO> retrieveRecordVOS = this.getRetrieveRecordVOs(projectId);
- Map<String, Object> map = getTemplateMapsImp.getMap(queryNoveltyProjectVOs, technicalCaseVO, compareLiteratureVOS, noveltyCompareRecordQueryVOS, retrieveRecordVOS);
- String json = JsonUtils.objectToJson(map);
- noveltyReportReferenceDTO.setDataSource(json);
- id = this.addOrUpdate(noveltyReportReferenceDTO);
- noveltyExportReportService.exportReport(id);
- return id;
- }
- public TechnicalCaseVO getTechnicalCaseVO(Integer projectId) {
- TechnicalCaseIdDTO technicalCaseIdDTO = new TechnicalCaseIdDTO();
- technicalCaseIdDTO.setProjectId(projectId);
- TechnicalCaseVO technicalCaseVO = technicalCaseService.queryTechnicalCase(technicalCaseIdDTO);
- return technicalCaseVO;
- }
- public List<QueryNoveltyProjectVO> getQueryNoveltyProjectVOs(Integer projectId) throws Exception {
- StringRequest queryRequest = new StringRequest();
- queryRequest.setProjectId(projectId);
- Object projectRecordsObject = noveltyProjectService.queryMessage(queryRequest);
- Records projectRecords = (Records) projectRecordsObject;
- List<QueryNoveltyProjectVO> queryNoveltyProjectVOs = (List<QueryNoveltyProjectVO>) projectRecords.getData();
- return queryNoveltyProjectVOs;
- }
- public List<CompareLiteratureVO> getCompareCompareLiteratureVO(Integer projectId) throws Exception {
- LiteratureQueryDTO literatureQueryDTO = new LiteratureQueryDTO();
- literatureQueryDTO.setProjectId(projectId);
- Records records = noveltyCompareLiteratureService.queryNoveltyCompareLiterature(literatureQueryDTO);
- List<CompareLiteratureVO> compareLiteratureVOS1 = (List<CompareLiteratureVO>) records.getData();
- return compareLiteratureVOS1;
- }
- public List<NoveltyCompareRecordQueryVO> getNoveltyCompareRecordQueryVOs(Integer projectId) throws Exception {
- QueryNoveltyCompareRecordDTO queryNoveltyCompareRecordDTO = new QueryNoveltyCompareRecordDTO();
- queryNoveltyCompareRecordDTO.setProjectId(projectId);
- List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs = noveltyCompareRecordService.queryCompareRecord(queryNoveltyCompareRecordDTO);
- return noveltyCompareRecordQueryVOs;
- }
- public List<RetrieveRecordVO> getRetrieveRecordVOs(Integer projectId) throws Exception {
- cn.cslg.pas.common.dto.QuerySearchRecordDTO querySearchRecordDTO = new QuerySearchRecordDTO();
- querySearchRecordDTO.setProjectId(projectId);
- Records records = noveltySearchRecordService.querySearchRecord(querySearchRecordDTO);
- List<RetrieveRecordVO> retrieveRecordVOS = (List<RetrieveRecordVO>) records.getData();
- return retrieveRecordVOS;
- }
- }
|