فهرست منبع

add delete collect patent

zero 1 سال پیش
والد
کامیت
5653bcd599

+ 1 - 0
src/main/java/com/example/xiaoshiweixinback/business/exception/ExceptionEnum.java

@@ -20,6 +20,7 @@ public enum ExceptionEnum {
     //异常20000
     THE_PARAMETER_EXCEPTION("20001", "参数异常,请传入数据"),
     THE_GET_INFORMATION_TOKEN_INVALID("20002", "获取用信息token失效"),
+    THE_FAIL_TO_DELETE("20003", "删除失败"),
     SYSTEM_ERROR("999999", "系统异常");
 
     private String code;// 异常代码

+ 12 - 0
src/main/java/com/example/xiaoshiweixinback/controller/PatentController.java

@@ -9,6 +9,7 @@ import com.example.xiaoshiweixinback.checkLogin.checkLogin;
 import com.example.xiaoshiweixinback.entity.dto.esPicture.EsPictureNoDTO;
 import com.example.xiaoshiweixinback.entity.dto.esPicture.EsPatentVectorDTO;
 import com.example.xiaoshiweixinback.entity.dto.patent.CollectPatentDTO;
+import com.example.xiaoshiweixinback.entity.dto.patent.DelCollectPatentDTO;
 import com.example.xiaoshiweixinback.entity.dto.patent.ImportTaskAMVO;
 import com.example.xiaoshiweixinback.entity.dto.patent.SelectCollectPatentDTO;
 import com.example.xiaoshiweixinback.entity.vo.esPicture.EsPictureNoVo;
@@ -107,5 +108,16 @@ public class PatentController {
         return Response.success(records);
     }
 
+    @Operation(summary = "删除收藏专利--zero")
+    @PostMapping(value = "/delCollectPatent")
+    public Response delCollectPatent(@RequestBody DelCollectPatentDTO patentDTO) throws IOException {
+        boolean b = false;
+        try {
+            b = esPatentService.delCollectPatent(patentDTO);
+        } catch (IOException e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success(b);
+    }
     //--------------------------- 其他  --------------------------
 }

+ 49 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsPatentService.java

@@ -17,6 +17,7 @@ import com.example.xiaoshiweixinback.business.utils.ToolUtil;
 import com.example.xiaoshiweixinback.domain.AssoPersonProduct;
 import com.example.xiaoshiweixinback.domain.es.*;
 import com.example.xiaoshiweixinback.entity.dto.patent.CollectPatentDTO;
+import com.example.xiaoshiweixinback.entity.dto.patent.DelCollectPatentDTO;
 import com.example.xiaoshiweixinback.entity.dto.patent.PatentColumnDTO;
 import com.example.xiaoshiweixinback.entity.dto.patent.SelectCollectPatentDTO;
 import com.example.xiaoshiweixinback.entity.vo.PersonnelVO;
@@ -140,6 +141,54 @@ public class EsPatentService {
         return records;
     }
 
+    /**
+     * 删除收藏专利
+     * @param patentDTO
+     * @return
+     * @throws IOException
+     */
+    public boolean delCollectPatent(DelCollectPatentDTO patentDTO) throws IOException {
+        Integer assoPersonProductId = patentDTO.getAssoPersonProductId();
+        List<String> patentNos = patentDTO.getPatentNos();
+        List<String> patentIds = new ArrayList<>();
+        for (String patentNo : patentNos) {
+            List<String> list = this.selectPatentId(patentNo, assoPersonProductId);
+            patentIds.addAll(list);
+        }
+
+        if (!CollectionUtils.isEmpty(patentIds)) {
+            Integer num = esService.deleteWxPatent(patentIds);
+            if (num < 1) {
+                throw new BusinessException(ExceptionEnum.THE_FAIL_TO_DELETE);
+            }
+        } else {
+            return false;
+        }
+        return true;
+    }
+
+    //根据专利号、assoPersonProductId查询相关专利id
+    public List<String> selectPatentId(String patentNo,Integer assoPersonProductId) throws IOException {
+        List<String> list = new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("wxpatent");
+        Query query = QueryBuilders.term(i -> i.field("product_id").value(assoPersonProductId));
+        Query q = QueryBuilders.hasChild(i -> i.type("product").query(query));
+        Query q1 = QueryBuilders.term(i -> i.field("patent_no.keyword").value(patentNo));
+        Query bool = QueryBuilders.bool(i -> i.must(q, q1));
+        builder.query(bool);
+        //解除最大条数限制
+        builder.trackTotalHits(i -> i.enabled(true));
+        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();
+            list.add(id);
+        }
+        return list;
+    }
+
     //装载专利清单列表的数据
     public PatentColumnDTO getPatentColumnDTO(Patent patent, Integer projectId, String id) {
         PatentColumnDTO columnDTO = new PatentColumnDTO();

+ 18 - 0
src/main/java/com/example/xiaoshiweixinback/service/importPatent/EsService.java

@@ -11,6 +11,8 @@ import co.elastic.clients.elasticsearch.core.*;
 import co.elastic.clients.elasticsearch.core.search.Hit;
 import co.elastic.clients.json.JsonData;
 import com.alibaba.fastjson.JSON;
+import com.example.xiaoshiweixinback.business.exception.BusinessException;
+import com.example.xiaoshiweixinback.business.exception.ExceptionEnum;
 import com.example.xiaoshiweixinback.business.utils.parseQueryToTree.expressManager;
 import com.example.xiaoshiweixinback.business.utils.parseQueryToTree.operateNode;
 import com.example.xiaoshiweixinback.business.utils.parseQueryToTree.treeNode;
@@ -85,6 +87,22 @@ public class EsService {
     }
 
     /**
+     * 根据id删除专利
+     * @param ids
+     * @return
+     */
+    public Integer deleteWxPatent(List<String> ids) {
+        Query query = QueryBuilders.ids(n -> n.values(ids));
+        DeleteByQueryRequest request = DeleteByQueryRequest.of(i -> i.index("wxpatent").query(query));
+        try {
+            client.deleteByQuery(request);
+            return 1;
+        } catch (IOException e) {
+            throw new BusinessException(ExceptionEnum.THE_FAIL_TO_DELETE);
+        }
+    }
+
+    /**
      * 根据专利号获取专利id
      *
      * @param patentNo