Kaynağa Gözat

add 商品化专利

zero 1 yıl önce
ebeveyn
işleme
1640575e6a

+ 4 - 0
src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java

@@ -20,4 +20,8 @@ public class QueryRequest {
     private List<EsCustomFieldValueDTO> customFields;
     private Integer taskId;
     private List<String> patentNos;
+    //商品化专利
+    private Integer productId;
+    //商品化专利标识
+    private String from;
 }

+ 9 - 0
src/main/java/cn/cslg/pas/common/vo/business/SelectProductVO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+@Data
+public class SelectProductVO {
+
+    private String patentNo;
+}

+ 9 - 2
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -126,6 +126,13 @@ public class PatentController {
         return Response.success(dto);
     }
 
+    @Operation(summary = "根据专利号查询商品化专利")
+    @PostMapping("/selectProductByPatentNo")
+    public Response selectProductByPatentNo(@RequestBody PatentKinVO vo) throws Exception {
+        List<PatentKinDTO> dto = patentService.selectKinByPatentNo(vo);
+        return Response.success(dto);
+    }
+
     @Operation(summary = "查询分页信息")
     @PostMapping("/getPatentPageMessage")
     public Response getPatentPageMessage(@RequestBody StringRequest stringRequest) throws Exception {
@@ -303,14 +310,14 @@ public class PatentController {
     //---------------------------------商品化专利----------------
     @Operation(summary = "添加商品化专利")
     @PostMapping("/addProductPatent")
-    public Response addProductPatent(EsProductPatentVO vo) throws Exception {
+    public Response addProductPatent(@RequestBody EsProductPatentVO vo) throws Exception {
         List<Integer> ids = esProductPatentService.addProductPatent(vo);
         return Response.success(ids);
     }
 
     @Operation(summary = "删除商品化专利")
     @PostMapping("/delProductPatent")
-    public Response delProductPatent(EsProductPatentVO vo) throws Exception {
+    public Response delProductPatent(@RequestBody EsProductPatentVO vo) throws Exception {
         List<Integer> ids = esProductPatentService.delProductPatent(vo);
         return Response.success(ids);
     }

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/ProductQueryBuilder.java

@@ -15,7 +15,7 @@ public class ProductQueryBuilder implements IQueryBuilder {
 
     @Override
     public Query creteQuery() throws ParseException {
-        return QueryBuilders.hasChild(child -> child.type("product").query(i -> i.match(j -> j.field(field).query(value))));
+        return QueryBuilders.hasChild(child -> child.type("product").query(i -> i.term(j -> j.field(field).value(value))));
     }
 
     @Override

+ 38 - 10
src/main/java/cn/cslg/pas/service/business/es/EsProductPatentService.java

@@ -8,10 +8,13 @@ import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.domain.es.PatentJoin;
 import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.elasticsearch._types.query_dsl.IdsQuery;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.elasticsearch.core.DeleteRequest;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.UpdateRequest;
 import co.elastic.clients.elasticsearch.core.search.Hit;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +23,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -58,21 +62,45 @@ public class EsProductPatentService {
     public List<Integer> delProductPatent(EsProductPatentVO vo) throws Exception {
         List<Integer> ids = new ArrayList<>();
         List<Integer> productIds = vo.getProductIds();
+        List<String> patentNos = vo.getPatentNos();
         for (Integer productId : productIds) {
-            SearchRequest.Builder builder = new SearchRequest.Builder();
-            //设置查询索引
-            builder.index("patent");
-            Query q = QueryBuilders.term(n -> n.field("product_id").value(productId));
-            Query query = QueryBuilders.hasChild(i -> i.type("product").query(q));
-            builder.query(query);
-            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-            List<Hit<Patent>> hits = response.hits().hits();
-            for (Hit<Patent> hit : hits) {
-                Patent patent = hit.source();
+            List<String> productIdList = new ArrayList<>();
+            for (String patentNo : patentNos) {
+                SearchRequest.Builder builder = new SearchRequest.Builder();
+                //设置查询索引
+                builder.index("patent");
+                Query q = QueryBuilders.term(n -> n.field("product_id").value(productId));
+                //申请号
+                Query q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
+                //公开号
+                Query q2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(patentNo));
+                //授权号
+                Query q3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(patentNo));
+                Query bool = QueryBuilders.bool(i -> i.should(q1, q2, q3));
+                Query query = QueryBuilders.hasParent(parent -> parent.parentType("patent").query(bool));
+                Query bool1 = QueryBuilders.bool(i -> i.must(q, query));
+                builder.query(bool1);
 
+                SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+                List<Hit<Patent>> hits = response.hits().hits();
+                for (Hit<Patent> hit : hits) {
+                    String id = hit.id();
+                    productIdList.add(id);
+                }
             }
+
         }
 
         return ids;
     }
+
+    public Integer delProduct(String id) {
+        DeleteRequest request = DeleteRequest.of(i -> i.index("patent").id(id));
+        try {
+            client.delete(request);
+            return 1;
+        } catch (IOException e) {
+            return -1;
+        }
+    }
 }

+ 18 - 5
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -139,6 +139,8 @@ public class EsService {
         Integer taskId = queryRequest.getTaskId();
         String searchCondition = "";
         Integer projectId = queryRequest.getProjectId();
+        Integer productId = queryRequest.getProductId();
+        String productFrom = queryRequest.getFrom();
         Long current = queryRequest.getCurrent();
         Long size = queryRequest.getSize();
         String groupField = queryRequest.getGroupField();
@@ -169,15 +171,26 @@ public class EsService {
                 searchCondition = "taskId = " + taskId;
             }
         } else {
-            if (projectId != null) {
-                if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                    searchCondition = "projectId = " + projectId + " AND " + searchCondition;
-                } else {
-                    searchCondition = "projectId = " + projectId;
+            if (StringUtils.isNotEmpty(productFrom)) {
+                if (productId != null) {
+                    if (searchCondition != null && !"".equals(searchCondition.trim())) {
+                        searchCondition = "productId = " + productId + " AND " + searchCondition;
+                    } else {
+                        searchCondition = "productId = " + productId;
+                    }
+                }
+            } else {
+                if (projectId != null) {
+                    if (searchCondition != null && !"".equals(searchCondition.trim())) {
+                        searchCondition = "projectId = " + projectId + " AND " + searchCondition;
+                    } else {
+                        searchCondition = "projectId = " + projectId;
+                    }
                 }
             }
         }
 
+
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("patent");