EsLegalEventService.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package cn.cslg.pas.service.business.es;
  2. import cn.cslg.pas.domain.es.LegalEvent;
  3. import cn.cslg.pas.domain.es.PatentQuoteMessage;
  4. import cn.cslg.pas.domain.es.QuotePatent;
  5. import cn.cslg.pas.exception.XiaoShiException;
  6. import co.elastic.clients.elasticsearch.ElasticsearchClient;
  7. import co.elastic.clients.elasticsearch._types.query_dsl.Query;
  8. import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
  9. import co.elastic.clients.elasticsearch.core.SearchRequest;
  10. import co.elastic.clients.elasticsearch.core.SearchResponse;
  11. import co.elastic.clients.elasticsearch.core.search.Hit;
  12. import lombok.RequiredArgsConstructor;
  13. import org.springframework.context.annotation.Lazy;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.util.CollectionUtils;
  16. import java.util.*;
  17. import java.util.stream.Collectors;
  18. @Service
  19. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  20. public class EsLegalEventService {
  21. private final ElasticsearchClient client;
  22. //根据专利号查询同族专利号
  23. public List<LegalEvent> getEsQutePatentByNos(String patentNo) throws Exception {
  24. SearchRequest.Builder builder = new SearchRequest.Builder();
  25. //设置查询索引
  26. builder.index("legal_event");
  27. Query q1 = QueryBuilders.term(t -> t.field("app_no").value(patentNo));
  28. //公开号
  29. Query q2 = QueryBuilders.term(t -> t.field("public_no").value(patentNo));
  30. //授权号
  31. Query q3 = QueryBuilders.term(t -> t.field("grant_no").value(patentNo));
  32. Query query = QueryBuilders.bool(i -> i.should(q1, q2, q3));
  33. builder.query(query);
  34. SearchResponse<LegalEvent> response = client.search(builder.build(), LegalEvent.class);
  35. List<Hit<LegalEvent>> hits = response.hits().hits();
  36. List<LegalEvent> legalEvents = new ArrayList<>();
  37. if (hits.size() <= 0) {
  38. return legalEvents;
  39. }
  40. hits.forEach(item -> {
  41. legalEvents.add(item.source());
  42. });
  43. return legalEvents;
  44. }
  45. public List<String> getStrLegalEvent(String patentNo) {
  46. List<String> stringList = new ArrayList<>();
  47. try {
  48. List<LegalEvent> legalEvents = this.getEsQutePatentByNos(patentNo);
  49. legalEvents = legalEvents.stream().sorted(Comparator.comparing(LegalEvent::getEventDate)).collect(Collectors.toList());
  50. legalEvents.forEach(item -> {
  51. stringList.add(item.getName());
  52. });
  53. } catch (Exception e) {
  54. throw new XiaoShiException("获得事务错误");
  55. }
  56. return stringList;
  57. }
  58. }