CompareLiteratureService.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
  3. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  4. import cn.cslg.pas.common.model.cronModel.Records;
  5. import cn.cslg.pas.common.utils.CacheUtils;
  6. import cn.cslg.pas.common.utils.LoginUtils;
  7. import cn.cslg.pas.common.vo.CompareLiteratureVO;
  8. import cn.cslg.pas.domain.business.CompareLiterature;
  9. import cn.cslg.pas.common.dto.CompareLiteratureDTO;
  10. import cn.cslg.pas.domain.business.ReportProject;
  11. import cn.cslg.pas.domain.es.Patent;
  12. import cn.cslg.pas.exception.UnLoginException;
  13. import cn.cslg.pas.exception.XiaoShiException;
  14. import cn.cslg.pas.mapper.CompareLiteratureMapper;
  15. import cn.cslg.pas.service.business.es.EsPatentService;
  16. import cn.cslg.pas.service.business.es.EsService;
  17. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  18. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  19. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import java.util.ArrayList;
  24. import java.util.List;
  25. import java.util.stream.Collectors;
  26. /**
  27. * @Author lrj
  28. * @Date 2023/12/8
  29. */
  30. @Slf4j
  31. @Service
  32. public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMapper, CompareLiterature> {
  33. @Autowired
  34. private CacheUtils cacheUtils;
  35. @Autowired
  36. private LoginUtils loginUtils;
  37. @Autowired
  38. private EsPatentService esPatentService;
  39. @Autowired
  40. private ReportProjectService reportProjectService;
  41. //添加专利对比文献
  42. public Integer addPatentCompareLiterature(String patentNo, Integer projectId, String createId) {
  43. Integer id = null;
  44. //根据专利号和报告id查询是否已经保存
  45. LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
  46. queryWrapper.eq(CompareLiterature::getLiteratureNo, patentNo);
  47. queryWrapper.eq(CompareLiterature::getProjectId, projectId);
  48. List<CompareLiterature> compareLiteratures = this.list(queryWrapper);
  49. if (compareLiteratures.size() <= 0) {
  50. CompareLiterature compareLiterature = new CompareLiterature();
  51. compareLiterature.setCreateId(createId);
  52. compareLiterature.setProjectId(projectId);
  53. compareLiterature.setLiteratureNo(patentNo);
  54. compareLiterature.setName(patentNo);
  55. compareLiterature.insert();
  56. return compareLiterature.getId();
  57. } else {
  58. return compareLiteratures.get(0).getId();
  59. }
  60. }
  61. //添加对比文献
  62. public Integer addCompareLiterature(CompareLiteratureDTO compareLiteratureDTO) {
  63. PersonnelVO personnelVO = new PersonnelVO();
  64. try {
  65. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  66. } catch (Exception e) {
  67. throw new UnLoginException("未登录");
  68. }
  69. CompareLiterature compareLiterature = new CompareLiterature();
  70. compareLiterature.setCreateId(personnelVO.getId());
  71. compareLiterature.setProjectId(compareLiteratureDTO.getProjectId());
  72. compareLiterature.setLiteratureNo(compareLiteratureDTO.getFileGuid());
  73. compareLiterature.setName(compareLiteratureDTO.getFileName());
  74. compareLiterature.setDescription(compareLiteratureDTO.getDescription());
  75. compareLiterature.insert();
  76. return compareLiterature.getId();
  77. }
  78. //查询对比文献
  79. public Records queryCompareLiterature(LiteratureQueryDTO literatureQueryDTO) {
  80. Integer projectId = literatureQueryDTO.getProjectId();
  81. //根据对比projectId 查询对比文献
  82. LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
  83. queryWrapper.eq(CompareLiterature::getProjectId, projectId);
  84. Page<CompareLiterature> page = this.page(new Page<>(literatureQueryDTO.getCurrent(), literatureQueryDTO.getSize()), queryWrapper);
  85. List<CompareLiterature> compareLiteratures = page.getRecords();
  86. List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
  87. //根据项目id查询标的专利号
  88. LambdaQueryWrapper<ReportProject> wrapper = new LambdaQueryWrapper<>();
  89. wrapper.eq(ReportProject::getProjectId, projectId);
  90. ReportProject reportProject = reportProjectService.getOne(wrapper);
  91. compareLiteratureVOS = this.loadCompareLiterature(compareLiteratures, reportProject);
  92. //装载不同的类型的对比文献
  93. Records records = new Records();
  94. records.setData(compareLiteratureVOS);
  95. records.setTotal(page.getTotal());
  96. records.setSize(Long.parseLong(literatureQueryDTO.getSize().toString()));
  97. records.setCurrent(Long.parseLong(literatureQueryDTO.getCurrent().toString()));
  98. return records;
  99. }
  100. private List<CompareLiteratureVO> loadCompareLiterature(List<CompareLiterature> compareLiteratures, ReportProject reportProject) {
  101. String signPatentNo = reportProject.getSignPatentNo();
  102. //查询标的专利号
  103. List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
  104. //非专利文献列表
  105. List<CompareLiterature> fileLiterature = compareLiteratures.stream().filter(item -> item.getType().equals(2)).collect(Collectors.toList());
  106. //专利文献列表
  107. List<String> patentNos = compareLiteratures.stream().filter(item -> item.getType().equals(1)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
  108. List<Patent> patentList = new ArrayList<>();
  109. if (reportProject.getSignPatentNo() != null) {
  110. patentNos.add(reportProject.getSignPatentNo());
  111. }
  112. if (patentNos.size() > 0) {
  113. try {
  114. patentList = esPatentService.getPatentsByNo(patentNos,false);
  115. } catch (Exception e) {
  116. throw new XiaoShiException("装载文献信息失败");
  117. }
  118. }
  119. //获得标的专利信息
  120. Patent signPatent = patentList.stream()
  121. .filter(item -> item.getAppNo().equals(signPatentNo)
  122. || item.getPublicNo().equals(signPatentNo) ||
  123. item.getGrantNo().equals(signPatentNo)).findFirst().orElse(null);
  124. for (CompareLiterature compareLiterature : compareLiteratures) {
  125. Integer id = compareLiterature.getId();
  126. String literatureNo = compareLiterature.getLiteratureNo();
  127. CompareLiteratureVO compareLiteratureVO = new CompareLiteratureVO();
  128. compareLiteratureVO.setId(id);
  129. compareLiteratureVO.setName(compareLiterature.getName());
  130. //当为专利文献时
  131. if (compareLiterature.getType().equals(1)) {
  132. compareLiteratureVO.setIfSignAppEarly(false);
  133. if (patentList.size() > 0) {
  134. Patent patent = patentList.stream()
  135. .filter(item -> item.getAppNo().equals(literatureNo)
  136. || item.getPublicNo().equals(literatureNo) ||
  137. item.getGrantNo().equals(literatureNo)).findFirst().orElse(null);
  138. if (patent != null) {
  139. compareLiteratureVO.setAppNo(patent.getAppNo());
  140. compareLiteratureVO.setAppDate(patent.getAppDate());
  141. compareLiteratureVO.setPublicDate(patent.getPublicDate());
  142. compareLiteratureVO.setPublicNo(patent.getPublicNo());
  143. compareLiteratureVO.setGrantDate(patent.getGrantDate());
  144. compareLiteratureVO.setGrantNo(patent.getGrantNo());
  145. //比较标的专利的申请日和对比专利的公开或者公告日
  146. if (signPatent.getAppDate() != null) {
  147. if (patent.getPublicDate() != null) {
  148. if (signPatent.getAppDate().compareTo(patent.getPublicDate()) >= 0) {
  149. compareLiteratureVO.setIfSignAppEarly(true);
  150. }
  151. } else if (patent.getGrantDate() != null) {
  152. if (signPatent.getAppDate().compareTo(patent.getGrantDate()) >= 0) {
  153. compareLiteratureVO.setIfSignAppEarly(true);
  154. } } }
  155. }
  156. }
  157. }
  158. compareLiteratureVOS.add(compareLiteratureVO);
  159. }
  160. return compareLiteratureVOS;
  161. }
  162. }