浏览代码

导出FTO报告

lwhhszx 1 年之前
父节点
当前提交
9da1d1d7d6

+ 5 - 0
src/main/java/cn/cslg/pas/domain/es/LegalEvent.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.domain.es;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -40,6 +41,10 @@ public class LegalEvent {
     /**
      * 发生时间
      */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
     @JsonProperty("event_date")
     private Date eventDate;
     /**

+ 15 - 68
src/main/java/cn/cslg/pas/service/ReportExportService.java

@@ -18,10 +18,7 @@ import cn.cslg.pas.domain.es.Text;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AvoidDesignMapper;
 import cn.cslg.pas.service.business.*;
-import cn.cslg.pas.service.business.es.EsFamilyService;
-import cn.cslg.pas.service.business.es.EsPatentService;
-import cn.cslg.pas.service.business.es.EsQuotePatentService;
-import cn.cslg.pas.service.business.es.EsService;
+import cn.cslg.pas.service.business.es.*;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson.JSON;
@@ -82,6 +79,8 @@ public class ReportExportService {
     private LoginUtils loginUtils;
     @Autowired
     private CacheUtils cacheUtils;
+    @Autowired
+    private EsLegalEventService esLegalEventService;
 
     /**
      * @param projectId
@@ -134,7 +133,7 @@ public class ReportExportService {
             throw new XiaoShiException("保存记录失败");
         }
 //        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        PersonnelVO personnelVO =new PersonnelVO();
+        PersonnelVO personnelVO = new PersonnelVO();
         personnelVO.setId("1");
         ReportDocument reportDocument = new ReportDocument();
         reportDocument.setProjectId(projectId);
@@ -239,14 +238,9 @@ public class ReportExportService {
         String signPatentNo = report.getSignPatentNo();
 
         //装载标的专利信息
-        Map<String, Object> signPatent = this.signPatentMess(report.getSignPatentNo());
-        System.out.println(signPatent.get(""));
-        Map<String, Object> map = new HashMap<>();
-        //装载标的专利信息
-        map.put("signPatent", signPatent);
-        map.put("rights", signPatent.get("rights"));
-        //装载公开/公告号
-        map.put("patentNo", signPatentNo);
+
+
+        ;
 
         //装载年月日
         String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
@@ -255,12 +249,11 @@ public class ReportExportService {
                 .setYear(dates[0])
                 .setMonth(dates[1])
                 .setDay(dates[2]);
-        map.put("sys", systemMO);
 //
         //装载特征、解释、回避设计方向、回避设计总体方向
         List<AvoidFeaturesVO> features = avoidDesignMapper.selectAvoidDesign(projectId);
 //        String wholeDirection = avoidDesignWholeDirectionMapper.selectWholeDirectionByReportId(reportId);
-        map.put("features", features);
+
 //        map.put("wholeDirection", wholeDirection);
 //
         //绑定政策(绑定集合和元素循环遍历)
@@ -274,56 +267,13 @@ public class ReportExportService {
                 .bind("littleDirection", htmlRenderPolicy)
                 .bind("wholeDirection", htmlRenderPolicy)
                 .build();
-        XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
+        XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(new HashMap<>());
         return template;
     }
 
-    public Map<String, Object> signPatentMess(String patentNo) throws IOException {
-//        PatentNoVO patentVO = new PatentNoVO();
-//        patentVO.setPatentNo(patentNo);
-//        //根据专利号查询专利详细信息
-//        PatentDetailDTO patentDetailDTO = esPatentService.selectPatentDetail(patentVO);
-//        //装载单个专利的信息
-        Map<String, Object> patentMap = new HashMap<>();
-//        StringBuilder applicants = new StringBuilder();
-//        StringBuilder rightPerson = new StringBuilder();
-//
-//        //申请日
-//        patentMap.put("applicationDate", patentDetailDTO.getAppDate());
-//
-//        //公开日
-//        patentMap.put("publicDate", patentDetailDTO.getPublicDate());
-//        //公开号
-//        patentMap.put("publicNo", patentDetailDTO.getPublicNo());
-//        //专利号
-//        patentMap.put("patentNo", patentDetailDTO.getPatentNo());
-//        //专利权人
-//        patentMap.put("rightPerson", rightPerson);
-//        //图示
-//        String guid = FormatUtil.getPictureFormat(patentDetailDTO.getAppNo());
-//        PictureRenderData pictureData = this.guidToStream(guid);
-//        if (pictureData != null) {
-//            patentMap.put("abstractPath", pictureData);
-//        }
-//        //获得标题
-//        if (patentDetailDTO.getTitle() != null && patentDetailDTO.getTitle().size() > 0) {
-//            Text title = patentDetailDTO.getTitle().stream()
-//                    .filter(item -> item.getIfOrigin().equals(true)).findFirst().orElse(null);
-//            if (title != null) {
-//                patentMap.put("name", title.getTextContent());
-//            }
-//        }
-//
-//        //获得权要
-//        List<Map<String, Object>>  rights=   this.getClaimMaps(patentDetailDTO.getClaim(),patentDetailDTO.getPatentNo());
-//
-//        patentMap.put("rights", rights);
-        return patentMap;
-    }
 
     private PictureRenderData guidToStream(String guid) {
         PictureRenderData pictureRenderData = null;
-
         byte[] bytes = null;
 
         if (bytes != null) {
@@ -412,15 +362,12 @@ public class ReportExportService {
                     if (patent.getApplicant() != null && patent.getApplicant().size() != 0) {
                         applicants = StringUtils.join(patent.getApplicant(), "\r");
                     }
+                    List<String> affairs = esLegalEventService.getStrLegalEvent(patent.getAppNo());
+                    String affairStrs = "";
+                    if (affairs != null && affairs.size() != 0) {
+                        affairStrs = StringUtils.join(affairs, "\r");
+                    }
 
-//                    //装载法律状态
-//                    StringBuilder affair = new StringBuilder();
-//                    List<JSONObject> affaires = JSON.parseArray(patent.get("affair").toString(), JSONObject.class);
-//                    affaires.forEach(item -> {
-//                                affair.append(item.get("status") + "\r");
-//                            }
-//
-//                    );
                     //装载单个专利的信息
                     Map<String, Object> patentMap = new HashMap<>();
 
@@ -463,7 +410,7 @@ public class ReportExportService {
                     patentMap.put("firstPublicDate", patent.getPublicDate());
                     patentMap.put("applicant", applicants);
                     patentMap.put("rightPerson", rightPerson);
-//                    patentMap.put("affair", affair);
+                    patentMap.put("affair", affairStrs);
 
                     //优先权日
                     if (patent.getPriorities() != null && patent.getPriorities().size() != 0) {

+ 67 - 0
src/main/java/cn/cslg/pas/service/business/es/EsLegalEventService.java

@@ -0,0 +1,67 @@
+package cn.cslg.pas.service.business.es;
+
+import cn.cslg.pas.domain.es.LegalEvent;
+import cn.cslg.pas.domain.es.PatentQuoteMessage;
+import cn.cslg.pas.domain.es.QuotePatent;
+import cn.cslg.pas.exception.XiaoShiException;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.elasticsearch.core.SearchRequest;
+import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.search.Hit;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class EsLegalEventService {
+    private final ElasticsearchClient client;
+
+    //根据专利号查询同族专利号
+    public List<LegalEvent> getEsQutePatentByNos(String patentNo) throws Exception {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("legal_event");
+
+        Query q1 = QueryBuilders.term(t -> t.field("app_no").value(patentNo));
+        //公开号
+        Query q2 = QueryBuilders.term(t -> t.field("public_no").value(patentNo));
+        //授权号
+        Query q3 = QueryBuilders.term(t -> t.field("grant_no").value(patentNo));
+        Query query = QueryBuilders.bool(i -> i.should(q1, q2, q3));
+
+        builder.query(query);
+        SearchResponse<LegalEvent> response = client.search(builder.build(), LegalEvent.class);
+        List<Hit<LegalEvent>> hits = response.hits().hits();
+        List<LegalEvent> legalEvents = new ArrayList<>();
+        if (hits.size() <= 0) {
+            return legalEvents;
+        }
+        hits.forEach(item -> {
+            legalEvents.add(item.source());
+        });
+        return legalEvents;
+    }
+
+
+    public List<String> getStrLegalEvent(String patentNo) {
+        List<String> stringList = new ArrayList<>();
+        try {
+            List<LegalEvent> legalEvents = this.getEsQutePatentByNos(patentNo);
+            legalEvents = legalEvents.stream().sorted(Comparator.comparing(LegalEvent::getEventDate)).collect(Collectors.toList());
+            legalEvents.forEach(item -> {
+                stringList.add(item.getName());
+            });
+
+        } catch (Exception e) {
+            throw new XiaoShiException("获得事务错误");
+        }
+        return stringList;
+    }
+}

+ 1 - 2
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -818,7 +818,6 @@ public class EsService {
 
             List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
             chinaLeagalStatuses.forEach(item -> {
-                if (legalEvents.size() > 0) {
                     LegalEvent tem = legalEvents.stream().filter(em -> em.getEventDate() != null && em.getEventDate().compareTo(item.getLegalDate()) == 0).findFirst().orElse(null);
                     if (tem == null) {
                         LegalEvent legalEvent1 = new LegalEvent();
@@ -834,7 +833,7 @@ public class EsService {
                         } catch (Exception e) {
                         }
                     }
-                }
+
             });
 
 

+ 45 - 0
src/test/java/cn/cslg/pas/service/EsLegalEventTests.java

@@ -0,0 +1,45 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.domain.es.LegalEvent;
+import cn.cslg.pas.service.business.es.EsLegalEventService;
+import cn.cslg.pas.service.business.es.EsQuotePatentService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/11/16
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class EsLegalEventTests {
+    @Autowired
+    private EsLegalEventService esLegalEventService;
+
+    @Test
+    public void addEsCustomField() throws Exception {
+
+    }
+
+    @Test
+    public void getEsCustomField() throws Exception {
+    }
+
+    @Test
+    public void getTree() {
+
+    }
+
+    @Test
+    public void getBackTo() throws Exception {
+     List<LegalEvent> legalEvents =   esLegalEventService.getEsQutePatentByNos("CN116525219A");
+     System.out.println(legalEvents);
+    }
+}