PatentSimpleFamilyService.java 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.domain.PatentSimpleFamilyLink;
  3. import cn.cslg.pas.common.utils.StringUtils;
  4. import cn.cslg.pas.domain.Patent;
  5. import cn.cslg.pas.domain.PatentSimpleFamily;
  6. import cn.cslg.pas.mapper.PatentSimpleFamilyMapper;
  7. import cn.cslg.pas.common.model.params.PatentSimpleFamilyParams;
  8. import cn.cslg.pas.common.utils.PatentUtils;
  9. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  10. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11. import lombok.RequiredArgsConstructor;
  12. import org.springframework.context.annotation.Lazy;
  13. import org.springframework.stereotype.Service;
  14. import java.util.List;
  15. import java.util.stream.Collectors;
  16. /**
  17. * <p>
  18. * 专利信息简单同族关联表 服务类
  19. * </p>
  20. *
  21. * @author 王岩
  22. * @since 2022-02-24
  23. */
  24. @Service
  25. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  26. public class PatentSimpleFamilyService extends ServiceImpl<PatentSimpleFamilyMapper, PatentSimpleFamily> {
  27. private final PatentService patentService;
  28. private final PatentApplicantService patentApplicantService;
  29. private final PatentSimpleFamilyLinkService patentSimpleFamilyLinkService;
  30. public PatentSimpleFamily getPatentSimpleFamilyByIdsAndType(List<Integer> ids, Integer type) {
  31. if (ids == null || ids.size() == 0) {
  32. return null;
  33. }
  34. LambdaQueryWrapper<PatentSimpleFamily> queryWrapper = new LambdaQueryWrapper<>();
  35. queryWrapper.in(PatentSimpleFamily::getId, ids);
  36. queryWrapper.eq(PatentSimpleFamily::getType, type);
  37. return this.getOne(queryWrapper);
  38. }
  39. public List<PatentSimpleFamily> getPatentSimpleFamilyByIds(List<Integer> ids) {
  40. if (ids == null || ids.size() == 0) {
  41. return null;
  42. }
  43. LambdaQueryWrapper<PatentSimpleFamily> queryWrapper = new LambdaQueryWrapper<>();
  44. queryWrapper.in(PatentSimpleFamily::getId, ids);
  45. return this.list(queryWrapper);
  46. }
  47. public void importPatentSimpleFamily(Patent patent, List<PatentSimpleFamily> importPatentSimpleFamilyList, List<PatentSimpleFamilyLink> importPatentSimpleFamilyLinkList) {
  48. List<PatentSimpleFamilyLink> importPatentSimpleFamilyLink = importPatentSimpleFamilyLinkList.stream().filter(item -> item.getFamilyId().equals(patent.getSimpleFamily())).collect(Collectors.toList());
  49. List<PatentSimpleFamilyLink> importPatentInpadocFamilyLink = importPatentSimpleFamilyLinkList.stream().filter(item -> item.getFamilyId().equals(patent.getInpadocFamily())).collect(Collectors.toList());
  50. List<PatentSimpleFamilyLink> importPatentPatSnapFamilyLink = importPatentSimpleFamilyLinkList.stream().filter(item -> item.getFamilyId().equals(patent.getPatSnapFamily())).collect(Collectors.toList());
  51. PatentSimpleFamilyParams patentSimpleFamilyParams = new PatentSimpleFamilyParams();
  52. patentSimpleFamilyParams.setPatentId(patent.getId());
  53. patentSimpleFamilyParams.setPatentNo(patent.getPatentNo());
  54. patentSimpleFamilyParams.setSimpleFamily(importPatentSimpleFamilyLink.stream().map(PatentSimpleFamilyLink::getPatentNo).collect(Collectors.toList()));
  55. patentSimpleFamilyParams.setInpadocFamily(importPatentInpadocFamilyLink.stream().map(PatentSimpleFamilyLink::getPatentNo).collect(Collectors.toList()));
  56. patentSimpleFamilyParams.setPatSnapFamily(importPatentPatSnapFamilyLink.stream().map(PatentSimpleFamilyLink::getPatentNo).collect(Collectors.toList()));
  57. this.updatePatentSimpleFamily(patentSimpleFamilyParams);
  58. }
  59. public void updatePatentSimpleFamily(PatentSimpleFamilyParams params) {
  60. if (params.getSimpleFamily() != null && params.getSimpleFamily().size() != 0) {
  61. this.updateData(params.getSimpleFamily(), params.getPatentNo(), params.getPatentId(), 1);
  62. }
  63. if (params.getInpadocFamily() != null && params.getInpadocFamily().size() != 0) {
  64. this.updateData(params.getInpadocFamily(), params.getPatentNo(), params.getPatentId(), 2);
  65. }
  66. if (params.getPatSnapFamily() != null && params.getPatSnapFamily().size() != 0) {
  67. this.updateData(params.getPatSnapFamily(), params.getPatentNo(), params.getPatentId(), 3);
  68. }
  69. }
  70. public PatentSimpleFamily add(Integer type) {
  71. PatentSimpleFamily patentSimpleFamily = new PatentSimpleFamily();
  72. patentSimpleFamily.setType(type);
  73. patentSimpleFamily.insert();
  74. return patentSimpleFamily;
  75. }
  76. public void updateData(List<String> familyNo, String patentNo, Integer patentId, Integer type) {
  77. //两个表 1.同族表 2.同组关联专利表
  78. //用专利号 获取同族关联专利表的信息
  79. List<PatentSimpleFamilyLink> patentSimpleFamilyLinkList = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByPatentNo(patentNo);
  80. PatentSimpleFamily family;
  81. if (patentSimpleFamilyLinkList == null || patentSimpleFamilyLinkList.size() == 0) {
  82. //如果 同组关联专利表 内没有数据 就新建一条 同族表 的数据
  83. family = this.add(type);
  84. } else {
  85. //如果 同组关联专利表 内有数据 那么用查询出来的List中的 同族表 的ID来获取 同族表 内的其他对应信息
  86. PatentSimpleFamily patentSimpleFamily = this.getPatentSimpleFamilyByIdsAndType(patentSimpleFamilyLinkList.stream().map(PatentSimpleFamilyLink::getFamilyId).collect(Collectors.toList()), type);
  87. if (patentSimpleFamily == null) {
  88. family = this.add(type);
  89. } else {
  90. family = patentSimpleFamily;
  91. }
  92. }
  93. for (String patent : familyNo) {
  94. PatentSimpleFamilyLink temp = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByPatentNoAndFamilyId(patent, family.getId());
  95. if (temp == null) {
  96. PatentSimpleFamilyLink patentSimpleFamilyLink = new PatentSimpleFamilyLink();
  97. patentSimpleFamilyLink.setFamilyId(family.getId());
  98. patentSimpleFamilyLink.setPatentNo(patent);
  99. patentSimpleFamilyLink.insert();
  100. } else {
  101. temp.setFamilyId(family.getId());
  102. temp.updateById();
  103. }
  104. Patent patent1 = patentService.getPublicDateAndPatentNoByPatentNo(patent);
  105. Patent patent2 = patentService.getPublicDateAndPatentNoByPatentNo(family.getPatentNo());
  106. if (patent1 != null) {
  107. switch (type) {
  108. case 1:
  109. patent1.setSimpleFamily(family.getId());
  110. break;
  111. case 2:
  112. patent1.setInpadocFamily(family.getId());
  113. break;
  114. case 3:
  115. patent1.setPatSnapFamily(family.getId());
  116. break;
  117. }
  118. family.setPatentNo(patent1.getPatentNo());
  119. patent1.updateById();
  120. }
  121. if (patent2 != null) {
  122. switch (type) {
  123. case 1:
  124. patent2.setSimpleFamily(family.getId());
  125. break;
  126. case 2:
  127. patent2.setInpadocFamily(family.getId());
  128. break;
  129. case 3:
  130. patent2.setPatSnapFamily(family.getId());
  131. break;
  132. }
  133. family.setPatentNo(patent2.getPatentNo());
  134. patent2.updateById();
  135. }
  136. if (StringUtils.isEmpty(family.getPatentNo())) {
  137. family.setPatentNo(patent);
  138. } else {
  139. if (patent1 != null && patent2 != null) {
  140. String country1 = PatentUtils.getPatentCountry(patent1.getPatentNo());
  141. String country2 = PatentUtils.getPatentCountry(patent2.getPatentNo());
  142. if ("CN".equals(country1) && !"CN".equals(country2)) {
  143. family.setPatentNo(patent1.getPatentNo());
  144. }
  145. if (!"CN".equals(country1) && "CN".equals(country2)) {
  146. family.setPatentNo(patent2.getPatentNo());
  147. }
  148. if ("CN".equals(country1) && "CN".equals(country2)) {
  149. Integer publicData1 = patent1.getPublicDate();
  150. Integer publicData2 = patent2.getPublicDate();
  151. if (publicData1 == null && publicData2 != null) {
  152. family.setPatentNo(patent2.getPatentNo());
  153. }
  154. if (publicData1 != null && publicData2 == null) {
  155. family.setPatentNo(patent1.getPatentNo());
  156. }
  157. if (publicData1 != null && publicData2 != null) {
  158. if (publicData1 > publicData2) {
  159. family.setPatentNo(patent2.getPatentNo());
  160. } else {
  161. family.setPatentNo(patent1.getPatentNo());
  162. }
  163. }
  164. }
  165. }
  166. }
  167. family.updateById();
  168. }
  169. }
  170. }