Переглянути джерело

Merge remote-tracking branch 'origin/master'

xiexiang 1 рік тому
батько
коміт
ad73a76199
26 змінених файлів з 379 додано та 126 видалено
  1. 4 4
      src/main/java/cn/cslg/pas/common/config/WebSocketConfig.java
  2. 11 0
      src/main/java/cn/cslg/pas/common/dto/business/EsPatentFamilyDTO.java
  3. 1 0
      src/main/java/cn/cslg/pas/common/model/cronModel/Records.java
  4. 2 1
      src/main/java/cn/cslg/pas/common/utils/ResponseEnum.java
  5. 4 0
      src/main/java/cn/cslg/pas/common/vo/TaskWebSocketDTO.java
  6. 3 2
      src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java
  7. 1 1
      src/main/java/cn/cslg/pas/domain/es/FamilyPatent.java
  8. 2 2
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchPhasePrefixQueryBuilder.java
  9. 6 2
      src/main/java/cn/cslg/pas/service/business/ImportTaskService.java
  10. 1 33
      src/main/java/cn/cslg/pas/service/business/PatentNoSplitterService.java
  11. 102 2
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  12. 32 5
      src/main/java/cn/cslg/pas/service/common/MessageService.java
  13. 67 8
      src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java
  14. 2 1
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java
  15. 4 3
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromExcelThread.java
  16. 3 0
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromExcelToEsService.java
  17. 5 1
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java
  18. 2 3
      src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java
  19. 4 3
      src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java
  20. 29 12
      src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java
  21. 15 0
      src/main/resources/jsons/importTask.json
  22. 17 29
      src/main/resources/jsons/patent.json
  23. 1 1
      src/main/resources/mapper/ImportTaskMapper.xml
  24. 56 9
      src/test/java/cn/cslg/pas/service/EventServiceTests.java
  25. 3 2
      src/test/java/cn/cslg/pas/service/PatentStarServiceTests.java
  26. 2 2
      src/test/java/cn/cslg/pas/service/ProjectTaskServiceTests.java

+ 4 - 4
src/main/java/cn/cslg/pas/common/config/WebSocketConfig.java

@@ -6,8 +6,8 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter;
 
 @Configuration
 public class WebSocketConfig {
-//    @Bean
-//    public ServerEndpointExporter serverEndpointExporter() {
-//        return new ServerEndpointExporter();
-//    }
+    @Bean
+    public ServerEndpointExporter serverEndpointExporter() {
+        return new ServerEndpointExporter();
+    }
 }

+ 11 - 0
src/main/java/cn/cslg/pas/common/dto/business/EsPatentFamilyDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+@Data
+public class EsPatentFamilyDTO {
+
+    private String patentFamilyId;
+
+    private Integer familyNum;
+}

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/cronModel/Records.java

@@ -11,4 +11,5 @@ public class Records {
     Long total;
     Long current;
     Long size;
+    Integer retrieveRecordId;
 }

+ 2 - 1
src/main/java/cn/cslg/pas/common/utils/ResponseEnum.java

@@ -11,7 +11,8 @@ public enum ResponseEnum {
     NO_PERMISSION(201,"无权限"),
     PARAMS_ERROR(202,"参数错误"),
     CONDITION_ERROR(203, "检索式错误"),
-    PATENT_IMPORT_TASK_SUCCESS(903, "WebSocket请求成功")
+    PATENT_IMPORT_TASK_SUCCESS(903, "导入任务完成"),
+    PATENT_IMPORT_PATENT_PART_SUCCESS(900, "专利信息部分上传成功");
     ;
 
     private Integer code;

+ 4 - 0
src/main/java/cn/cslg/pas/common/vo/TaskWebSocketDTO.java

@@ -28,4 +28,8 @@ public class TaskWebSocketDTO {
     private Integer taskType;
     private Long percentage;
     private String oldName;
+    /**
+     * 0专利信息 1图片
+     */
+    private Integer doneType;
 }

+ 3 - 2
src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.controller.outApi;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.PatentStarListDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -24,8 +25,8 @@ public class PatentStarController {
     @PostMapping("/select")
     @Operation(summary = "一般检索接口")
     public Response select(@RequestBody PatentStarListDTO patentStarListDto) throws IOException {
-        Map<String, Object> map = patentStarApiService.patentStarSearchLocal(patentStarListDto);
-        return Response.success(map);
+        Records records = patentStarApiService.patentStarSearchLocal(patentStarListDto);
+        return Response.success(records);
     }
 
     @GetMapping("/getCnBib")

+ 1 - 1
src/main/java/cn/cslg/pas/domain/es/FamilyPatent.java

@@ -19,7 +19,7 @@ public class FamilyPatent {
     private String publicNo;
 
     @JsonProperty("grant_no")
-    private String grant_no;
+    private String grantNo;
 
     /**
      * 申请号

+ 2 - 2
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchPhasePrefixQueryBuilder.java

@@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
 import java.text.ParseException;
 
 @Component
-public class MatchPhasePrefixQueryBuilder implements IQueryBuilder{
+public class PrefixQueryBuilder implements IQueryBuilder{
     private String field = "";
     private String value = "";
     private String operator = "";
@@ -15,7 +15,7 @@ public class MatchPhasePrefixQueryBuilder implements IQueryBuilder{
 
     @Override
     public Query creteQuery() throws ParseException {
-        return QueryBuilders.matchPhrasePrefix(i -> i.field(field).query(value));
+        return QueryBuilders.prefix(i -> i.field(field).value(value));
     }
 
     public String getField() {

+ 6 - 2
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -139,7 +139,9 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         } else if (importTaskDTO.getImportToType().equals(2)) {
             importTaskCondition.setProductId(importTaskDTO.getImportToId());
         }
-    importTaskDTO.setImportContent(MathUtils.BinaryToDecimal (importTaskDTO.getImportContent()));
+        if (!importTaskDTO.getType().equals(1)) {
+            importTaskDTO.setImportContent(MathUtils.BinaryToDecimal(importTaskDTO.getImportContent()));
+        }
         importTaskCondition.setImportContent(importTaskDTO.getImportContent());
         importTaskCondition.setCrons(importTaskDTO.getCrons());
         importTaskCondition.setIfUpdate(importTaskDTO.getIfUpdate());
@@ -182,7 +184,8 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
             } catch (Exception e) {
                 throw new XiaoShiException("文件错误");
             }
-        } else if (importTaskCondition.getType().equals(4)) {
+        }
+        else if (importTaskCondition.getType().equals(4)) {
             try {
                 PatentStarListDTO patentStarListDto = new PatentStarListDTO()
                         .setCurrentQuery(importTaskCondition.getSearchCondition())
@@ -191,6 +194,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
                         .setPageNum(0)
                         .setRowCount(50)
                         .setDBType(importTaskCondition.getDbType());
+
                 //调用一般接口返回一批专利著录相关数据
                 Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
                 if (resultMap == null || (Integer) resultMap.get("total") == 0) {

+ 1 - 33
src/main/java/cn/cslg/pas/service/business/PatentNoSplitterService.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.PatentStarListDTO;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -11,37 +12,4 @@ import java.util.List;
  */
 @Service
 public class PatentNoSplitterService {
-
-    public List<List<String>> splitPatentNoByType(List<String> originalList) {
-        List<String> cnStrings = new ArrayList<>();
-        List<String> wdStrings = new ArrayList<>();
-        List<List<String>> result = new ArrayList<>();
-        result.add(cnStrings);
-        result.add(wdStrings);
-        // 记录CN类型的字符串数量
-        int cnCount = 0;
-        // 记录WD类型的字符串数量
-        int wdCount = 0;
-        //遍历初始集合
-        for (String str : originalList) {
-            if (str.startsWith("CN")) {
-                cnStrings.add(str);
-                cnCount++;
-                if (cnCount >= 1000) {
-                    cnStrings = new ArrayList<>();
-                    result.add(cnStrings);
-                    cnCount = 0;
-                }
-            } else if (str.startsWith("WD")) {
-                wdStrings.add(str);
-                wdCount++;
-                if (wdCount >= 1000) {
-                    wdStrings = new ArrayList<>();
-                    result.add(wdStrings);
-                    wdCount = 0;
-                }
-            }
-        }
-        return result;
-    }
 }

+ 102 - 2
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -3,6 +3,8 @@ package cn.cslg.pas.service.business.es;
 import cn.cslg.pas.common.core.base.IfConstant;
 import cn.cslg.pas.common.dto.PatentColumnDTO;
 import cn.cslg.pas.common.dto.PatentDTO;
+//import cn.cslg.pas.common.dto.business.EsPatentFamilyDTO;
+import cn.cslg.pas.common.dto.business.EsPatentFamilyDTO;
 import cn.cslg.pas.common.model.request.MapRequest;
 import cn.cslg.pas.common.model.request.OrderDTO;
 import cn.cslg.pas.common.model.request.QueryRequest;
@@ -11,7 +13,9 @@ import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
 import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
 import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
 import cn.cslg.pas.common.vo.PatentWithIdVO;
+import cn.cslg.pas.domain.es.FamilyPatent;
 import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentFamilyMessage;
 import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.SortOrder;
@@ -166,7 +170,7 @@ public class EsService {
         } else {
             builder.sort(sortOptionsBuilder -> sortOptionsBuilder
                     .field(fieldSortBuilder -> fieldSortBuilder
-                            .field("public_date").order(SortOrder.Desc)));
+                            .field("patent_no").order(SortOrder.Desc)));
         }
 
         //分页
@@ -289,7 +293,7 @@ public class EsService {
      * @param projectId
      * @return
      */
-    public Boolean search(String parentId, Integer projectId) throws IOException {
+    public Boolean searchPatent(String parentId, Integer projectId) throws IOException {
         boolean flag = false;
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
@@ -306,6 +310,102 @@ public class EsService {
         }
         return flag;
     }
+
+    /**
+     * 查询同族
+     * @param nos
+     * @param type
+     * @return
+     * @throws IOException
+     */
+    public EsPatentFamilyDTO selectEsPatentFamily(List<String> nos, String type) throws IOException {
+        EsPatentFamilyDTO esDTO = new EsPatentFamilyDTO();
+
+        //不存在no
+        List<String> absentList = new ArrayList<>();
+        //存在no
+        List<String> existList = new ArrayList<>();
+
+        for (String no : nos) {
+            SearchRequest.Builder builder = new SearchRequest.Builder();
+            //设置查询索引
+            builder.index("patent_family");
+            //申请号
+            Query q1 = QueryBuilders.term(t -> t.field("app_no").value(no));
+            //公开号
+            Query q2 = QueryBuilders.term(t -> t.field("public_no").value(no));
+            //授权号
+            Query q3 = QueryBuilders.term(t -> t.field("grant_no").value(no));
+            //类型
+            Query q4 = QueryBuilders.term(t -> t.field("family_type").value(type));
+            Query bool = QueryBuilders.bool(i -> i.must(q4).should(q1, q2,q3));
+            builder.query(bool);
+            SearchResponse<PatentFamilyMessage> response = client.search(builder.build(), PatentFamilyMessage.class);
+            long total = response.hits().total().value();
+            if (total > 0) {
+                List<FamilyPatent> list = new ArrayList<>();
+                List<Hit<PatentFamilyMessage>> hits = response.hits().hits();
+                for (Hit<PatentFamilyMessage> hit : hits) {
+                    String id = hit.id();
+                    PatentFamilyMessage esMess = hit.source();
+                    list.addAll(esMess.getPatent());
+                    esDTO.setPatentFamilyId(id);
+                }
+                esDTO.setFamilyNum(list.size());
+                existList.add(no);
+            } else {
+                //获取不存在的号码
+                absentList.add(no);
+                break;
+            }
+        }
+        //todo 判断是否全新/部分
+        if (existList.size() != nos.size()) {
+            if (absentList.size() == nos.size()) {
+                //插入
+            } else {
+                //更新
+            }
+        }
+
+        return esDTO;
+    }
+
+    /**
+     * 添加同族
+     * @param message
+     * @return
+     * @throws Exception
+     */
+    public String addPatentFamily(PatentFamilyMessage message) throws Exception {
+        IndexResponse indexResponse = client.index(i -> i
+                .index("patent_family")
+                .document(message)
+        );
+        return indexResponse.id();
+
+    }
+
+    /**
+     * 更新同族
+     * @param message
+     * @param id
+     * @return
+     */
+    public Integer updatePatentFamily(PatentFamilyMessage message, String id) {
+        UpdateRequest<PatentFamilyMessage, PatentFamilyMessage> req;
+        req = UpdateRequest.of(
+                b -> b.index("patent_family")
+                        .id(id)
+                        .doc(message)
+        );
+        try {
+            client.update(req, PatentFamilyMessage.class);
+            return 1;
+        } catch (IOException e) {
+            return -1;
+        }
+    }
 }
 
 

+ 32 - 5
src/main/java/cn/cslg/pas/service/common/MessageService.java

@@ -27,8 +27,19 @@ public class MessageService {
      *
 
      */
-    public void sendWebsocketMessage(ImportTaskAMVO importTaskAMVO) {
-        long percentage = (long) Math.floor((importTaskAMVO.getDoneNum() + 0D) / importTaskAMVO.getAllNum() * 100D);
+    public void sendWebsocketMessage(ImportTaskAMVO importTaskAMVO,Integer type) {
+        Integer doneNum=0;
+ if(type.equals(0)){
+            doneNum = importTaskAMVO.getDoneNum();
+        }
+        else if(type.equals(1)){
+                doneNum = importTaskAMVO.getMessageDoneNum();
+            }
+            else if(type.equals(2)){
+
+                doneNum= importTaskAMVO.getPictureDoneNum();
+        }
+        long percentage = (long) Math.floor((doneNum + 0D) / importTaskAMVO.getAllNum() * 100D);
         //通过WebSocket 在每一次循环结束后 向前端发送完成进度
         //当任务状态为完成时,flag为true
         boolean flag = importTaskAMVO.getState().equals(2);
@@ -42,12 +53,28 @@ public class MessageService {
                 .setFileName(importTaskAMVO.getFileGuid())
                 .setOldName("")
                 .setUrl("")
-                .setTotal(importTaskAMVO.getAllNum()), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), importTaskAMVO.getCreateId());
+                .setDoneType(type)
+                .setTotal(importTaskAMVO.getAllNum()), ResponseEnum.PATENT_IMPORT_PATENT_PART_SUCCESS),null);
     }
-    public void sendAllDoneMessage(ImportTaskAMVO importTaskAMVO) {
 
+
+    public void sendAllDoneMessage(ImportTaskAMVO importTaskAMVO) {
         //通过WebSocket 在每一次循环结束后 向前端发送完成进度
         //当任务状态为完成时,flag为true
-        WebSocketServer.sendInfo("任务已完成", importTaskAMVO.getCreateId());
+        long percentage = (long) Math.floor((importTaskAMVO.getAllNum() + 0D) / importTaskAMVO.getAllNum() * 100D);
+        boolean flag = importTaskAMVO.getState().equals(2);
+        WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                .setTaskId(importTaskAMVO.getId())
+                .setTaskStatus(importTaskAMVO.getState())
+                .setComplete(flag)
+                .setIndex(importTaskAMVO.getDoneNum())
+                .setTaskType(importTaskAMVO.getType())
+                .setPercentage(percentage)
+                .setFileName(importTaskAMVO.getFileGuid())
+                .setOldName("")
+                .setUrl("")
+                .setTotal(importTaskAMVO.getAllNum()), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS),null);
     }
+
+
 }

+ 67 - 8
src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java

@@ -5,6 +5,7 @@ import cn.cslg.pas.common.config.XDns;
 import cn.cslg.pas.common.dto.PatentStarDTO;
 import cn.cslg.pas.common.dto.PatentStarListDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.importTaskModel.PatentApplicant;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.vo.StarPatentVO;
@@ -46,10 +47,10 @@ import java.util.regex.Pattern;
 @Service
 
 public class PatentStarApiService {
-   @Autowired
-    private  RetrieveRecordService retrieveRecordService;
     @Autowired
-    private  CacheUtils cacheUtils;
+    private RetrieveRecordService retrieveRecordService;
+    @Autowired
+    private CacheUtils cacheUtils;
     @Autowired
     private LoginUtils loginUtils;
     @Autowired
@@ -193,7 +194,7 @@ public class PatentStarApiService {
 //        });
 //    }
 
-    public Map<String, Object> patentStarSearchLocal(PatentStarListDTO patentStarListDTO) throws IOException {
+    public Records patentStarSearchLocal(PatentStarListDTO patentStarListDTO) throws IOException {
         RetrieveRecord retrieveRecord = new RetrieveRecord();
         retrieveRecord.setConditions(patentStarListDTO.getCurrentQuery());
 
@@ -223,9 +224,13 @@ public class PatentStarApiService {
 //        else {
 //            retrieveRecord.updateById();
 //        }
-        map.put("retrieveRecordId", retrieveRecord.getId());
-        return map;
-
+        Records records = new Records();
+        records.setRetrieveRecordId(retrieveRecord.getId());
+        records.setCurrent((Long) map.get("current"));
+        records.setSize((Long) map.get("size"));
+        records.setData(map.get("records"));
+        records.setTotal((Long) map.get("total"));
+        return records;
     }
 
 
@@ -233,7 +238,7 @@ public class PatentStarApiService {
         try {
             if (PatentStarListDTO.getFormed() == null || PatentStarListDTO.getFormed() == false) {
                 String formQuery = PatentStarListDTO.getCurrentQuery();
-               PatentStarListDTO.setCurrentQuery(formatQueryService.reQuery(formQuery,"webSearchConfig"));
+                PatentStarListDTO.setCurrentQuery(formatQueryService.reQuery(formQuery, "webSearchConfig"));
                 if (PatentStarListDTO.getDBType().equals("WD")) {
                     StringBuilder stringBuilder = new StringBuilder(PatentStarListDTO.getCurrentQuery());
                     stringBuilder.insert(PatentStarListDTO.getCurrentQuery().length() - 1, "-CN/GJ");
@@ -792,4 +797,58 @@ public class PatentStarApiService {
         return jsonObject;
     }
 
+    public List<PatentStarListDTO> splitPatentNoByType(List<String> originalList, PatentStarListDTO patentStarListDTO) {
+        List<String> cnStrings = new ArrayList<>();
+        List<String> wdStrings = new ArrayList<>();
+        List<List<String>> result = new ArrayList<>();
+        result.add(cnStrings);
+        result.add(wdStrings);
+        // 记录CN类型的字符串数量
+        int cnCount = 0;
+        // 记录WD类型的字符串数量
+        int wdCount = 0;
+
+        List<PatentStarListDTO> patentStarListDTOS = new ArrayList<>();
+        //遍历初始集合
+        for (String str : originalList) {
+            if (str.startsWith("CN")) {
+                cnStrings.add(str);
+                cnCount++;
+                if (cnCount >= 100) {
+                    cnStrings = new ArrayList<>();
+                    result.add(cnStrings);
+                    cnCount = 0;
+                }
+            } else {
+                wdStrings.add(str);
+                wdCount++;
+                if (wdCount >= 100) {
+                    wdStrings = new ArrayList<>();
+                    result.add(wdStrings);
+                    wdCount = 0;
+                }
+            }
+        }
+
+        result.forEach(item -> {
+            String dbType = "CN";
+            String patentNo = item.get(0);
+            if (!patentNo.startsWith("CN")) {
+                dbType = "WD";
+            }
+            String join = StringUtils.join(item, " OR ");
+            String conditions = "AN=(" + join + ") OR PN=(" + join + ") OR GN=(" + join + ")";
+            PatentStarListDTO patentStarListDTO1 = new PatentStarListDTO();
+            patentStarListDTO1.setOrderByType(patentStarListDTO.getOrderByType());
+            patentStarListDTO1.setCurrentQuery(conditions);
+            patentStarListDTO1.setPageNum(patentStarListDTO.getPageNum());
+            patentStarListDTO1.setDBType(dbType);
+            patentStarListDTO1.setCurrentQuery(conditions);
+            patentStarListDTO1.setRowCount(patentStarListDTO.getRowCount());
+            patentStarListDTO1.setTotal(item.size());
+            patentStarListDTOS.add(patentStarListDTO1);
+        });
+
+        return patentStarListDTOS;
+    }
 }

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

@@ -34,7 +34,6 @@ public class GetPatentFromExcelThread extends Thread {
     public void run() {
         try {
             FileManagerService fileManagerService = applicationContext.getBean(FileManagerService.class);
-
             String res = fileManagerService.getSystemFileFromFMS(Arrays.asList(importTaskAMVO.getFileGuid()));
             List<SystemFile> systemFiles = JSONArray.parseArray(res, SystemFile.class);
             SystemFile systemFile = systemFiles.get(0);
@@ -73,6 +72,8 @@ public class GetPatentFromExcelThread extends Thread {
                 UploadPatentWebDTO uploadPatentWebDTO =new UploadPatentWebDTO();
                 uploadPatentWebDTO.setIfAddPatent(false);
                 uploadPatentWebDTO.setIfAddPicture(false);
+                uploadPatentWebDTO.setHaveSaveCounter(0);
+                uploadPatentWebDTO.setTotalCounter(importTaskAMVO.getShouldSaveCounter());
                 uploadPatentWebDTO.setPictureData(uploadParamsVO.getPictureData());
                 uploadPatentWebDTO.setPatent(uploadParamsVO.getPatent());
                 //专利丢入消费者队列,并唤醒消费者线程

+ 4 - 3
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromExcelThread.java

@@ -14,6 +14,7 @@ import cn.cslg.pas.domain.es.Text;
 import cn.cslg.pas.service.common.ExcuteDataToVOService;
 import cn.cslg.pas.service.common.ExcuteUploadSettingService;
 import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.common.MessageService;
 import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson.JSONArray;
 import org.apache.commons.compress.utils.IOUtils;
@@ -56,7 +57,7 @@ public class GetPatentPictureFromExcelThread extends Thread {
                     taskCondition.await();
                 }
                 UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOS.remove(0);
-                String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getStarPatentVO().getRowApplicationNo());
+                String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getPatent().getAppNo());
                 PictureData pictureData = uploadPatentWebDTO.getPictureData();
                 if(pictureData!=null){
                     String ext = pictureData.suggestFileExtension();
@@ -67,11 +68,11 @@ public class GetPatentPictureFromExcelThread extends Thread {
                     fileManagerService.uploadFileWithGuid(file, guid);
                 }
                 taskThread.ifPatentDone(uploadPatentWebDTO);
+                MessageService messageService = applicationContext.getBean(MessageService.class);
+                messageService.sendWebsocketMessage(importTaskAMVO,2);
             }
-            importTaskAMVO.setIfAddPictureDone(true);
             taskThread.awakeTaskThread();
         } catch (Exception e) {
-            importTaskAMVO.setIfAddPictureDone(true);
             taskThread.awakeTaskThread();
             e.printStackTrace();
         }

+ 3 - 0
src/main/java/cn/cslg/pas/service/importPatent/ImportFromExcelToEsService.java

@@ -11,6 +11,8 @@ public class ImportFromExcelToEsService implements PatentImportImp {
 private TaskThread taskThread;
     @Override
     public void startPatentThread() {
+        taskThread.getImportTaskAMVO().setShouldSaveCounter(2);
+        taskThread.getImportTaskAMVO().setHaveSaveCounter(0);
         GetPatentPictureFromExcelThread getPatentPictureFromExcelThread =new GetPatentPictureFromExcelThread(taskThread);
         SavePatentToEsThread savePatentToEsThread = new SavePatentToEsThread(taskThread,taskThread.getApplicationContext());
         GetPatentFromExcelThread getPatentFromExcelThread = new GetPatentFromExcelThread(taskThread, savePatentToEsThread,getPatentPictureFromExcelThread);
@@ -18,6 +20,7 @@ private TaskThread taskThread;
         getPatentFromExcelThread.start();
         getPatentPictureFromExcelThread.start();
     }
+
     @Override
     public void setTaskThread(TaskThread taskThread) {
         this.taskThread = taskThread;

+ 5 - 1
src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java

@@ -24,6 +24,7 @@ import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -114,8 +115,11 @@ public class ImportFromWebToEsService implements PatentImportImp {
             //检索式
             String conditions = importTaskAMVO.getSearchCondition();
 
+            List<PatentStarListDTO> patentStarListDtos =new ArrayList<>();
+
             //获得返回的的多个检索式 patentStarListDtos
-            List<PatentStarListDTO> patentStarListDtos = patentStarApiService.getSplitedConditions(new PatentStarListDTO()
+
+           patentStarListDtos = patentStarApiService.getSplitedConditions(new PatentStarListDTO()
                     .setCurrentQuery(conditions)
                     .setOrderBy(orderBy)
                     .setOrderByType(orderByType)

+ 2 - 3
src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java

@@ -66,7 +66,7 @@ public class SavePatentToEsThread extends Thread {
                 if (importTaskAMVO.getProjectId() != null) {
                     //根据projectId和专利id查询
                     if(patentId!=null){
-                     Boolean ifInproject=  esService.search(patentId,importTaskAMVO.getProjectId());
+                     Boolean ifInproject=  esService.searchPatent(patentId,importTaskAMVO.getProjectId());
                      if(!ifInproject) {
                          Patent patentChild = new Patent();
                          PatentJoin patentJoin = new PatentJoin();
@@ -80,14 +80,13 @@ public class SavePatentToEsThread extends Thread {
                 }
                 //导入完成,通知前台
                 MessageService messageService = applicationContext.getBean(MessageService.class);
-                messageService.sendWebsocketMessage(importTaskAMVO);
+                messageService.sendWebsocketMessage(importTaskAMVO,1);
                 importTaskAMVO.setMessageDoneNum(importTaskAMVO.getMessageDoneNum()+1);
                 taskThread.ifPatentDone(uploadPatentWebDTO);
             } catch (Exception e) {
                 System.out.println(e);
             }
         }
-        importTaskAMVO.setIfAddPatentDone(true);
         taskThread.awakeTaskThread();
     }
 

+ 4 - 3
src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java

@@ -56,17 +56,17 @@ public class SchedulingTaskService {
                     importTaskList.get(i).setState(1);
                     importTaskList.get(i).updateById();
                     importTaskAMVOS.get(i).setState(1);
+                    importTaskAMVOS.get(i).setHaveSaveCounter(0);
+                    importTaskAMVOS.get(i).setMessageDoneNum(0);
                     TaskThread taskThread = new TaskThread(importTaskAMVOS.get(i), applicationContext);
                     executor.execute(taskThread);
                 }
 
-
             }
 
         }
     }
 
-
     public List<ImportTaskAMVO> loadTaskAMVOS(List<ImportTask> importTaskList) {
         List<ImportTaskAMVO> importTaskAMVOS = new ArrayList<>();
         List<Integer> taskConditionIds = new ArrayList<>();
@@ -92,6 +92,7 @@ public class SchedulingTaskService {
                 importTaskAMVO.setDbType(importTaskCondition.getDbType());
                 importTaskAMVO.setOrderBy(importTaskCondition.getOrderBy());
                 importTaskAMVO.setOrderByType(importTaskCondition.getOrderByType());
+
             }
             ProgressVO progressVO = new ProgressVO();
             progressVO.setState(0);
@@ -104,7 +105,7 @@ public class SchedulingTaskService {
 
     }
 
-    public void pauseTask(Integer taskId,Integer state) {
+    public void pauseTask(Integer taskId, Integer state) {
         //根据id获得
         ImportTaskAMVO importTaskAMVO = importTaskAMVOS.stream().filter(item -> item.getId().equals(taskId)).findFirst().orElse(null);
         importTaskAMVO.setState(state);

+ 29 - 12
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -10,6 +10,7 @@ import cn.cslg.pas.factorys.PatentImportFactory.PatentImportFactory;
 import cn.cslg.pas.factorys.PatentImportFactory.PatentImportImp;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.business.ImportTaskService;
+import cn.cslg.pas.service.common.MessageService;
 import com.alibaba.fastjson.JSON;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Configurable;
@@ -63,34 +64,50 @@ public class TaskThread extends Thread {
         ImportTask task = importTaskService.getById(importTaskAMVO.getId());
         if (importTaskAMVO.getState().equals(1)) {
             task.setState(2);
+            importTaskAMVO.setState(2);
 
         } else {
             task.setState(importTaskAMVO.getState());
         }
         task.setDoneNum(importTaskAMVO.getDoneNum());
         task.updateById();
-        System.out.println("任务结束");
+
+        MessageService messageService = applicationContext.getBean(MessageService.class);
+        messageService.sendAllDoneMessage(importTaskAMVO);
     }
 
 
+    /**
+     * 任务是否完成代码块
+     */
     public void awakeTaskThread() {
-        importTaskAMVO.setHaveSaveCounter(importTaskAMVO.getHaveSaveCounter() + 1);
-        if (importTaskAMVO.getShouldSaveCounter().equals(importTaskAMVO.getShouldSaveCounter())) {
-            if (taskThreadLock.tryLock()) {
-                //taskLock.lock();
-                taskThreadCondition.signalAll();
-                taskThreadLock.unlock();
+        synchronized("导入任务是否完成") {
+            importTaskAMVO.setHaveSaveCounter(importTaskAMVO.getHaveSaveCounter() + 1);
+            if (importTaskAMVO.getShouldSaveCounter().equals(importTaskAMVO.getHaveSaveCounter())) {
+                if (taskThreadLock.tryLock()) {
+                    //taskLock.lock();
+                    taskThreadCondition.signalAll();
+                    taskThreadLock.unlock();
+                }
+                MessageService messageService = applicationContext.getBean(MessageService.class);
+                messageService.sendWebsocketMessage(importTaskAMVO,0);
             }
         }
     }
 
-
+    /**
+     * 专利是否导入完成代码块
+     * @param uploadPatentWebDTO
+     */
     public void ifPatentDone(UploadPatentWebDTO uploadPatentWebDTO) {
-        uploadPatentWebDTO.setHaveSaveCounter(uploadPatentWebDTO.getHaveSaveCounter() + 1);
-        if (importTaskAMVO.getShouldSaveCounter().equals(uploadPatentWebDTO.getHaveSaveCounter())) {
-            importTaskAMVO.setDoneNum(importTaskAMVO.getDoneNum() + 1);
+        synchronized("专利完成") {
+            uploadPatentWebDTO.setHaveSaveCounter(uploadPatentWebDTO.getHaveSaveCounter() + 1);
+            if (importTaskAMVO.getShouldSaveCounter().equals(uploadPatentWebDTO.getHaveSaveCounter())) {
+                importTaskAMVO.setDoneNum(importTaskAMVO.getDoneNum() + 1);
+                MessageService messageService = applicationContext.getBean(MessageService.class);
+                messageService.sendWebsocketMessage(importTaskAMVO,0);
+            }
         }
-
     }
 
 

+ 15 - 0
src/main/resources/jsons/importTask.json

@@ -147,6 +147,21 @@
     "ifSearch": "true",
     "ifGroup": "false",
     "ifShow": "true"
+  },
+  {
+    "name": "专利数据库id",
+    "type": "Integer",
+    "value": "projectId",
+    "field": "projectId",
+    "sqlField": "itc.project_id",
+    "sqlClass": "getComSql",
+    "orderClass": "",
+    "groupClass": "",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false",
+    "ifAsCondition": "true"
   }
 
+
 ]

+ 17 - 29
src/main/resources/jsons/patent.json

@@ -172,7 +172,7 @@
     "type": "String",
     "value": "PA",
     "field": "PA",
-    "esField": "applicant",
+    "esField": "applicant.name",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -184,7 +184,7 @@
     "type": "String",
     "value": "IN",
     "field": "IN",
-    "esField": "inventor",
+    "esField": "inventor.name",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -196,7 +196,7 @@
     "type": "String",
     "value": "PE",
     "field": "PE",
-    "esField": "right_holder",
+    "esField": "right_holder.name",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -276,18 +276,6 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "申请国家",
-    "type": "String",
-    "value": "appCountry",
-    "field": "appCountry",
-    "esField": "app_country",
-    "esClass": "keyWordQueryBuilder",
-    "ifSearch": "false",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
     "name": "申请人地址",
     "type": "String",
     "value": "DZ",
@@ -329,7 +317,7 @@
     "value": "appProvince",
     "field": "appProvince",
     "esField": "applicant_addr.province",
-    "esClass": "matchPhasePrefixQueryBuilder",
+    "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -341,7 +329,7 @@
     "value": "appCity",
     "field": "appCity",
     "esField": "applicant_addr.city",
-    "esClass": "matchPhasePrefixQueryBuilder",
+    "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -353,7 +341,7 @@
     "value": "appDistrict",
     "field": "appDistrict",
     "esField": "applicant_addr.district",
-    "esClass": "matchPhasePrefixQueryBuilder",
+    "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -389,7 +377,7 @@
     "value": "rightProvince",
     "field": "rightProvince",
     "esField": "right_holder_addr.province",
-    "esClass": "matchPhasePrefixQueryBuilder",
+    "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -401,7 +389,7 @@
     "value": "rightCity",
     "field": "rightCity",
     "esField": "right_holder_addr.city",
-    "esClass": "matchPhasePrefixQueryBuilder",
+    "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -413,7 +401,7 @@
     "value": "rightDistrict",
     "field": "rightDistrict",
     "esField": "right_holder_addr.district",
-    "esClass": "matchPhasePrefixQueryBuilder",
+    "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -425,7 +413,7 @@
     "value": "MC",
     "field": "MC",
     "esField": "mipc",
-    "esClass": "matchPhasePrefixQueryBuilder",
+    "esClass": "prefixQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -436,7 +424,7 @@
     "type": "String",
     "value": "mipcLevel1",
     "field": "mipcLevel1",
-    "esField": "mipc.level1",
+    "esField": "mipc.level1.keyword",
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -448,7 +436,7 @@
     "type": "String",
     "value": "mipcLevel2",
     "field": "mipcLevel2",
-    "esField": "mipc.level2",
+    "esField": "mipc.level2.keyword",
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -460,7 +448,7 @@
     "type": "String",
     "value": "mipcLevel3",
     "field": "mipcLevel3",
-    "esField": "mipc.level3",
+    "esField": "mipc.level3.keyword",
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -472,7 +460,7 @@
     "type": "String",
     "value": "mipcLevel4",
     "field": "mipcLevel4",
-    "esField": "mipc.level4",
+    "esField": "mipc.level4.keyword",
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -484,7 +472,7 @@
     "type": "String",
     "value": "mipcLevel5",
     "field": "mipcLevel5",
-    "esField": "mipc.level5",
+    "esField": "mipc.level5.keyword",
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -518,8 +506,8 @@
   {
     "name": "专利状态",
     "type": "String",
-    "value": "simpleStatus",
-    "field": "simpleStatus",
+    "value": "SS",
+    "field": "SS",
     "esField": "simple_status",
     "esClass": "keyWordQueryBuilder",
     "ifSearch": "false",

+ 1 - 1
src/main/resources/mapper/ImportTaskMapper.xml

@@ -4,7 +4,7 @@
     <select id="getImportTask" resultType="cn.cslg.pas.common.vo.business.ImportTaskVO">
         select it.name as name, it.id,it.search_condition as searchCondition,it.all_num as allNum,it.success_num as successNum,
                it.default_num as defaultNum,it.type as type,it.create_id as
-        createId,it.create_time as createTime ,it.state as  state,it.done_num as doneNum from import_task it left join import_task_condition itc on
+        createId,it.create_time as createTime ,it.state as  state,it.done_num as doneNum ,itc.file_guid as fileGuid from import_task it left join import_task_condition itc on
         it.import_task_condition_id=itc.id
         <if test="sql1!=''">
 

+ 56 - 9
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -1,13 +1,18 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.dto.PatentDTO;
+import cn.cslg.pas.common.dto.business.EsPatentFamilyDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.*;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.controller.EventController;
 import cn.cslg.pas.controller.PatentController;
+import cn.cslg.pas.domain.es.FamilyPatent;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentFamilyMessage;
 import cn.cslg.pas.service.business.ProductMarketDataService;
 import cn.cslg.pas.service.business.es.EsService;
+import co.elastic.clients.elasticsearch.core.DeleteRequest;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.http.entity.ContentType;
 import org.junit.Before;
@@ -20,10 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**
@@ -124,12 +126,19 @@ public class EventServiceTests {
 //        mapRequest.setSize(50L);
 //        mapRequest.setProjectId(1);
         StringRequest stringRequest = new StringRequest();
-//        stringRequest.setSearchQuery("PN=CN114513005A");
+        stringRequest.setSearchQuery("appCity=济南");
+//        stringRequest.setSearchQuery("mipcLevel1=H");
+//        stringRequest.setSearchQuery("agent=李桂存");
+//        stringRequest.setSearchQuery("IN=郝旭东");
+//        stringRequest.setSearchQuery("simpleStatus=3");
+//        stringRequest.setSearchQuery("CL=一种考虑电流限制和出力水平的分布式光伏机电暂态建模方法");
+//        stringRequest.setSearchQuery("AB=一种考虑电流限制和出力水平的分布式光伏机电暂态模型");
+//        stringRequest.setSearchQuery("PN=CN114513005B");
 //        stringRequest.setSearchQuery("AN=CN201810025278.2");
-        stringRequest.setSearchQuery("patentNo=CN");
-//        stringRequest.setSearchQuery("publicDate<=200903");
+//        stringRequest.setSearchQuery("patentNo=CN");
+//        stringRequest.setSearchQuery("PD<=200903");
 //        stringRequest.setSearchQuery("patentNo=CN201199922Y and (simpleFamilyNum>1 or simpleFamilyNum=0)");
-        stringRequest.setCurrent(3L);
+        stringRequest.setCurrent(1L);
         stringRequest.setSize(5L);
 //        stringRequest.setProjectId(1);
 //
@@ -139,7 +148,7 @@ public class EventServiceTests {
 
     @Test
     void test12() throws IOException {
-        Boolean bool = esService.search("YiQCGowBmB3pRkTj4NNG", 5);
+        Boolean bool = esService.searchPatent("YiQCGowBmB3pRkTj4NNG", 5);
         System.out.println(bool);
     }
 
@@ -149,5 +158,43 @@ public class EventServiceTests {
         //2.调用查询取第一页(5笔一页)
         //3.判断5笔数据是正确的;
         //4.删除测试数据
+        List<Integer> list = Arrays.asList(1, 2, 3, 4);
+        List<Integer> list1 = Arrays.asList(4, 5);
+//        list1.removeAll(list);
+        System.out.println(list1);
+    }
+
+    @Test
+    void add1() throws Exception {
+        List<FamilyPatent> list = new ArrayList<>();
+        FamilyPatent patent =new FamilyPatent();
+        patent.setAppNo("CN147258369");
+        patent.setGrantNo("CN258369147");
+        patent.setPublicNo("CN369258147");
+        FamilyPatent patent1 =new FamilyPatent();
+        patent1.setAppNo("US147258369");
+        patent1.setGrantNo("US258369147");
+        patent1.setPublicNo("US369258147");
+        list.add(patent);
+        list.add(patent1);
+        PatentFamilyMessage patentFamilyMessage =new PatentFamilyMessage();
+        patentFamilyMessage.setPatent(list);
+        patentFamilyMessage.setFamilyType("test");
+        String id = esService.addPatentFamily(patentFamilyMessage);
+        System.out.println(id);
+    }
+
+    @Test
+    void test3() throws IOException {
+        List<String> stringList = Arrays.asList("US369258147", "US258369147", "14528");
+        EsPatentFamilyDTO test = esService.selectEsPatentFamily(stringList, "test");
+        System.out.println(test);
+    }
+
+    @Test
+    void test4() throws IOException {
+        List<String> stringList = Arrays.asList("US369258147", "US258369147", "14528");
+        EsPatentFamilyDTO test = esService.selectEsPatentFamily(stringList, "test");
+        System.out.println(test);
     }
 }

+ 3 - 2
src/test/java/cn/cslg/pas/service/PatentStarServiceTests.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.core.IgnoreDTDEntityResolver;
 import cn.cslg.pas.common.dto.PatentStarListDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.RedisUtil;
 import cn.cslg.pas.common.utils.StringUtils;
@@ -52,8 +53,8 @@ public class PatentStarServiceTests {
         patentStarListDTO.setPageNum(1);
         patentStarListDTO.setRowCount(10);
         patentStarListDTO.setOrderByType("DESC");
-        Map<String, Object> map = patentStarApiService.patentStarSearchLocal(patentStarListDTO);
-        System.out.println(map);
+        Records records = patentStarApiService.patentStarSearchLocal(patentStarListDTO);
+        System.out.println(records);
     }
 
     @Test

+ 2 - 2
src/test/java/cn/cslg/pas/service/ProjectTaskServiceTests.java

@@ -80,9 +80,9 @@ public class ProjectTaskServiceTests {
             strings.add("CN123456789");
             strings.add("WD987654321");
         }
-        List<List<String>> results = patentNoSplitterService.splitPatentNoByType(strings);
+//        List<List<String>> results = patentNoSplitterService.splitPatentNoByType(strings);
 
-        System.out.println(results);
+//        System.out.println(results);
     }
 
     @Test