فهرست منبع

6/6 修改装载优先权日

lwhhszx 1 سال پیش
والد
کامیت
f050658995

+ 22 - 0
src/main/java/cn/cslg/pas/common/model/importPDF/AddImportPDFTaskDTO.java

@@ -0,0 +1,22 @@
+package cn.cslg.pas.common.model.importPDF;
+
+import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AddImportPDFTaskDTO {
+
+    /**
+     * 文件guid
+     */
+    private String fileGuid;
+    /**
+     * 0公开
+     * 1授权
+     */
+    private Integer pdfType;
+    private String remark;
+}

+ 3 - 1
src/main/java/cn/cslg/pas/common/utils/FileUtils.java

@@ -211,7 +211,9 @@ public class FileUtils {
     public String getSystemPath(String url) {
         return getStaticPath(COMMON_FILE) + FILE_SEPARATOR + url;
     }
-
+    public static String getSystemPath2(String url) {
+        return getStaticPath(COMMON_FILE) + FILE_SEPARATOR + url;
+    }
     public  static void  writeFile(String json, String FilePath) {
 
         try {

+ 1 - 0
src/main/java/cn/cslg/pas/common/vo/ImportTaskAMVO.java

@@ -95,4 +95,5 @@ public class ImportTaskAMVO {
     private Integer messageThreadCounter;
     private String patentNoStr;
     private List<EsCustomFieldDTO> fieldDTOS;
+    private Integer pdfType;
 }

+ 3 - 0
src/main/java/cn/cslg/pas/common/vo/es/EsPatentCommonVO.java

@@ -28,4 +28,7 @@ public class EsPatentCommonVO {
     private List<OrderDTO> orderDTOList;
 
     private List<EsCustomFieldValueDTO> customFields;
+
+    private List<String> isDelete;
+    private List<String> isAdd;
 }

+ 9 - 14
src/main/java/cn/cslg/pas/controller/ImportTaskController.java

@@ -4,6 +4,7 @@ package cn.cslg.pas.controller;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.ImportTaskDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.importPDF.AddImportPDFTaskDTO;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.factorys.businessFactory.Business;
@@ -21,19 +22,7 @@ import org.springframework.web.bind.annotation.*;
 public class ImportTaskController {
 
     @Autowired
-    private SystemDictService systemDictService;
-
-    @Autowired
-    private CommonService commonService;
-
-    @Autowired
-    private ScenarioService scenarioService;
-
-    @Autowired
-    private AssoScenarioMatterService assoScenarioMatterService;
-
-    @Autowired
-    private PersonFieldService personFieldService;
+    private ImportTaskService importTaskService;
 
     @Autowired
     private BusinessFactory businessFactory;
@@ -68,5 +57,11 @@ public class ImportTaskController {
         return Response.success("id");
     }
 
-//
+
+@Operation(summary = "添加pdf导入任务")
+@PostMapping("/addPdfTask")
+public Response addPdfTask(@RequestBody AddImportPDFTaskDTO addImportPDFTaskDTO) throws Exception {
+  Integer id=  importTaskService.addPdfTask(addImportPDFTaskDTO);
+    return Response.success(id);
+}
 }

+ 1 - 0
src/main/java/cn/cslg/pas/domain/business/ImportTask.java

@@ -93,4 +93,5 @@ public class ImportTask extends BaseEntity<ImportTask> {
     private Integer pdfDoneNum;
     @TableField(value = "picture_done_num")
     private Integer pictureDoneNum;
+    private String remark;
 }

+ 2 - 0
src/main/java/cn/cslg/pas/domain/business/ImportTaskCondition.java

@@ -102,5 +102,7 @@ public class ImportTaskCondition extends BaseEntity<ImportTaskCondition> {
     @TableField(value = "custom_fields")
     private String customFields;
 
+    @TableField(value = "pdf_type")
+    private Integer pdfType;
 
 }

+ 4 - 0
src/main/java/cn/cslg/pas/factorys/PatentImportFactory/PatentImportFactory.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.factorys.PatentImportFactory;
 
 import cn.cslg.pas.service.importPatent.ImportFromExcelToEsService;
 import cn.cslg.pas.service.importPatent.ImportFromWebToEsService;
+import cn.cslg.pas.service.importPatent.ImportPDFBatchService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Component;
@@ -21,6 +22,9 @@ public class PatentImportFactory {
         else if(shapeType.equals("importFromExcelToEsService")){
             return applicationContext.getBean(ImportFromExcelToEsService.class);
         }
+        else if(shapeType.equals("importPDFBatchService")){
+            return applicationContext.getBean(ImportPDFBatchService.class);
+        }
         return null;
     }
 }

+ 23 - 0
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -7,6 +7,7 @@ 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.model.cronModel.SystemFile;
+import cn.cslg.pas.common.model.importPDF.AddImportPDFTaskDTO;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.utils.*;
@@ -528,4 +529,26 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         return sqls;
 
     }
+
+
+
+    public  Integer addPdfTask(AddImportPDFTaskDTO addImportPDFTaskDTO){
+        String fileGuid =addImportPDFTaskDTO.getFileGuid();
+        Integer pdfType =addImportPDFTaskDTO.getPdfType();
+        String remark =addImportPDFTaskDTO.getRemark();
+        ImportTaskCondition importTaskCondition =new ImportTaskCondition();
+        importTaskCondition.setFileGuid(fileGuid);
+        importTaskCondition.setType(5);
+        importTaskCondition.setPdfType(pdfType);
+        importTaskCondition.setCreateId("1");
+        importTaskCondition.insert();
+        ImportTask importTask =new ImportTask();
+        importTask.setImportTaskConditionId(importTaskCondition.getId());
+         importTask.setRemark(remark);
+         importTask.setCreateId("1");
+         importTask.setType(5);
+         importTask.insert();
+        schedulingTaskService.startTask();
+        return  importTask.getId();
+    }
 }

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

@@ -123,7 +123,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
             }
 
         } catch (Exception e) {
-
+e.printStackTrace();
         }
 
     }

+ 110 - 131
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -19,10 +19,12 @@ import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
 import cn.cslg.pas.common.vo.ContentVO;
 import cn.cslg.pas.common.vo.EsConfigVO;
 import cn.cslg.pas.common.vo.PatentPageMessageVO;
+import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.common.vo.business.PatentKinDetailVO;
 import cn.cslg.pas.common.vo.business.PatentKinVO;
 import cn.cslg.pas.common.vo.business.PatentNoVO;
 import cn.cslg.pas.common.vo.business.SelectProductVO;
+import cn.cslg.pas.common.vo.es.EsPatentCommonVO;
 import cn.cslg.pas.domain.es.*;
 import cn.cslg.pas.mapper.ProductCategoryMapper;
 import cn.cslg.pas.mapper.ProductMapper;
@@ -34,6 +36,8 @@ import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.SortOptions;
 import co.elastic.clients.elasticsearch._types.SortOrder;
+import co.elastic.clients.elasticsearch._types.aggregations.Aggregate;
+import co.elastic.clients.elasticsearch._types.aggregations.StringTermsBucket;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.DeleteResponse;
@@ -81,6 +85,7 @@ public class EsPatentService {
     @Autowired
     @Lazy
     private EsService esService;
+
     /**
      * 根据专利号查询专利详情
      *
@@ -98,7 +103,7 @@ public class EsPatentService {
         Query q2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(vo.getPatentNo()));
         //授权号
         Query q3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(vo.getPatentNo()));
-        Query query = QueryBuilders.bool(i -> i.should(q1,q2,q3));
+        Query query = QueryBuilders.bool(i -> i.should(q1, q2, q3));
         builder.query(query);
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         List<Hit<Patent>> hits = response.hits().hits();
@@ -129,14 +134,14 @@ public class EsPatentService {
         builder.index("legal_event");
         List<Query> queries = new ArrayList<>();
 
-            Query q1 = QueryBuilders.term(i -> i.field("app_no").value(patentNo));
-            queries.add(q1);
+        Query q1 = QueryBuilders.term(i -> i.field("app_no").value(patentNo));
+        queries.add(q1);
 
-            Query q2 = QueryBuilders.term(i -> i.field("public_no").value(patentNo));
-            queries.add(q2);
+        Query q2 = QueryBuilders.term(i -> i.field("public_no").value(patentNo));
+        queries.add(q2);
 
-            Query q3 = QueryBuilders.term(i -> i.field("grant_no").value(patentNo));
-            queries.add(q3);
+        Query q3 = QueryBuilders.term(i -> i.field("grant_no").value(patentNo));
+        queries.add(q3);
 
         if (!CollectionUtils.isEmpty(queries)) {
             Query query = QueryBuilders.bool(i -> i.should(queries));
@@ -290,14 +295,14 @@ public class EsPatentService {
         }
         if (!CollectionUtils.isEmpty(systemFiles)) {
             SystemFile systemFile1 = systemFiles.stream().filter(item -> item.getGuid().equals(pdfFormat1)).findFirst().orElse(null);
-            SystemFile systemFile2 =  systemFiles.stream().filter(item->item.getGuid().equals(pdfFormat2)).findFirst().orElse(null);
-            if(systemFile1!=null) {
+            SystemFile systemFile2 = systemFiles.stream().filter(item -> item.getGuid().equals(pdfFormat2)).findFirst().orElse(null);
+            if (systemFile1 != null) {
                 InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
                 dto.setPdfGuid(pdfFormat1);
                 dto.setType(0);
                 list.add(dto);
             }
-            if(systemFile2!=null) {
+            if (systemFile2 != null) {
                 InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
                 dto.setPdfGuid(pdfFormat2);
                 dto.setType(1);
@@ -351,8 +356,8 @@ public class EsPatentService {
         Query q3 = QueryBuilders.term(t -> t.field("patent.grant_no").value(no));
         //同族类型
         Query q4 = QueryBuilders.term(t -> t.field("family_type").value(type));
-        Query q =QueryBuilders.bool(i->i.should(q1,q2,q3));
-        Query bool = QueryBuilders.bool(i -> i.must(q4,q));
+        Query q = QueryBuilders.bool(i -> i.should(q1, q2, q3));
+        Query bool = QueryBuilders.bool(i -> i.must(q4, q));
         builder.query(bool);
         //分页
         if (pageNum > 0 && pageSize > 0) {
@@ -581,56 +586,42 @@ public class EsPatentService {
 
         Long current = queryRequest.getCurrent();
         Long size = queryRequest.getSize();
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent");
-        Query q = this.getQuery(queryRequest);
-        //4. 返回数据
-        builder.query(q);
-        //排序
-        List<OrderDTO> dtoList = queryRequest.getOrderDTOList();
-        if (!CollectionUtils.isEmpty(dtoList)) {
-            String json = CommonService.readJsonFile("patent.json");
-            List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
-            for (OrderDTO orderDTO : dtoList) {
-                EsConfigVO configVO = esConfigVOS.stream().filter(item -> item.getField().equals(orderDTO.getOrderBy())).findFirst().orElse(null);
-                if (configVO != null) {
-                    if (orderDTO.getOrderType().equals(IfConstant.NO)) {
-                        builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-                                .field(fieldSortBuilder -> fieldSortBuilder
-                                        .field(configVO.getEsField()).order(SortOrder.Asc)));
-                    } else {
-                        builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-                                .field(fieldSortBuilder -> fieldSortBuilder
-                                        .field(configVO.getEsField()).order(SortOrder.Desc)));
-                    }
-                }
+        EsPatentCommonVO esPatentCommonVO = esService.tranPatentRequestToComVO(queryRequest);
+
+        Records records = new Records();
+        if (esPatentCommonVO.getEsField() == null || esPatentCommonVO.getEsField().equals("")) {
+            SearchRequest.Builder builder = esService.getCommonPatent(esPatentCommonVO);
+            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+            List<Hit<Patent>> hits = response.hits().hits();
+            for (Hit<Patent> hit : hits) {
+                PatentPageMessageVO patentPageMessageVO = new PatentPageMessageVO();
+                patentPageMessageVO.setPatentNo(hit.source().getPatentNo());
+                patentPageMessageVOS.add(patentPageMessageVO);
             }
+            records.setTotal(response.hits().total().value());
         } else {
-            builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-                    .field(fieldSortBuilder -> fieldSortBuilder
-                            .field("patent_no.keyword").order(SortOrder.Desc)));
-        }
-        //分页
-        if (current > 0 && size > 0) {
-            builder.from(current.intValue() - 1).size(size.intValue());
-        }
-        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-        List<Hit<Patent>> hits = response.hits().hits();
-        for (Hit<Patent> hit : hits) {
-            PatentPageMessageVO patentPageMessageVO = new PatentPageMessageVO();
-            patentPageMessageVO.setPatentNo(hit.source().getPatentNo());
-            patentPageMessageVOS.add(patentPageMessageVO);
+            SearchRequest.Builder builder = esService.getCommonPatent(esPatentCommonVO);
+            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+            Aggregate statsAgg = response.aggregations().get("statsBucket");
+            Long total = statsAgg.statsBucket().count();
+            records.setTotal(total);
+            Aggregate agg = response.aggregations().get("Agg");
+            List<StringTermsBucket> termsBuckets = agg.sterms().buckets().array();
+
+            for (StringTermsBucket termsBucket : termsBuckets) {
+                PatentPageMessageVO patentPageMessageVO = new PatentPageMessageVO();
+                String key = termsBucket.key().stringValue();
+                PatentWithIdVO patentWithIdVO = esService.getPatentColumnDTOByGroup2(key, esPatentCommonVO.getProjectId(), esPatentCommonVO.getEsField());
+                patentPageMessageVO.setPatentNo(patentWithIdVO.getPatent().getPatentNo());
+                patentPageMessageVOS.add(patentPageMessageVO);
+            }
         }
-        Records records = new Records();
-        records.setTotal(response.hits().total().value());
         records.setSize(size);
         records.setCurrent(current);
         records.setData(patentPageMessageVOS);
         return records;
     }
 
-
     /**
      * 检索上一页下一页信息
      *
@@ -640,8 +631,8 @@ public class EsPatentService {
     public List<Patent> getPatentsWithNotNo(QueryRequest queryRequest, List<String> patentNos) throws Exception {
         List<Patent> patentList = new ArrayList<>();
         SearchRequest.Builder builder = new SearchRequest.Builder();
-        Long current =queryRequest.getCurrent();
-        Long size =queryRequest.getSize();
+        Long current = queryRequest.getCurrent();
+        Long size = queryRequest.getSize();
         //设置查询索引
         builder.index("patent");
         Query q = this.getQuery(queryRequest);
@@ -695,7 +686,7 @@ public class EsPatentService {
     public Query getQuery(QueryRequest queryRequest) throws Exception {
         String searchCondition = "";
         Integer projectId = queryRequest.getProjectId();
-        Integer taskId =queryRequest.getTaskId();
+        Integer taskId = queryRequest.getTaskId();
         //判断表达式
         if (queryRequest instanceof StringRequest) {
             searchCondition = ((StringRequest) queryRequest).getSearchQuery();
@@ -718,8 +709,7 @@ public class EsPatentService {
             } else {
                 searchCondition = "taskId = " + taskId;
             }
-        }
-       else if (projectId != null) {
+        } else if (projectId != null) {
             if (searchCondition != null && !"".equals(searchCondition.trim())) {
                 searchCondition = "projectId = " + projectId + " AND " + searchCondition;
             } else {
@@ -739,12 +729,12 @@ public class EsPatentService {
         treeNode tree = expressManager.getInstance().Parse(searchCondition, false);
         //格式化检索式
         //3. 从es中检索数据
-        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent",null);
+        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent", null);
 
         return q;
     }
 
-    private List<Query> getNoNotInQuery(List<String> patentNos) {
+    public List<Query> getNoNotInQuery(List<String> patentNos) {
         List<Query> queryList = new ArrayList<>();
         for (String patentNo : patentNos) {
             Query q1 = QueryBuilders.term(t -> t.field("patent_no.keyword").value(patentNo));
@@ -753,6 +743,37 @@ public class EsPatentService {
         return queryList;
     }
 
+    public Query getEntireNotInQuery(EsPatentCommonVO commonVO) throws Exception {
+        Integer projectId = commonVO.getProjectId();
+        Integer productId = commonVO.getProductId();
+        Integer taskId = commonVO.getTaskId();
+        String searchCondition = commonVO.getSearchCondition();
+        String productFrom = commonVO.getProductFrom();
+        List<String> isAdd = commonVO.getIsAdd();
+        List<String> isDelete = commonVO.getIsDelete();
+        List<EsCustomFieldValueDTO> customFields = commonVO.getCustomFields();
+        if (!CollectionUtils.isEmpty(customFields)) {
+            String customFieldCondition = esService.parseCustomField(customFields, projectId, taskId);
+            if (StringUtils.isNotEmpty(searchCondition)) {
+                searchCondition = searchCondition + " AND " + customFieldCondition;
+            } else {
+                searchCondition = customFieldCondition;
+            }
+        }
+        String condition = esService.appendIdsCondition(searchCondition, taskId, productFrom, projectId, productId);
+        //1. 解析检索条件
+        treeNode tree = expressManager.getInstance().Parse(condition, false);
+        //3. 从es中检索数据
+        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent", projectId);
+        Query reQuery = null;
+        if (isDelete != null && isDelete.size() > 0) {
+            List<Query> notInQuery = this.getNoNotInQuery(isDelete);
+            reQuery = QueryBuilders.bool(i -> i.must(q).mustNot(notInQuery));
+        } else {
+            reQuery = QueryBuilders.bool(i -> i.must(q));
+        }
+        return reQuery;
+    }
 
     /**
      * 根据id查询
@@ -782,84 +803,42 @@ public class EsPatentService {
     }
 
 
-    public List<PatentNoWithIdVO> getPatentIdsWithNotNo(QueryRequest queryRequest, List<String> patentNos,Long startNum,Long endNum) throws Exception {
-        List<PatentNoWithIdVO> patentWithIdVOS=new ArrayList<>();
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        Long current =queryRequest.getCurrent();
-        Long size =queryRequest.getSize();
-        String groupField = queryRequest.getGroupField();
+    public List<PatentNoWithIdVO> getPatentIdsWithNotNo(QueryRequest queryRequest, List<String> patentNos, Long startNum, Long endNum) throws Exception {
+        List<PatentNoWithIdVO> patentWithIdVOS = new ArrayList<>();
 
-        //设置查询索引
-        builder.index("patent");
-        Query q = this.getQuery(queryRequest);
+        EsPatentCommonVO esPatentCommonVO = esService.tranPatentRequestToComVO(queryRequest);
+        esPatentCommonVO.setIsDelete(patentNos);
 
-        Query reQuery = null;
-        if (patentNos != null && patentNos.size() > 0) {
-            List<Query> notInQuery = this.getNoNotInQuery(patentNos);
-            reQuery = QueryBuilders.bool(i -> i.must(q).mustNot(notInQuery));
-        } else {
-            reQuery = QueryBuilders.bool(i -> i.must(q));
-        }
-        //4. 返回数据
-        builder.query(reQuery);
-        if (startNum > 0 && endNum>0) {
-            builder.from(startNum.intValue()-1).size((endNum.intValue()-startNum.intValue())+1);
-        }
-        List<String> reSources = this.rePatentSource();
-        builder.source(sourceOptionsBuilder -> sourceOptionsBuilder
-                .filter(fieldSourceBuilder -> fieldSourceBuilder
-                        .includes(reSources)));
-
-        //判断同族分组
-        String str = "";
-        if (StringUtils.isNotEmpty(groupField)) {
-            switch (groupField) {
-                case "simpleFamilyId":
-                    str = "simple_family_id";
-                    break;
-                case "inpadocFamilyId":
-                    str = "inpadoc_family_id";
-                    break;
-                case "patsnapFamilyId":
-                    str = "patsnap_family_id";
-                    break;
-            }
-        }
-
-
-
-
-        List<SortOptions> optionsList = new ArrayList<>();
-        List<OrderDTO> dtoList = queryRequest.getOrderDTOList();
-        if (!CollectionUtils.isEmpty(dtoList)) {
-            String json = CommonService.readJsonFile("patent.json");
-            List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
-            for (OrderDTO orderDTO : dtoList) {
-                EsConfigVO configVO = esConfigVOS.stream().filter(item -> item.getField().equals(orderDTO.getOrderBy())).findFirst().orElse(null);
-                if (configVO != null) {
-                    if (orderDTO.getOrderType().equals(IfConstant.NO)) {
-                        SortOptions sortOptions = SortOptions.of(i -> i.field(j -> j.field(configVO.getEsField()).order(SortOrder.Asc).missing(-1)));
-                        optionsList.add(sortOptions);
-                    } else {
-                        SortOptions sortOptions = SortOptions.of(i -> i.field(j -> j.field(configVO.getEsField()).order(SortOrder.Desc).missing(-1)));
-                        optionsList.add(sortOptions);
-                    }
-                }
+        if (esPatentCommonVO.getEsField() == null || esPatentCommonVO.getEsField().equals("")) {
+            SearchRequest.Builder builder = esService.getCommonPatent(esPatentCommonVO);
+            if (startNum > 0 && endNum > 0) {
+                builder.from(startNum.intValue() - 1).size((endNum.intValue() - startNum.intValue()) + 1);
             }
-        } else {
-            SortOptions sortOptions = SortOptions.of(i -> i.field(j -> j.field("patent_no.keyword").order(SortOrder.Desc).missing(-1)));
-            optionsList.add(sortOptions);
-        }
-        builder.sort(optionsList);
-        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-        List<Hit<Patent>> hits = response.hits().hits();
-        for (Hit<Patent> hit : hits) {
-            if (hits != null && hits.size() > 0) {
-                PatentNoWithIdVO patentWithIdVO =new PatentNoWithIdVO();
+            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+            List<Hit<Patent>> hits = response.hits().hits();
+            for (Hit<Patent> hit : hits) {
+                PatentNoWithIdVO patentWithIdVO = new PatentNoWithIdVO();
                 patentWithIdVO.setId(hit.id());
                 patentWithIdVO.setPatentNo(hit.source().getPatentNo());
                 patentWithIdVOS.add(patentWithIdVO);
             }
+        } else {
+            SearchRequest.Builder builder = esService.getCommonPatent(esPatentCommonVO);
+            if (startNum > 0 && endNum > 0) {
+                builder.from(startNum.intValue() - 1).size((endNum.intValue() - startNum.intValue()) + 1);
+            }
+            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+            Aggregate agg = response.aggregations().get("Agg");
+            List<StringTermsBucket> termsBuckets = agg.sterms().buckets().array();
+
+            for (StringTermsBucket termsBucket : termsBuckets) {
+                String key = termsBucket.key().stringValue();
+                PatentWithIdVO patentWithIdVO = esService.getPatentColumnDTOByGroup2(key, esPatentCommonVO.getProjectId(), esPatentCommonVO.getEsField());
+                PatentNoWithIdVO patentNoWithIdVO = new PatentNoWithIdVO();
+                patentNoWithIdVO.setId(patentWithIdVO.getId());
+                patentNoWithIdVO.setPatentNo(patentWithIdVO.getPatent().getPatentNo());
+                patentWithIdVOS.add(patentNoWithIdVO);
+            }
         }
         return patentWithIdVOS;
     }

+ 70 - 44
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -237,34 +237,16 @@ public class EsService {
 
     //获取通用部分方法--检索专利
     public SearchRequest.Builder getCommonPatent(EsPatentCommonVO commonVO) throws Exception {
-        Integer taskId = commonVO.getTaskId();
-        Integer projectId = commonVO.getProjectId();
-        Integer productId = commonVO.getProductId();
-        String searchCondition = commonVO.getSearchCondition();
-        String productFrom = commonVO.getProductFrom();
         String esField = commonVO.getEsField();
         Long current = commonVO.getCurrent();
         Long size = commonVO.getSize();
 
-        List<EsCustomFieldValueDTO> customFields = commonVO.getCustomFields();
-        if (!CollectionUtils.isEmpty(customFields)) {
-            String customFieldCondition = this.parseCustomField(customFields, projectId, taskId);
-            if (StringUtils.isNotEmpty(searchCondition)) {
-                searchCondition = searchCondition + " AND " + customFieldCondition;
-            } else {
-                searchCondition = customFieldCondition;
-            }
-        }
-        String condition = this.appendIdsCondition(searchCondition, taskId, productFrom, projectId, productId);
-
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("patent");
-        //1. 解析检索条件
-        treeNode tree = expressManager.getInstance().Parse(condition, false);
-        //3. 从es中检索数据
-        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent", projectId);
-        builder.query(q);
+
+        Query reQuery = esPatentService.getEntireNotInQuery(commonVO);
+        builder.query(reQuery);
         //判断同族分组
         if (StringUtils.isNotEmpty(esField)) {
             List<SortOptions> options = new ArrayList<>();
@@ -313,34 +295,15 @@ public class EsService {
 
     //获取通用部分方法--批量删除、标引、查询价值曲线
     public SearchRequest.Builder getCommonPatentByGroup(EsPatentCommonVO commonVO) throws Exception {
-        Integer taskId = commonVO.getTaskId();
-        Integer projectId = commonVO.getProjectId();
-        Integer productId = commonVO.getProductId();
-        String searchCondition = commonVO.getSearchCondition();
-        String productFrom = commonVO.getProductFrom();
         String esField = commonVO.getEsField();
         Long current = commonVO.getCurrent();
         Long size = commonVO.getSize();
-
-        List<EsCustomFieldValueDTO> customFields = commonVO.getCustomFields();
-        if (!CollectionUtils.isEmpty(customFields)) {
-            String customFieldCondition = this.parseCustomField(customFields, projectId, taskId);
-            if (StringUtils.isNotEmpty(searchCondition)) {
-                searchCondition = searchCondition + " AND " + customFieldCondition;
-            } else {
-                searchCondition = customFieldCondition;
-            }
-        }
-        String condition = this.appendIdsCondition(searchCondition, taskId, productFrom, projectId, productId);
+        Query reQuery = esPatentService.getEntireNotInQuery(commonVO);
 
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("patent");
-        //1. 解析检索条件
-        treeNode tree = expressManager.getInstance().Parse(condition, false);
-        //3. 从es中检索数据
-        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent", projectId);
-        builder.query(q);
+        builder.query(reQuery);
         //判断同族分组
         if (StringUtils.isNotEmpty(esField)) {
             List<SortOptions> options = new ArrayList<>();
@@ -403,6 +366,27 @@ public class EsService {
         return dto;
     }
 
+    public PatentWithIdVO getPatentColumnDTOByGroup2(String key, Integer projectId, String field) throws Exception {
+        PatentWithIdVO dto = new PatentWithIdVO();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query query = QueryBuilders.term(i -> i.field("project_id").value(projectId));
+        Query q1 = QueryBuilders.hasChild(i -> i.type("project").query(query));
+        Query q2 = QueryBuilders.term(i -> i.field(field).value(key));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, q2));
+        builder.query(bool);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        if (!CollectionUtils.isEmpty(hits)) {
+            String id = hits.get(0).id();
+            Patent patent = hits.get(0).source();
+            dto.setPatent(patent);
+            dto.setId(id);
+        }
+        return dto;
+    }
+
     //装载专利清单列表的数据
     public PatentColumnDTO getPatentColumnDTO(Patent patent, Integer projectId, String id) {
         PatentColumnDTO columnDTO = new PatentColumnDTO();
@@ -589,7 +573,7 @@ public class EsService {
             for (int i = 0; i < nos.size(); i++) {
                 String s = nos.get(i);
                 if (i != nos.size() - 1) {
-                    str = str + s  + ",";
+                    str = str + s + ",";
                 } else {
                     str = str + s + "\"";
                 }
@@ -610,7 +594,7 @@ public class EsService {
             for (int i = 0; i < nos.size(); i++) {
                 String s = nos.get(i);
                 if (i != nos.size() - 1) {
-                    str = str + s  + " " + "OR" + " ";
+                    str = str + s + " " + "OR" + " ";
                 } else {
                     str = str + s + ")";
                 }
@@ -1597,6 +1581,48 @@ public class EsService {
         }
     }
 
+    public EsPatentCommonVO tranPatentRequestToComVO(QueryRequest queryRequest) {
+        StringRequest stringRequest = (StringRequest) queryRequest;
+        EsPatentCommonVO commonVO = new EsPatentCommonVO();
+        try {
+            Integer taskId = stringRequest.getTaskId();
+            Integer projectId = stringRequest.getProjectId();
+            Integer productId = stringRequest.getProductId();
+            Long current = stringRequest.getCurrent();
+            Long size = stringRequest.getSize();
+            String productFrom = stringRequest.getFrom();
+            String searchCondition = stringRequest.getSearchQuery();
+            String groupField = stringRequest.getGroupField();
+            //判断同族分组
+            String str = "";
+            if (StringUtils.isNotEmpty(groupField)) {
+                switch (groupField) {
+                    case "simpleFamilyId":
+                        str = "simple_family_id";
+                        break;
+                    case "inpadocFamilyId":
+                        str = "inpadoc_family_id";
+                        break;
+                    case "patsnapFamilyId":
+                        str = "patsnap_family_id";
+                        break;
+                }
+            }
+            String esField = str;
+            commonVO.setTaskId(taskId);
+            commonVO.setProjectId(projectId);
+            commonVO.setProductId(productId);
+            commonVO.setSearchCondition(searchCondition);
+            commonVO.setProductFrom(productFrom);
+            commonVO.setCurrent(current);
+            commonVO.setSize(size);
+            commonVO.setEsField(esField);
+            commonVO.setCustomFields(stringRequest.getCustomFields());
+            commonVO.setOrderDTOList(stringRequest.getOrderDTOList());
+        } catch (Exception e) {
+        }
+        return commonVO;
+    }
 }
 
 

+ 30 - 1
src/main/java/cn/cslg/pas/service/importPatent/ImportPDFBatchService.java

@@ -1,9 +1,11 @@
 package cn.cslg.pas.service.importPatent;
 
+import cn.cslg.pas.common.model.importPDF.AddImportPDFTaskDTO;
 import cn.cslg.pas.common.utils.FileUtils;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.utils.ResponseEnum;
 import cn.cslg.pas.common.utils.WebSocketServer;
+import cn.cslg.pas.factorys.PatentImportFactory.PatentImportImp;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ZipUtil;
@@ -19,10 +21,11 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
-public class ImportPDFBatchService {
+public class ImportPDFBatchService implements PatentImportImp {
     @Autowired
     private FileUtils fileUtils;
 
+    private TaskThread taskThread;
     @Async("singleThreadAsyncTaskExecutor")
     @Transactional(rollbackFor = Exception.class)
     public void batchUpload(String url, Integer type, String remark, Integer userId) {
@@ -52,4 +55,30 @@ public class ImportPDFBatchService {
             FileUtil.del(tempPath);
         }
     }
+
+
+    public  void startPatent(AddImportPDFTaskDTO addImportPDFTaskDTO){
+        String fileGuid =addImportPDFTaskDTO.getFileGuid();
+
+
+
+    }
+
+
+
+    @Override
+    public Boolean startPatentThread() {
+
+        taskThread.getImportTaskAMVO().setThreadCounter(1);
+        taskThread.getImportTaskAMVO().setThreadDoneCounter(0);
+
+        ImportPDFBatchThread importPDFBatchThread = new ImportPDFBatchThread(taskThread);
+        importPDFBatchThread.start();
+        return true;
+    }
+
+    @Override
+    public void setTaskThread(TaskThread taskThread) {
+        this.taskThread = taskThread;
+    }
 }

+ 92 - 0
src/main/java/cn/cslg/pas/service/importPatent/ImportPDFBatchThread.java

@@ -0,0 +1,92 @@
+package cn.cslg.pas.service.importPatent;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.FileUtils;
+import cn.cslg.pas.common.utils.FormatUtil;
+import cn.cslg.pas.common.vo.ImportTaskAMVO;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.common.PatentStarApiService;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ZipUtil;
+import com.alibaba.fastjson.JSONArray;
+import org.apache.commons.compress.utils.IOUtils;
+import org.springframework.context.ApplicationContext;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ImportPDFBatchThread extends Thread {
+    private TaskThread taskThread;
+    private ApplicationContext applicationContext;
+    private ImportTaskAMVO importTaskAMVO;
+
+    @Override
+    public void run() {
+        String tempPath = null;
+        try {
+            importTaskAMVO.getFileGuid();
+            Integer pdfType =importTaskAMVO.getPdfType();
+            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);
+            String suffix = systemFile.getFileName().substring(systemFile.getFileName().lastIndexOf("."));
+            //调用文件系统取出文件接口,获得文件流
+            byte[] bytes = fileManagerService.downloadSystemFileFromFMS(importTaskAMVO.getFileGuid());
+            //创建临时文件tempFile,并将文件读取到tempFile
+            File tempFile = File.createTempFile(systemFile.getFileName() + "temp", suffix);
+            try (
+                    InputStream inputStream = new ByteArrayInputStream(bytes);
+                    FileOutputStream outputStream = new FileOutputStream(tempFile)
+            ) {
+                IOUtils.copy(inputStream, outputStream); // 将输入流复制到临时文件
+            }
+            String tempDirectoryName = IdUtil.simpleUUID();
+            tempPath = FileUtils.getSystemPath2(tempDirectoryName);
+            File tempDirectory = new File(tempPath);
+            if (!tempDirectory.exists()) {
+                tempDirectory.mkdir();
+            }
+            ZipUtil.unzip(tempFile,tempDirectory);
+            tempFile.delete();
+            List<File> fileList = FileUtil.loopFiles(tempPath).stream().filter(item -> FileUtil.getType(item).equals("pdf")).collect(Collectors.toList());
+            for (int i = 0; i < fileList.size(); i++) {
+                File file = fileList.get(i);
+                String fileName = file.getName();
+                String patentNo = FileUtil.getPrefix(file);
+                System.out.println(patentNo);
+                EsPatentService esPatentService =applicationContext.getBean(EsPatentService.class);
+             List<Patent> patentList=   esPatentService.getPatentsByNo(Arrays.asList(patentNo),true,null,null);
+               if(patentList!=null&&patentList.size()>0){
+                   Patent patent =patentList.get(0);
+                   String guid1 = FormatUtil.getPDFFormat(patent.getPatentNo(), pdfType);
+                   fileManagerService.uploadFileWithGuid(file, guid1);
+               }
+
+            }
+
+
+            taskThread.awakeTaskThread();
+        } catch (Exception e) {
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        } finally {
+            FileUtil.del(tempPath);
+        }
+    }
+
+    public ImportPDFBatchThread(TaskThread taskThread) {
+        this.importTaskAMVO = taskThread.getImportTaskAMVO();
+        this.applicationContext = taskThread.getApplicationContext();
+        this.taskThread = taskThread;
+    }
+}

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

@@ -112,10 +112,11 @@ public class SchedulingTaskService {
                 importTaskAMVO.setOrderByType(importTaskCondition.getOrderByType());
                 importTaskAMVO.setProjectType(importTaskCondition.getProjectType());
                 importTaskAMVO.setPatentNoStr(importTaskCondition.getPatentNos());
+                importTaskAMVO.setPdfType(importTaskCondition.getPdfType());
                 if (importTaskCondition.getCustomFields() != null) {
 
                     JSONArray jsonArray = JSONArray.parseArray(importTaskCondition.getCustomFields());
-                    List<EsCustomFieldDTO> dtos=  jsonArray.toJavaList(EsCustomFieldDTO.class);
+                    List<EsCustomFieldDTO> dtos = jsonArray.toJavaList(EsCustomFieldDTO.class);
                     importTaskAMVO.setFieldDTOS(dtos);
                 }
                 LambdaQueryWrapper<ReportProject> rQueryWrapper = new LambdaQueryWrapper<>();
@@ -157,4 +158,8 @@ public class SchedulingTaskService {
 
 
     }
+
+    public void startPdfTask() {
+
+    }
 }

+ 10 - 3
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -50,10 +50,16 @@ public class TaskThread extends Thread {
         this.importTaskAMVO = importTaskAMVO;
         //十进制转二进制
         String imContents = "0000";
-        //当任务为
+        //当任务为excel导入
         if (importTaskAMVO.getType().equals(1)) {
             imContents = "1100";
-        } else if (!importTaskAMVO.getImportContent().equals(0)) {
+        }
+        //当任务为pdf导入
+        else if(importTaskAMVO.getType().equals(5))
+        {
+            imContents = "0001";
+        }
+            else if (!importTaskAMVO.getImportContent().equals(0)) {
             imContents = MathUtils.fun(2, importTaskAMVO.getImportContent());
         }
         //下载字段
@@ -79,6 +85,7 @@ public class TaskThread extends Thread {
             this.patentProcess.setPictureDoneNum(importTaskAMVO.getDoneNum());
             this.patentProcess.setPictureDefaultNum(0);
         }
+
         if (ifCataloguing == '1' || ifFullText == '1') {
             threadCount += 1;
             this.patentProcess.setPatentMessageDefaultNum(0);
@@ -130,7 +137,7 @@ public class TaskThread extends Thread {
             importTaskAMVO.setState(2);
             MailSendService mailSendService = applicationContext.getBean(MailSendService.class);
 
-            mailSendService.sendImportTaskDoneEmail("导入任务",task.getName(),task.getCreateId());
+//            mailSendService.sendImportTaskDoneEmail("导入任务",task.getName(),task.getCreateId());
 
         } else {
             task.setState(importTaskAMVO.getState());

+ 5 - 0
src/main/resources/jsons/importTaskConfig.json

@@ -18,5 +18,10 @@
     "taskType": 4,
     "importClass": "importFromWebToEsService",
     "importTo": 1
+  },
+  {
+    "taskType": 5,
+    "importClass": "importPDFBatchService",
+    "importTo": 1
   }
 ]