lwhhszx 1 jaar geleden
bovenliggende
commit
7ea60a6e26

+ 4 - 1
src/main/java/cn/cslg/pas/common/dto/QueryScratchWordsDTO.java

@@ -15,5 +15,8 @@ public class QueryScratchWordsDTO {
     private String patentNo;
     private Date markTime;
     private String markSelectText;
+    private Long current;
+    private Long size;
 
-}
+
+    }

+ 48 - 0
src/main/java/cn/cslg/pas/common/vo/ScratchWordsVO.java

@@ -0,0 +1,48 @@
+package cn.cslg.pas.common.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ScratchWordsVO {
+    private String id;
+
+    private   Boolean isPublic;
+
+
+    private  String markColor;
+
+
+    private String markOteText;
+
+
+    private  Integer markType;
+
+    private String markSelectField;
+
+
+    private  String markSelectText;
+
+
+    private Integer markSite;
+
+
+    private Date markTime;
+
+
+    private String markUserId;
+
+    private Integer publicScope;
+
+
+    private Integer projectId;
+
+
+    private Integer publicTenantId;
+    private String createName;
+    private String patentId;
+    private String patentNo;
+    private String title;
+}

+ 12 - 1
src/main/java/cn/cslg/pas/controller/ScratchWordsController.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.QueryScratchWordsDTO;
 import cn.cslg.pas.common.dto.business.ScratchWordsDTO;
 import cn.cslg.pas.common.dto.business.UpdateScratchWordsDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
@@ -55,7 +56,7 @@ public class ScratchWordsController {
     }
 
     @Operation(summary = "删除标注")
-    @PostMapping("/removeScratchWrods")
+    @PostMapping("/removeScratchWords")
     public Response removeScratchWrods(@RequestBody List<String> ids) {
         if (ids != null && !ids.isEmpty()) {
             List<String> deleteIds = scratchWordsService.removeById(ids);
@@ -66,6 +67,16 @@ public class ScratchWordsController {
             return Response.error("删除失败");
         }
     }
+    @Operation(summary = "查询划词")
+    @PostMapping("/queryScratchWords")
+    public Response query(@RequestBody QueryScratchWordsDTO queryScratchWordsDTO) {
+        if (queryScratchWordsDTO != null) {
+            Records records= scratchWordsService.query(queryScratchWordsDTO);
 
+            return Response.success(records);
+        } else {
+            return Response.error("请求参数为null");
+        }
+    }
 
 }

+ 68 - 14
src/main/java/cn/cslg/pas/service/business/ScratchWordsService.java

@@ -1,16 +1,25 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.QueryScratchWordsDTO;
 import cn.cslg.pas.common.dto.SwQueryDTO;
 import cn.cslg.pas.common.dto.business.UpdateScratchWordsDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.ScratchWordsVO;
 import cn.cslg.pas.domain.business.ScratchWords;
 import cn.cslg.pas.domain.es.Marking;
+import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.ScratchWordsMapper;
+import cn.cslg.pas.service.business.es.EsPatentService;
 import cn.cslg.pas.service.business.es.EsScratchWordsService;
 import cn.cslg.pas.service.business.es.EsService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import co.elastic.clients.elasticsearch.core.search.Hit;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -18,7 +27,9 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -32,7 +43,8 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
     private final CacheUtils cacheUtils;
     private final LoginUtils loginUtils;
     private final EsScratchWordsService esScratchWordsService;
-    private final EsService esService;
+    private final EsPatentService esPatentService;
+    private final PermissionService permissionService;
 
     /**
      * 新增划词高亮
@@ -74,20 +86,19 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
     /**
      * 查询划词高亮
      *
-     * @param swQueryDTO
+     * @param queryScratchWordsDTO
      * @return
      */
-    public List<String> queryAll(SwQueryDTO swQueryDTO) {
-        if (swQueryDTO.getPatentNo() != null) {
-            //获取当前登陆人信息
-            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-            Integer tenantId = personnelVO.getTenantId();
-            String createId = personnelVO.getId();
+    public Records query(QueryScratchWordsDTO queryScratchWordsDTO) {
+
+        Records records = esScratchWordsService.queryScratchWord(queryScratchWordsDTO);
+        List<ScratchWordsVO> scratchWordsVOS = (List<ScratchWordsVO>) records.getData();
+        this.loadData(scratchWordsVOS);
+        records.setData(scratchWordsVOS);
+        records.setSize(queryScratchWordsDTO.getSize());
+        records.setCurrent(queryScratchWordsDTO.getCurrent());
+        return records;
 
-        } else {
-            throw new XiaoShiException("传入参数不可为空");
-        }
-        return null;
     }
 
 
@@ -100,11 +111,54 @@ public class ScratchWordsService extends ServiceImpl<ScratchWordsMapper, Scratch
         ids.forEach(item -> {
             try {
                 esScratchWordsService.removeById(item);
-            }catch (Exception e){
+            } catch (Exception e) {
                 throw new XiaoShiException("删除错误");
             }
 
         });
         return ids;
     }
-}
+
+    private void loadData(List<ScratchWordsVO> scratchWordsVOS) {
+        List<String> ids = scratchWordsVOS.stream().map(ScratchWordsVO::getMarkUserId).collect(Collectors.toList());
+        List<String> patentIds = scratchWordsVOS.stream().map(ScratchWordsVO::getPatentId).collect(Collectors.toList());
+        //查询创建人名称
+        List<Personnel> personnels = new ArrayList<>();
+        List<Hit<Patent>> patents = new ArrayList<>();
+        if (ids.size() != 0) {
+            try {
+                String res = permissionService.getPersonnelByIdsFromPCS(ids);
+                JSONObject jsonObject = JSONObject.parseObject(res);
+                personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+            } catch (Exception e) {
+
+            }
+        }
+        if (patentIds.size() != 0) {
+            try {
+                patents = esPatentService.getById(patentIds);
+            } catch (Exception e) {
+
+            }
+        }
+
+        for (ScratchWordsVO scratchWordsVO : scratchWordsVOS) {
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(scratchWordsVO.getMarkUserId())).findFirst().orElse(null);
+            if (personnel != null) {
+                scratchWordsVO.setCreateName(personnel.getPersonnelName());
+            }
+
+            Hit<Patent> patentHit = patents.stream().filter(item -> item.id().equals(scratchWordsVO.getPatentId())).findFirst().orElse(null);
+            if (patentHit != null) {
+                Patent patent = patentHit.source();
+                scratchWordsVO.setPatentNo(patent.getPatentNo());
+                if (patent.getTitle() != null && patent.getTitle().size() > 0) {
+                    scratchWordsVO.setTitle(patentHit.source().getTitle().get(0).getTextContent());
+                }
+
+            }
+
+        }
+    }
+
+        }

+ 18 - 0
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -47,6 +47,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -520,4 +521,21 @@ public class EsPatentService {
         }
         return queryList;
     }
+
+
+
+    public List<Hit<Patent>>  getById(List<String> ids) throws Exception {
+        List<Hit<Patent>> patents =new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        builder.index("patent");
+        Query q = QueryBuilders.ids(i -> i.values(ids));
+        builder.query(q);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        long total = response.hits().total().value();
+        if (total > 0) {
+            patents  = response.hits().hits();
+            }
+        return patents;
+        }
+
 }

+ 35 - 21
src/main/java/cn/cslg/pas/service/business/es/EsScratchWordsService.java

@@ -1,7 +1,12 @@
 package cn.cslg.pas.service.business.es;
 
 import cn.cslg.pas.common.dto.QueryScratchWordsDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.PatentWithIdVO;
+import cn.cslg.pas.common.vo.ScratchWordsVO;
 import cn.cslg.pas.domain.business.ScratchWords;
 import cn.cslg.pas.domain.es.Marking;
 import cn.cslg.pas.domain.es.Patent;
@@ -23,10 +28,7 @@ import org.springframework.stereotype.Service;
 
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Service
 public class EsScratchWordsService {
@@ -36,6 +38,10 @@ public class EsScratchWordsService {
     private ElasticsearchClient client;
     @Autowired
     private PermissionService permissionService;
+    @Autowired
+    private CacheUtils cacheUtils;
+    @Autowired
+    private LoginUtils loginUtils;
 
     //添加划词标注
     public String addScratchWords(ScratchWords scratchWords) {
@@ -91,9 +97,14 @@ public class EsScratchWordsService {
         return id;
     }
 
-    public void queryScratchWord(QueryScratchWordsDTO queryScratchWordsDTO) {
-        String createId = "1";
-        Integer tenantId = 1;
+    public Records queryScratchWord(QueryScratchWordsDTO queryScratchWordsDTO) {
+        Long current = queryScratchWordsDTO.getCurrent();
+        Long size = queryScratchWordsDTO.getSize();
+        Records records =new Records();
+        List<ScratchWordsVO> scratchWordsVOS = new ArrayList<>();
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        String createId = personnelVO.getId();
+        Integer tenantId = personnelVO.getTenantId();
         String createName = queryScratchWordsDTO.getCreateName();
         String patentNo = queryScratchWordsDTO.getPatentNo();
         String content = queryScratchWordsDTO.getMarkSelectText();
@@ -113,15 +124,8 @@ public class EsScratchWordsService {
         Query q6 = QueryBuilders.term(t -> t.field("markings.public_scope").value(1));
         //数据库id
         Query q7 = QueryBuilders.term(t -> t.field("public_project_id").value(projectId));
-        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 qPatent = QueryBuilders.hasParent(t -> t.parentType("patent").query(parentQ));
         //公开并且全部范围
         Query bool1 = QueryBuilders.bool(i -> i.must(q1, q6, q4));
         // 公开并且所在地
@@ -144,27 +148,37 @@ public class EsScratchWordsService {
             Query query = this.getContentQuery(content);
             queries.add(query);
         }
-        if(marketTime!=null){
-            Query query =this.getMarkTimeQuery(marketTime);
+        if (marketTime != null) {
+            Query query = this.getMarkTimeQuery(marketTime);
             queries.add(query);
         }
         Query searchBool = QueryBuilders.bool(i -> i.must(queries));
         SearchRequest.Builder builder = new SearchRequest.Builder();
-
         builder.index("patent");
+        if (current!=null&&size!=null&&current > 0 && size > 0) {
+            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
+        }
         builder.query(searchBool);
+
+        long total=0;
         try {
             SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
             List<Hit<Patent>> hits = response.hits().hits();
-            List<Patent> patentList = new ArrayList<>();
+            total = response.hits().total().value();
             for (Hit<Patent> hit : hits) {
                 Patent patent = hit.source();
-                patentList.add(patent);
+                ScratchWordsVO scratchWordsVO = new ScratchWordsVO();
+                BeanUtils.copyProperties(patent.getMarkings(), scratchWordsVO);
+                scratchWordsVO.setId(hit.id());
+                scratchWordsVOS.add(scratchWordsVO);
+                scratchWordsVO.setPatentId(patent.getPatentJoin().getParent());
             }
         } catch (Exception e) {
-            System.out.println("aa");
-        }
 
+        }
+        records.setTotal(total);
+        records.setTotal(total);
+        return records;
     }