Browse Source

添加标签

lwhhszx 1 year ago
parent
commit
cc431b8dea

+ 12 - 0
src/main/java/cn/cslg/pas/common/dto/es/AddPatentLabelDTO.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.dto.es;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AddPatentLabelDTO {
+    private Integer projectId;
+    private String patentNo;
+    private List<String> labels;
+}

+ 37 - 0
src/main/java/cn/cslg/pas/controller/PatentLabelController.java

@@ -0,0 +1,37 @@
+package cn.cslg.pas.controller;
+
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.es.AddPatentLabelDTO;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.PatentLabelService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 专利标签管理
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/patentLabel")
+@RestController
+public class PatentLabelController {
+    @Autowired
+    private PatentLabelService patentLabelService;
+
+    @Operation(summary = "添加标签接口")
+    @PostMapping("/addPatentLabel")
+    public Response addPatentLabel(@RequestBody AddPatentLabelDTO addPatentLabelDTO) {
+        String id = null;
+        try {
+            id = patentLabelService.addPatentLabel(addPatentLabelDTO);
+        } catch (Exception e) {
+
+        }
+        return Response.success(id);
+    }
+}

+ 65 - 0
src/main/java/cn/cslg/pas/service/PatentLabelService.java

@@ -0,0 +1,65 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.es.AddPatentLabelDTO;
+import cn.cslg.pas.common.vo.PatentWithIdVO;
+import cn.cslg.pas.domain.es.ESCustomField;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.business.es.EsCustomFieldService;
+import cn.cslg.pas.service.business.es.EsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class PatentLabelService {
+    @Autowired
+    private EsCustomFieldService esCustomFieldService;
+    @Autowired
+    private EsService esService;
+
+    /**
+     * 添加专利标签
+     *
+     * @param addPatentLabelDTO
+     * @return
+     */
+    public String addPatentLabel(AddPatentLabelDTO addPatentLabelDTO) {
+        String id = null;
+        Integer projectId = addPatentLabelDTO.getProjectId();
+        List<String> labels = addPatentLabelDTO.getLabels();
+        String patentNo = addPatentLabelDTO.getPatentNo();
+        try {
+            PatentWithIdVO patentWithIdVO = esCustomFieldService.getPatentLabel(addPatentLabelDTO);
+            if (patentWithIdVO != null) {
+                Patent patent = patentWithIdVO.getPatent();
+                ESCustomField esCustomField = patent.getESCustomField();
+                esCustomField.setStatsValue(labels);
+                esCustomField.setFieldValue(labels);
+                patent.setESCustomField(esCustomField);
+                esService.updatePatent(patent, patentWithIdVO.getId());
+                id = patentWithIdVO.getId();
+            } else {
+                ESCustomField esCustomField = new ESCustomField();
+                esCustomField.setFieldType(10);
+                esCustomField.setCreateTime(new Date());
+                esCustomField.setProjectId(projectId);
+                esCustomField.setFieldValue(labels);
+                esCustomField.setStatsValue(labels);
+                id = esCustomFieldService.addEsCustomFieldToEs(esCustomField, patentNo, null);
+
+            }
+        } catch (Exception e) {
+            throw new XiaoShiException("查询失败");
+        }
+        return id;
+    }
+
+public void queryPatentLabel(){
+
+
+
+}
+}

+ 0 - 1
src/main/java/cn/cslg/pas/service/business/ScratchWordsService.java

@@ -153,7 +153,6 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
                 if (patent.getTitle() != null && patent.getTitle().size() > 0) {
                     scratchWordsVO.setTitle(patent.getTitle().get(0).getTextContent());
                 }
-
             }
 
         }

+ 44 - 4
src/main/java/cn/cslg/pas/service/business/es/EsCustomFieldService.java

@@ -1,10 +1,7 @@
 package cn.cslg.pas.service.business.es;
 
 import cn.cslg.pas.common.core.base.IfConstant;
-import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
-import cn.cslg.pas.common.dto.es.EsCustomFieldValueDTO;
-import cn.cslg.pas.common.dto.es.FieldHistoryDTO;
-import cn.cslg.pas.common.dto.es.QueryEsCustomFieldDTO;
+import cn.cslg.pas.common.dto.es.*;
 import cn.cslg.pas.common.model.request.OrderDTO;
 import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
@@ -620,6 +617,49 @@ public class EsCustomFieldService {
         return esCustomFieldHistoryHit;
 
     }
+    public PatentWithIdVO getPatentLabel(AddPatentLabelDTO addPatentLabelDTO) throws Exception {
+        PatentWithIdVO patentWithIdVO = new PatentWithIdVO();
+        Integer projectId = addPatentLabelDTO.getProjectId();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        String patentNo = addPatentLabelDTO.getPatentNo();
+        //设置查询索引
+        builder.index("patent");
+
+        //栏位
+        Query q1 = QueryBuilders.term(t -> t.field("custom_field.project_id").value(projectId));
+
+
+        Query q4 = QueryBuilders.term(t -> t.field("custom_field.field_type").value(10));
+
+        Query parentQ1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
+
+        //公开号
+        Query parentQ2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(patentNo));
+
+        //授权号
+        Query parentQ3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(patentNo));
+
+        Query parentQ = QueryBuilders.bool(i -> i.should(parentQ1, parentQ2, parentQ3));
 
+        Query q3 = QueryBuilders.hasParent(t -> t.parentType("patent").query(parentQ));
+
+        Query bool = null;
+            bool = QueryBuilders.bool(i -> i.must(q1, q3, q4));
+
+
+        builder.query(bool);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        long total = response.hits().total().value();
+        if (total > 0) {
+            List<Hit<Patent>> hits = response.hits().hits();
+            Hit<Patent> hit = hits.get(0);
+            Patent patent = hit.source();
+            patentWithIdVO.setPatent(patent);
+            patentWithIdVO.setId(hit.id());
+        } else {
+            patentWithIdVO = null;
+        }
+        return patentWithIdVO;
+    }
 
 }

+ 29 - 17
src/main/java/cn/cslg/pas/service/business/es/EsScratchWordsService.java

@@ -14,6 +14,7 @@ import cn.cslg.pas.domain.es.PatentJoin;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.permissions.PermissionService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.*;
@@ -47,19 +48,7 @@ public class EsScratchWordsService {
         if (patentNo == null) {
             throw new XiaoShiException("请输入专利号");
         }
-        //根据专利号查询专利
-        String patentId = null;
-        try {
-            PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patentNo);
-            if (patentWithIdVO != null) {
-                patentId = patentWithIdVO.getId();
-            }
-        } catch (Exception e) {
-            throw new XiaoShiException("未获取到专利");
-        }
-        if (patentId == null) {
-            throw new XiaoShiException("未获取到专利");
-        }
+
         Marking marking = new Marking();
         BeanUtils.copyProperties(scratchWords, marking);
 
@@ -120,11 +109,26 @@ public class EsScratchWordsService {
         //公开并且全部范围
         Query bool1 = QueryBuilders.bool(i -> i.must(q1, q5, q4));
         // 公开并且所在地
-        Query bool2 = QueryBuilders.bool(i -> i.must(q1, q6, q7, q4));
+         List<Query> bool2Querys=new ArrayList<>();
+        bool2Querys.add(q1);
+        bool2Querys.add(q6);
+        if(projectId!=null){
+            bool2Querys.add(q7);
+        }
+        bool2Querys.add(q4);
+        Query  bool2 = QueryBuilders.bool(i -> i.must(bool2Querys));
+
         //不公开并且全部范围
         Query bool3 = QueryBuilders.bool(i -> i.must(q2, q5, q3));
         //不公开并且所在地
-        Query bool4 = QueryBuilders.bool(i -> i.must(q2, q6, q3, q7));
+        List<Query> bool3Querys=new ArrayList<>();
+        bool3Querys.add(q2);
+        bool3Querys.add(q6);
+        if(projectId!=null){
+            bool3Querys.add(q7);
+        }
+        bool3Querys.add(q3);
+        Query bool4 = QueryBuilders.bool(i -> i.must(bool3Querys));
         Query riBool = QueryBuilders.bool(i -> i.should(bool1, bool2, bool3, bool4));
         List<Query> queries = new ArrayList<>();
         queries.add(riBool);
@@ -147,9 +151,11 @@ public class EsScratchWordsService {
         Query searchBool = QueryBuilders.bool(i -> i.must(queries));
         SearchRequest.Builder builder = new SearchRequest.Builder();
         builder.index("patent_marking");
-        if (current != null && size != null && current > 0 && size > 0) {
-            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
+        if (current == null || size == null || current <0 || size <0) {
+          current =Long.parseLong(1+"");
+          size=Long.parseLong(1000+"");
         }
+        builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
         builder.query(searchBool);
 
         long total = 0;
@@ -258,4 +264,10 @@ public class EsScratchWordsService {
             return -1;
         }
     }
+
+    public void GroupScratchWord(){
+
+
+
+    }
 }

+ 2 - 1
src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java

@@ -46,6 +46,7 @@ public class SchedulingTaskService {
             //查找任务
             LambdaQueryWrapper<ImportTask> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(ImportTask::getState, new ArrayList<>(Arrays.asList(0)))
+                    .in((ImportTask::getType),new ArrayList<>(Arrays.asList(1,2,3,4,5)))
                     .orderByDesc(ImportTask::getState);
             List<ImportTask> importTaskList = importTaskService.list(queryWrapper);
             if (importTaskList.size() > freeCount) {
@@ -88,7 +89,7 @@ public class SchedulingTaskService {
 
             ImportTaskCondition importTaskCondition = importTaskConditions.stream().filter(item -> item.getId().equals(importTask.getImportTaskConditionId())).findFirst().orElse(null);
             ImportTaskAMVO importTaskAMVO = new ImportTaskAMVO();
-            BeanUtils.copyProperties(importTask, importTaskAMVO);
+            BeanUtils.copyProperties(importTask,importTaskAMVO);
             if (importTaskCondition != null) {
                 importTaskAMVO.setFileGuid(importTaskCondition.getFileGuid());
                 importTaskAMVO.setSourceId(importTaskCondition.getSourceId());