123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- package cn.cslg.pas.service.business;
- 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.utils.CacheUtils;
- import cn.cslg.pas.common.utils.LoginUtils;
- import cn.cslg.pas.common.vo.CompareLiteratureVO;
- import cn.cslg.pas.domain.business.CompareLiterature;
- import cn.cslg.pas.common.dto.CompareLiteratureDTO;
- import cn.cslg.pas.domain.business.ReportProject;
- import cn.cslg.pas.domain.es.Patent;
- import cn.cslg.pas.exception.UnLoginException;
- import cn.cslg.pas.exception.XiaoShiException;
- import cn.cslg.pas.mapper.CompareLiteratureMapper;
- import cn.cslg.pas.service.business.es.EsPatentService;
- import cn.cslg.pas.service.business.es.EsService;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * @Author lrj
- * @Date 2023/12/8
- */
- @Slf4j
- @Service
- public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMapper, CompareLiterature> {
- @Autowired
- private CacheUtils cacheUtils;
- @Autowired
- private LoginUtils loginUtils;
- @Autowired
- private EsPatentService esPatentService;
- @Autowired
- private ReportProjectService reportProjectService;
- //添加专利对比文献
- public Integer addPatentCompareLiterature(String patentNo, Integer projectId, String createId) {
- Integer id = null;
- //根据专利号和报告id查询是否已经保存
- LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(CompareLiterature::getLiteratureNo, patentNo);
- queryWrapper.eq(CompareLiterature::getProjectId, projectId);
- List<CompareLiterature> compareLiteratures = this.list(queryWrapper);
- if (compareLiteratures.size() <= 0) {
- CompareLiterature compareLiterature = new CompareLiterature();
- compareLiterature.setCreateId(createId);
- compareLiterature.setProjectId(projectId);
- compareLiterature.setLiteratureNo(patentNo);
- compareLiterature.setName(patentNo);
- compareLiterature.insert();
- return compareLiterature.getId();
- } else {
- return compareLiteratures.get(0).getId();
- }
- }
- //添加对比文献
- public Integer addCompareLiterature(CompareLiteratureDTO compareLiteratureDTO) {
- PersonnelVO personnelVO = new PersonnelVO();
- try {
- personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- } catch (Exception e) {
- throw new UnLoginException("未登录");
- }
- CompareLiterature compareLiterature = new CompareLiterature();
- compareLiterature.setCreateId(personnelVO.getId());
- compareLiterature.setProjectId(compareLiteratureDTO.getProjectId());
- compareLiterature.setLiteratureNo(compareLiteratureDTO.getFileGuid());
- compareLiterature.setName(compareLiteratureDTO.getFileName());
- compareLiterature.setDescription(compareLiteratureDTO.getDescription());
- compareLiterature.insert();
- return compareLiterature.getId();
- }
- //查询对比文献
- public Records queryCompareLiterature(LiteratureQueryDTO literatureQueryDTO) {
- Integer projectId = literatureQueryDTO.getProjectId();
- //根据对比projectId 查询对比文献
- LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(CompareLiterature::getProjectId, projectId);
- Page<CompareLiterature> page = this.page(new Page<>(literatureQueryDTO.getCurrent(), literatureQueryDTO.getSize()), queryWrapper);
- List<CompareLiterature> compareLiteratures = page.getRecords();
- List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
- //根据项目id查询标的专利号
- LambdaQueryWrapper<ReportProject> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(ReportProject::getProjectId, projectId);
- ReportProject reportProject = reportProjectService.getOne(wrapper);
- compareLiteratureVOS = this.loadCompareLiterature(compareLiteratures, reportProject);
- //装载不同的类型的对比文献
- Records records = new Records();
- records.setData(compareLiteratureVOS);
- records.setTotal(page.getTotal());
- records.setSize(Long.parseLong(literatureQueryDTO.getSize().toString()));
- records.setCurrent(Long.parseLong(literatureQueryDTO.getCurrent().toString()));
- return records;
- }
- private List<CompareLiteratureVO> loadCompareLiterature(List<CompareLiterature> compareLiteratures, ReportProject reportProject) {
- String signPatentNo = reportProject.getSignPatentNo();
- //查询标的专利号
- List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
- //非专利文献列表
- List<CompareLiterature> fileLiterature = compareLiteratures.stream().filter(item -> item.getType().equals(2)).collect(Collectors.toList());
- //专利文献列表
- List<String> patentNos = compareLiteratures.stream().filter(item -> item.getType().equals(1)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
- List<Patent> patentList = new ArrayList<>();
- if (reportProject.getSignPatentNo() != null) {
- patentNos.add(reportProject.getSignPatentNo());
- }
- if (patentNos.size() > 0) {
- try {
- patentList = esPatentService.getPatentsByNo(patentNos,false);
- } catch (Exception e) {
- throw new XiaoShiException("装载文献信息失败");
- }
- }
- //获得标的专利信息
- Patent signPatent = patentList.stream()
- .filter(item -> item.getAppNo().equals(signPatentNo)
- || item.getPublicNo().equals(signPatentNo) ||
- item.getGrantNo().equals(signPatentNo)).findFirst().orElse(null);
- for (CompareLiterature compareLiterature : compareLiteratures) {
- Integer id = compareLiterature.getId();
- String literatureNo = compareLiterature.getLiteratureNo();
- CompareLiteratureVO compareLiteratureVO = new CompareLiteratureVO();
- compareLiteratureVO.setId(id);
- compareLiteratureVO.setName(compareLiterature.getName());
- //当为专利文献时
- if (compareLiterature.getType().equals(1)) {
- compareLiteratureVO.setIfSignAppEarly(false);
- if (patentList.size() > 0) {
- Patent patent = patentList.stream()
- .filter(item -> item.getAppNo().equals(literatureNo)
- || item.getPublicNo().equals(literatureNo) ||
- item.getGrantNo().equals(literatureNo)).findFirst().orElse(null);
- if (patent != null) {
- compareLiteratureVO.setAppNo(patent.getAppNo());
- compareLiteratureVO.setAppDate(patent.getAppDate());
- compareLiteratureVO.setPublicDate(patent.getPublicDate());
- compareLiteratureVO.setPublicNo(patent.getPublicNo());
- compareLiteratureVO.setGrantDate(patent.getGrantDate());
- compareLiteratureVO.setGrantNo(patent.getGrantNo());
- //比较标的专利的申请日和对比专利的公开或者公告日
- if (signPatent.getAppDate() != null) {
- if (patent.getPublicDate() != null) {
- if (signPatent.getAppDate().compareTo(patent.getPublicDate()) >= 0) {
- compareLiteratureVO.setIfSignAppEarly(true);
- }
- } else if (patent.getGrantDate() != null) {
- if (signPatent.getAppDate().compareTo(patent.getGrantDate()) >= 0) {
- compareLiteratureVO.setIfSignAppEarly(true);
- } } }
- }
- }
- }
- compareLiteratureVOS.add(compareLiteratureVO);
- }
- return compareLiteratureVOS;
- }
- }
|