Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

xiexiang 1 год назад
Родитель
Сommit
4ec2b17fd7

+ 9 - 2
src/main/java/com/example/xiaoshiweixinback/domain/es/PatentVector.java

@@ -26,8 +26,8 @@ public class PatentVector {
     @JsonProperty("right_holder")
     private List<PatentPerson> rightHolder;
 
-    @JsonProperty("public_date")
-    private Date publicDate;
+    @JsonProperty("app_date")
+    private Date appDate;
 
     /**
      * 标题
@@ -44,5 +44,12 @@ public class PatentVector {
     @JsonProperty("my_vector")
     private List<Float> myVector;
 
+    @JsonProperty("loc")
+    private List<PatentClassify> loc;
 
+    @JsonProperty("app_country")
+    private String appCountry;
+
+    @JsonProperty("abstract_str")
+    private List<Text> abstractStr;
 }

+ 31 - 1
src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsService.java

@@ -63,7 +63,7 @@ public class EsService {
 
     public String addPatentVector(PatentVector patentVector) throws Exception {
         IndexResponse indexResponse = client.index(i -> i
-                .index("patent_vector")
+                .index("patent_vector_v3")
                 //传入user对象
                 .document(patentVector)
         );
@@ -307,6 +307,36 @@ public class EsService {
 //        return dto;
         return null;
     }
+
+
+
+    /**
+     * 根据专利号获取专利id
+     *
+     * @param patentNo
+     * @return
+     * @throws Exception
+     */
+    public PatentVector getVectorByIndex(String patentNo,Integer index) throws Exception {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent_vector_v3");
+        PatentVector patentVector = null;
+        String id = null;
+        Query q1 = QueryBuilders.term(t -> t.field("app_no").value(patentNo));
+        //公开号
+        Query q2 = QueryBuilders.term(t -> t.field("image_index").value(index));
+        //授权号
+        Query query = QueryBuilders.bool(i -> i.must(q1, q2));
+        builder.query(query);
+        SearchResponse<PatentVector> response = client.search(builder.build(), PatentVector.class);
+        List<Hit<PatentVector>> hits = response.hits().hits();
+        if (hits != null && hits.size() > 0) {
+            id = hits.get(0).id();
+          patentVector =hits.get(0).source();
+        }
+        return patentVector;
+    }
 }
 
 

+ 3 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/GetCataloguingFromWebService.java

@@ -248,6 +248,9 @@ public class GetCataloguingFromWebService {
         if (starPatentVO.getBureau() != null && !starPatentVO.getBureau().equals("")) {
             patent.setAppCountry(starPatentVO.getBureau().substring(0, starPatentVO.getBureau().indexOf("(")));
         }
+        else {
+            patent.setAppCountry("CN");
+        }
     }
 
     //装载中国专利

+ 84 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/GetFiguresService.java

@@ -0,0 +1,84 @@
+package com.example.xiaoshiweixinback.service.importPatent;
+
+import com.example.xiaoshiweixinback.business.utils.FileUtils;
+import com.example.xiaoshiweixinback.business.utils.FormatUtil;
+import com.example.xiaoshiweixinback.domain.es.Patent;
+import com.example.xiaoshiweixinback.domain.es.PatentClassify;
+import com.example.xiaoshiweixinback.domain.es.PatentVector;
+import com.example.xiaoshiweixinback.entity.dto.patent.UploadPatentWebDTO;
+import com.example.xiaoshiweixinback.service.common.FileManagerService;
+import com.example.xiaoshiweixinback.service.common.GetVectorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+@Service
+public class GetFiguresService {
+    @Autowired
+    private PatentStarApiService patentStarApiService;
+    @Autowired
+    private FileManagerService fileManagerService;
+    @Autowired
+    private GetVectorService getVectorService;
+    @Autowired
+    private EsService esService;
+
+    public void getFigures(UploadPatentWebDTO uploadPatentWebDTO) {
+        Patent patent = uploadPatentWebDTO.getPatent();
+        try {
+            List<String> urls = patentStarApiService.getExternalFigure(patent.getAppNo().replace(".", ""));
+            if (!urls.get(0).equals("{}")) {
+                for (int i = 0; i < urls.size(); i++) {
+                    String url = urls.get(i);
+                    this.tem(url, uploadPatentWebDTO, i + 1);
+
+                }
+            }
+        } catch (Exception e) {
+
+
+        }
+
+
+    }
+
+    private void tem(String pictureUrl, UploadPatentWebDTO uploadPatentWebDTO, Integer i) throws Exception {
+        Patent patent = uploadPatentWebDTO.getPatent();
+        if (pictureUrl != null && !pictureUrl.contains("408")) {
+            File file = FileUtils.getPictureFileByUrl(pictureUrl);
+            String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getStarPatentVO().getApplicationNo())+i;
+            fileManagerService.uploadFileWithGuid(file, guid);
+            PatentVector patentVectorOrg =  esService.getVectorByIndex(patent.getAppNo(),i);
+            if(patentVectorOrg!=null){
+                return;
+            }
+            PatentVector patentVector = new PatentVector();
+            patentVector.setAppNo(patent.getAppNo());
+            patentVector.setTitle(patent.getTitle());
+            patentVector.setRightHolder(patent.getRightHolder());
+            patentVector.setAppDate(patent.getAppDate());
+            patentVector.setAbstractStr(patent.getAbstractStr());
+            patentVector.setAppCountry(patent.getAppCountry());
+            PatentClassify patentClassify = new PatentClassify();
+            patentClassify.setLevel1(uploadPatentWebDTO.getStarPatentVO().getMainIpc());
+            patentVector.setLoc(Arrays.asList(patentClassify));
+            patentVector.setImageIndex(i);
+            patentVector.setGuid(guid);
+            List<String> stringList = getVectorService.getVectorByFile(file);
+            List<Float> floats = new ArrayList<>();
+            stringList.forEach(item -> {
+                Float a = Float.parseFloat(item);
+                floats.add(a);
+
+            });
+            org.apache.commons.io.FileUtils.deleteQuietly(file);
+            patentVector.setMyVector(floats);
+            esService.addPatentVector(patentVector);
+        }
+    }
+}

+ 17 - 3
src/main/java/com/example/xiaoshiweixinback/service/importPatent/GetPatentPictureFromWebService.java

@@ -3,6 +3,7 @@ package com.example.xiaoshiweixinback.service.importPatent;
 import com.example.xiaoshiweixinback.business.utils.FileUtils;
 import com.example.xiaoshiweixinback.business.utils.FormatUtil;
 import com.example.xiaoshiweixinback.domain.es.Patent;
+import com.example.xiaoshiweixinback.domain.es.PatentClassify;
 import com.example.xiaoshiweixinback.domain.es.PatentVector;
 import com.example.xiaoshiweixinback.entity.dto.patent.UploadPatentWebDTO;
 import com.example.xiaoshiweixinback.service.common.FileManagerService;
@@ -12,6 +13,7 @@ import org.springframework.stereotype.Service;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 
@@ -35,16 +37,28 @@ public class GetPatentPictureFromWebService {
                 File file = FileUtils.getPictureFileByUrl(pictureUrl);
                 String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getStarPatentVO().getApplicationNo());
                 fileManagerService.uploadFileWithGuid(file, guid);
+              PatentVector patentVectorOrg =  esService.getVectorByIndex(patent.getAppNo(),0);
+                if(patentVectorOrg!=null){
+                    return;
+                }
                 PatentVector patentVector = new PatentVector();
                 patentVector.setAppNo(patent.getAppNo());
                 patentVector.setTitle(patent.getTitle());
                 patentVector.setRightHolder(patent.getRightHolder());
+                patentVector.setAppDate(patent.getAppDate());
+                patentVector.setAbstractStr(patent.getAbstractStr());
+                patentVector.setAppCountry(patent.getAppCountry());
+                PatentClassify patentClassify =new PatentClassify();
+                patentClassify.setLevel1(uploadPatentWebDTO.getStarPatentVO().getMainIpc());
+                patentVector.setLoc(Arrays.asList(patentClassify));
                 patentVector.setImageIndex(0);
+                patentVector.setGuid(guid);
                 List<String> stringList = getVectorService.getVectorByFile(file);
-                List<Float> floats = new ArrayList<>();
-                stringList.forEach(item -> {
-                    Float a = Float.parseFloat(item);
+                List<Float> floats =new ArrayList<>();
+                stringList.forEach(item->{
+                    Float a =Float.parseFloat(item);
                     floats.add(a);
+
                 });
                 org.apache.commons.io.FileUtils.deleteQuietly(file);
                 patentVector.setMyVector(floats);

+ 7 - 6
src/main/java/com/example/xiaoshiweixinback/service/importPatent/ImportFromWebToEsService.java

@@ -28,9 +28,10 @@ public class ImportFromWebToEsService {
 
     @Autowired
     private SavePatentToEsService savePatentToEsService;
-    @Autowired
-    private GetPatentPictureFromWebService getPatentPictureFromWebService;
-
+@Autowired
+private GetPatentPictureFromWebService getPatentPictureFromWebService;
+@Autowired
+private GetFiguresService getFiguresService;
     public Boolean ImportTask(ImportTaskAMVO importTaskAMVO) {
 
         return excuteLessThan10000(importTaskAMVO);
@@ -129,8 +130,9 @@ public class ImportFromWebToEsService {
                         uploadPatentWebDTO.setIndex(index);
                         uploadPatentWebDTO.setHaveSaveCounter(0);
                         getCataloguingFromWebService.loadPatentMessage(uploadPatentWebDTO);
-                        savePatentToEsService.saveOrUpdate(uploadPatentWebDTO);
-                        getPatentPictureFromWebService.getPatentPicture(uploadPatentWebDTO);
+                         savePatentToEsService.saveOrUpdate(uploadPatentWebDTO);
+                         getPatentPictureFromWebService.getPatentPicture(uploadPatentWebDTO);
+                        getFiguresService.getFigures(uploadPatentWebDTO);
                         ifHaveGet = true;
                         index += 1;
                     }
@@ -138,7 +140,6 @@ public class ImportFromWebToEsService {
                 }
 
             }
-
             return ifHaveGet;
         } catch (Exception e) {
             e.printStackTrace();

+ 1 - 1
src/main/resources/application-dev.yml

@@ -68,7 +68,7 @@ OPSUrl: http://139.224.24.90:5001
 PASUrl: http://localhost:8877
 FMSUrl: http://localhost:8801
 VectorUrl: http://192.168.1.6:8000
-FileSource: 1
+FileSource: 5
 
 ##################  短信 ####################
 SMS: