Bläddra i källkod

拆分特征修改

lwhhszx 1 år sedan
förälder
incheckning
1a81500c9f
23 ändrade filer med 705 tillägg och 135 borttagningar
  1. 1 1
      src/main/java/cn/cslg/pas/domain/business/CompareLiteratureDTO.java
  2. 38 0
      src/main/java/cn/cslg/pas/common/dto/business/LiteratureQueryDTO.java
  3. 1 1
      src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java
  4. 3 1
      src/main/java/cn/cslg/pas/common/utils/FileUtils.java
  5. 21 0
      src/main/java/cn/cslg/pas/common/vo/AvoidFeaturesVO.java
  6. 66 0
      src/main/java/cn/cslg/pas/common/vo/CompareLiteratureVO.java
  7. 14 0
      src/main/java/cn/cslg/pas/common/vo/PatentPageMessageVO.java
  8. 15 0
      src/main/java/cn/cslg/pas/common/vo/business/CustomLiteratureVO.java
  9. 10 13
      src/main/java/cn/cslg/pas/controller/CompareLiteratureController.java
  10. 7 0
      src/main/java/cn/cslg/pas/controller/PatentController.java
  11. 0 3
      src/main/java/cn/cslg/pas/controller/ReportExportController.java
  12. 3 1
      src/main/java/cn/cslg/pas/domain/business/CompareLiterature.java
  13. 3 0
      src/main/java/cn/cslg/pas/domain/business/Feature.java
  14. 4 0
      src/main/java/cn/cslg/pas/mapper/AvoidDesignMapper.java
  15. 151 47
      src/main/java/cn/cslg/pas/service/ReportExportService.java
  16. 118 4
      src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java
  17. 67 61
      src/main/java/cn/cslg/pas/service/business/FeatureService.java
  18. 153 0
      src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java
  19. 2 0
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  20. 5 2
      src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java
  21. 4 0
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  22. 18 0
      src/main/resources/mapper/AvoidDesignMapper.xml
  23. 1 1
      src/main/resources/mapper/ImportTaskMapper.xml

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

@@ -1,4 +1,4 @@
-package cn.cslg.pas.domain.business;
+package cn.cslg.pas.common.dto;
 
 import lombok.Data;
 

+ 38 - 0
src/main/java/cn/cslg/pas/common/dto/business/LiteratureQueryDTO.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.common.dto.business;
+
+
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+/**
+ * <p>
+ * 对比文献dto类
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-02-17
+ */
+@Data
+
+public class LiteratureQueryDTO {
+
+ private Integer projectId;
+ /**
+  * 每页条数
+  */
+ private Integer size;
+
+ /**
+  * 当前页数
+  */
+ private Integer current;
+
+ /**
+  * 数据总数
+  */
+ private Integer total;
+
+
+}

+ 1 - 1
src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java

@@ -9,11 +9,11 @@ import java.util.List;
 @Data
 @Accessors(chain = true)
 public class QueryRequest {
-
     private Long current;
     private Long size;
     private String groupField;
     private String groupFieldValue;
     private List<OrderDTO> orderDTOList;
     private Integer projectId;
+
 }

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

@@ -2,6 +2,7 @@ package cn.cslg.pas.common.utils;
 
 
 import cn.cslg.pas.Application;
+import cn.hutool.core.util.IdUtil;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.springframework.boot.system.ApplicationHome;
@@ -143,7 +144,8 @@ public class FileUtils {
         return directoryName;
     }
 
-    public static FileInputStream byteToFile(byte[] bytes, String fileName) {
+    public static FileInputStream byteToFile(byte[] bytes) {
+        String fileName = IdUtil.simpleUUID() + ".png";
         File file = new File(fileName);
         FileInputStream fileInputStream = null;
         try {

+ 21 - 0
src/main/java/cn/cslg/pas/common/vo/AvoidFeaturesVO.java

@@ -0,0 +1,21 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 拆分保存特征的前端传输DTO类
+ */
+@Data
+@Accessors(chain = true)
+public class AvoidFeaturesVO {
+    private  Integer id;
+   private String patent_no;
+    private String  content;
+    private Integer right_sort;
+  private String  explain_text;
+   private String direction;
+
+}

+ 66 - 0
src/main/java/cn/cslg/pas/common/vo/CompareLiteratureVO.java

@@ -0,0 +1,66 @@
+package cn.cslg.pas.common.vo;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import org.joda.time.DateTime;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 对比文献返回类
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-12-8
+ */
+@Data
+@TableName("compare_literature")
+/*数据库中的表对应的类
+ */
+public class CompareLiteratureVO extends BaseEntity<CompareLiteratureVO> {
+    private Integer projectId;
+    private String literatureNo;
+    private String remark;
+    private Integer state;
+    private String name;
+    /**
+     * 公开号
+     */
+    private String publicNo;
+
+    /**
+     * 公开日
+     */
+    private Date publicDate;
+
+    /**
+     * 申请号
+     */
+    private String appNo;
+
+    /**
+     * 申请日
+     */
+    private Date appDate;
+
+    /**
+     * 授权号
+     */
+    private String grantNo;
+
+    private Boolean IfSignAppEarly;
+    /**
+     * 授权日
+     */
+    private Date grantDate;
+    private Integer type;
+    private Integer sysOrder;
+    private String description;
+    private Boolean ifApproval;
+    private String createId;
+    private Date createTime;
+}

+ 14 - 0
src/main/java/cn/cslg/pas/common/vo/PatentPageMessageVO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 拆分保存特征的前端传输DTO类
+ */
+@Data
+@Accessors(chain = true)
+public class PatentPageMessageVO {
+    private String patentNo;
+
+}

+ 15 - 0
src/main/java/cn/cslg/pas/common/vo/business/CustomLiteratureVO.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 自定义选项VO类
+ * @Author xiexiang
+ * @Date 2023/11/14
+ */
+@Data
+public class CustomLiteratureVO {
+
+}

+ 10 - 13
src/main/java/cn/cslg/pas/controller/CompareLiteratureController.java

@@ -1,15 +1,12 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
-import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
-import cn.cslg.pas.domain.business.CompareLiteratureDTO;
-import cn.cslg.pas.exception.XiaoShiException;
-import cn.cslg.pas.factorys.businessFactory.Business;
+import cn.cslg.pas.common.dto.CompareLiteratureDTO;
 import cn.cslg.pas.service.business.CompareLiteratureService;
 import io.swagger.v3.oas.annotations.Operation;
-import lombok.experimental.Accessors;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -31,22 +28,22 @@ public class CompareLiteratureController {
         try {
             id = compareLiteratureService.addCompareLiterature(compareLiteratureDTO);
         } catch (Exception e) {
-                return Response.error(e.getMessage());
-        }
-            return Response.success(id);
+            return Response.error(e.getMessage());
         }
+        return Response.success(id);
+    }
 
     @Operation(summary = "查询对比文献")
     @PostMapping("/queryCompareLiterature")
-    public Response queryCompareLiterature(@RequestBody CompareLiteratureDTO compareLiteratureDTO) {
-        Integer id = null;
+    public Response queryCompareLiterature(@RequestBody LiteratureQueryDTO literatureQueryDTO) {
+        Records records = null;
         try {
-            id = compareLiteratureService.addCompareLiterature(compareLiteratureDTO);
+            records = compareLiteratureService.queryCompareLiterature(literatureQueryDTO);
         } catch (Exception e) {
             return Response.error(e.getMessage());
         }
-        return Response.success(id);
+        return Response.success(records);
     }
 
 
-    }
+}

+ 7 - 0
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -7,6 +7,7 @@ import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.PatentPageMessageVO;
 import cn.cslg.pas.common.vo.business.EsCountVO;
 import cn.cslg.pas.common.vo.business.PatentKinVO;
 import cn.cslg.pas.common.vo.business.PatentNoVO;
@@ -65,4 +66,10 @@ public class PatentController {
         return Response.success(dto);
     }
 
+    @Operation(summary = "查询分页信息")
+    @PostMapping("/getPatentPageMessage")
+    public Response getPatentPageMessage(@RequestBody StringRequest stringRequest) throws Exception {
+      List<PatentPageMessageVO> patentPageMessageVOS= patentService.getPatentPageMessage(stringRequest);
+        return Response.success(patentPageMessageVOS);
+    }
 }

+ 0 - 3
src/main/java/cn/cslg/pas/controller/ReportExportController.java

@@ -1,16 +1,13 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
-import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.service.ReportExportService;
 import cn.cslg.pas.service.business.CommonService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.annotation.AccessType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;

+ 3 - 1
src/main/java/cn/cslg/pas/domain/business/CompareLiterature.java

@@ -8,7 +8,7 @@ import org.joda.time.DateTime;
 
 /**
  * <p>
- * 事件
+ * 对比文献
  * </p>
  *
  * @author 李仁杰
@@ -35,6 +35,8 @@ public class CompareLiterature extends BaseEntity<CompareLiterature> {
     private Integer sysOrder;
     @TableField(value = "description")
     private String description;
+    @TableField(value = "if_approval")
+    private Boolean ifApproval;
     @TableField(value = "create_id")
     private String createId;
     @TableField(value = "create_time")

+ 3 - 0
src/main/java/cn/cslg/pas/domain/business/Feature.java

@@ -75,4 +75,7 @@ public class Feature extends BaseEntity<Feature> {
 
     @TableField(value="sys_order")
     private Integer sysOrder;
+
+    @TableField(value="split_message_id")
+    private Integer splitMessageId;
 }

+ 4 - 0
src/main/java/cn/cslg/pas/mapper/AvoidDesignMapper.java

@@ -1,13 +1,17 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.vo.AvoidFeaturesVO;
 import cn.cslg.pas.domain.business.AvoidDesign;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * @Author xiexiang
  * @Date 2023/12/5
  */
 @Repository
 public interface AvoidDesignMapper extends BaseMapper<AvoidDesign> {
+    public List<AvoidFeaturesVO> selectAvoidDesign(Integer projectId);
 }

+ 151 - 47
src/main/java/cn/cslg/pas/service/ReportExportService.java

@@ -1,24 +1,37 @@
 package cn.cslg.pas.service;
 
+import cn.cslg.pas.common.dto.PatentDetailDTO;
 import cn.cslg.pas.common.model.SystemMO;
 import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.FileUtils;
-import cn.cslg.pas.domain.business.Project;
+import cn.cslg.pas.common.utils.FormatUtil;
+import cn.cslg.pas.common.utils.PatentRightUtils;
+import cn.cslg.pas.common.vo.AvoidFeaturesVO;
+import cn.cslg.pas.common.vo.PatentRightParams;
+import cn.cslg.pas.common.vo.RePatentClaim;
+import cn.cslg.pas.common.vo.business.PatentNoVO;
 import cn.cslg.pas.domain.business.ReportProject;
-import cn.cslg.pas.domain.business.ReportTemple;
+import cn.cslg.pas.domain.es.Text;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.AvoidDesignMapper;
 import cn.cslg.pas.service.business.ReportProjectService;
 import cn.cslg.pas.service.business.TempleService;
+import cn.cslg.pas.service.business.es.EsPatentService;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.PictureRenderData;
 import com.deepoove.poi.data.PictureType;
 import com.deepoove.poi.data.Pictures;
 import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
-import org.apache.commons.lang3.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.PictureData;
 import org.ddr.poi.html.HtmlRenderPolicy;
+import org.joda.time.format.FormatUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -26,7 +39,9 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.*;
+import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 public class ReportExportService {
     @Autowired
@@ -37,15 +52,18 @@ public class ReportExportService {
     private ReportProjectService reportProjectService;
     @Autowired
     private FileManagerService fileManagerService;
-
+    @Autowired
+    private EsPatentService esPatentService;
+    @Autowired
+    private AvoidDesignMapper avoidDesignMapper;
     /**
-     * @param reportId
+     * @param projectId
      * @param templeId
      * @return
      * @throws IOException
      * @function: 导出报告
      */
-    public String exportReport(Integer reportId, Integer templeId) throws IOException {
+    public String exportReport(Integer projectId, Integer templeId) throws IOException {
         //根据模板ID获得模板
 //        ReportTemple reportTemplate = templeService.getById(templeId);
 //        //获得模板路径
@@ -55,9 +73,9 @@ public class ReportExportService {
         String directoryName = fileUtils.createDirectory();
         String outPath = fileUtils.getSavePath(directoryName) + fileName;
 
-        ReportProject report = reportProjectService.getById(reportId);
+
         XWPFTemplate template = null;
-        template = this.avoidDesignTemplate(1);
+        template = this.avoidDesignTemplate(projectId);
 //        if (report.getReportType() == 0 || report.getReportType() == 2) {
 //           template = this.getstabilityTemplate(report, filePath);
 //        } else if (report.getReportType() == 3) {
@@ -172,36 +190,39 @@ public class ReportExportService {
 //        return template;
 //    }
 
-    private XWPFTemplate avoidDesignTemplate(Integer reportId) throws IOException {
+    private XWPFTemplate avoidDesignTemplate(Integer projectId) throws IOException {
         String filePath = fileUtils.getPath("/11.docx");
 
-//        log.info("开始处理导出规避设计报告,参数为:{}, {}", reportId, filePath);
-//        Report report = reportService.getById(reportId);
-//        String signPatentNo = report.getSignPatentNo();
-//
-//        //装载标的专利信息
-//        Map<String, Object> signPatent = this.signPantentMess(report.getSignPatentNo());
-//        System.out.println(signPatent.get(""));
-//        Map<String, Object> map = new HashMap<>();
-//        //装载标的专利信息
-//        map.put("signPatent", signPatent);
-//        map.put("rights", signPatent.get("rights"));
-//        //装载公开/公告号
-//        map.put("pantentNo", signPatentNo);
-//
-//        //装载年月日
-//        String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
-//        String[] dates = date.split("-");
-//        SystemMO systemMO = new SystemMO()
-//                .setYear(dates[0])
-//                .setMonth(dates[1])
-//                .setDay(dates[2]);
-//        map.put("sys", systemMO);
+        log.info("开始处理导出规避设计报告,参数为:{}, {}", projectId, filePath);
+        LambdaQueryWrapper<ReportProject> queryWrapper= new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId,projectId);
+
+        ReportProject report = reportProjectService.getOne(queryWrapper,false);
+        String signPatentNo = report.getSignPatentNo();
+
+        //装载标的专利信息
+        Map<String, Object> signPatent = this.signPatentMess(report.getSignPatentNo());
+        System.out.println(signPatent.get(""));
+        Map<String, Object> map = new HashMap<>();
+        //装载标的专利信息
+        map.put("signPatent", signPatent);
+        map.put("rights", signPatent.get("rights"));
+        //装载公开/公告号
+        map.put("patentNo", signPatentNo);
+
+        //装载年月日
+        String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
+        String[] dates = date.split("-");
+        SystemMO systemMO = new SystemMO()
+                .setYear(dates[0])
+                .setMonth(dates[1])
+                .setDay(dates[2]);
+        map.put("sys", systemMO);
 //
-//        //装载特征、解释、回避设计方向、回避设计总体方向
-//        List<AvoidFeaturesVO> features = avoidDesignLittleDirectionMapper.selectWholeByReportId(reportId);
+        //装载特征、解释、回避设计方向、回避设计总体方向
+        List<AvoidFeaturesVO> features = avoidDesignMapper.selectAvoidDesign(projectId);
 //        String wholeDirection = avoidDesignWholeDirectionMapper.selectWholeDirectionByReportId(reportId);
-//        map.put("features", features);
+        map.put("features", features);
 //        map.put("wholeDirection", wholeDirection);
 //
         //绑定政策(绑定集合和元素循环遍历)
@@ -209,21 +230,104 @@ public class ReportExportService {
         //把指定元素内容识别传输成html格式
         HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
         Configure configure = Configure.builder()
-//                .bind("signPatent.rights", policy)
-//                .bind("features", policy)
-//                .bind("explainText", htmlRenderPolicy)
-//                .bind("littleDirection", htmlRenderPolicy)
-//                .bind("wholeDirection", htmlRenderPolicy)
+                .bind("signPatent.rights", policy)
+                .bind("features", policy)
+                .bind("explainText", htmlRenderPolicy)
+                .bind("littleDirection", htmlRenderPolicy)
+                .bind("wholeDirection", htmlRenderPolicy)
                 .build();
-        Map<String, Object> map = new HashMap<>();
-        byte[] bytes = fileManagerService.downloadSystemFileFromFMS("CN202022791374.3_p");
-
-
-        FileInputStream fileInputStream = FileUtils.byteToFile(bytes, "aa.png");
-        map.put("p", Pictures.ofStream(fileInputStream, PictureType.PNG)
-                .create());
-        map.put("a", "张");
         XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
         return template;
     }
+
+    public Map<String, Object> signPatentMess(String patentNo) throws IOException {
+//        PatentNoVO patentVO = new PatentNoVO();
+//        patentVO.setPatentNo(patentNo);
+//        //根据专利号查询专利详细信息
+//        PatentDetailDTO patentDetailDTO = esPatentService.selectPatentDetail(patentVO);
+//        //装载单个专利的信息
+        Map<String, Object> patentMap = new HashMap<>();
+//        StringBuilder applicants = new StringBuilder();
+//        StringBuilder rightPerson = new StringBuilder();
+//
+//        //申请日
+//        patentMap.put("applicationDate", patentDetailDTO.getAppDate());
+//
+//        //公开日
+//        patentMap.put("publicDate", patentDetailDTO.getPublicDate());
+//        //公开号
+//        patentMap.put("publicNo", patentDetailDTO.getPublicNo());
+//        //专利号
+//        patentMap.put("patentNo", patentDetailDTO.getPatentNo());
+//        //专利权人
+//        patentMap.put("rightPerson", rightPerson);
+//        //图示
+//        String guid = FormatUtil.getPictureFormat(patentDetailDTO.getAppNo());
+//        PictureRenderData pictureData = this.guidToStream(guid);
+//        if (pictureData != null) {
+//            patentMap.put("abstractPath", pictureData);
+//        }
+//        //获得标题
+//        if (patentDetailDTO.getTitle() != null && patentDetailDTO.getTitle().size() > 0) {
+//            Text title = patentDetailDTO.getTitle().stream()
+//                    .filter(item -> item.getIfOrigin().equals(true)).findFirst().orElse(null);
+//            if (title != null) {
+//                patentMap.put("name", title.getTextContent());
+//            }
+//        }
+//
+//        //获得权要
+//        List<Map<String, Object>>  rights=   this.getClaimMaps(patentDetailDTO.getClaim(),patentDetailDTO.getPatentNo());
+//
+//        patentMap.put("rights", rights);
+        return patentMap;
+    }
+
+    private PictureRenderData guidToStream(String guid) {
+        PictureRenderData pictureRenderData = null;
+
+        byte[] bytes = null;
+
+        if (bytes != null) {
+            try {
+                bytes = fileManagerService.downloadSystemFileFromFMS(guid);
+            } catch (Exception e) {
+
+            }
+        }
+        FileInputStream fileInputStream = FileUtils.byteToFile(bytes);
+        pictureRenderData = Pictures.ofStream(fileInputStream, PictureType.PNG)
+                .create();
+
+        return pictureRenderData;
+    }
+
+
+    private List<Map<String, Object>> getClaimMaps(List<Text> claims, String patentNo) {
+        List<Map<String, Object>> rights = new ArrayList<>();
+        if (claims == null || claims.size() == 0) {
+            return rights;
+
+        }
+        Text claim = claims.stream().filter(item -> item.getIfOrigin().equals(true)).findFirst().orElse(null);
+        if (claim == null) {
+            return rights;
+        }
+        PatentRightParams params = new PatentRightParams();
+        params.setContent(claim.getTextContent());
+        params.setPatentNo(patentNo);
+
+        List<RePatentClaim> patentRights = PatentRightUtils.formatPatentRight(params);
+        //给权要进行格式更改
+        patentRights.forEach(item -> {
+            Map<String, Object> temMap = new HashMap<>();
+            temMap.put("rightName", "权" + (item.getSort() + 1));
+            temMap.put("content", item.getContent());
+            temMap.put("rightNameLong", "权利要求" + (item.getSort() + 1));
+            temMap.put("parentSort", item.getParentSort());
+            temMap.put("sort", item.getSort());
+            rights.add(temMap);
+        });
+        return rights;
+    }
 }

+ 118 - 4
src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java

@@ -1,23 +1,30 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
 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.CompareLiteratureVO;
 import cn.cslg.pas.domain.business.CompareLiterature;
-import cn.cslg.pas.domain.business.CompareLiteratureDTO;
-import cn.cslg.pas.domain.business.Matter;
+import cn.cslg.pas.common.dto.CompareLiteratureDTO;
+import cn.cslg.pas.domain.business.ReportProject;
+import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.CompareLiteratureMapper;
-import cn.cslg.pas.mapper.MatterMapper;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import cn.cslg.pas.service.business.es.EsService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.experimental.Accessors;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Author lrj
@@ -32,6 +39,12 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
     @Autowired
     private LoginUtils loginUtils;
 
+    @Autowired
+    private EsPatentService esPatentService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
     //添加专利对比文献
     public Integer addPatentCompareLiterature(String patentNo, Integer projectId, String createId) {
         Integer id = null;
@@ -71,4 +84,105 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
 
         return compareLiterature.getId();
     }
+
+    //查询对比文献
+    public Records queryCompareLiterature(LiteratureQueryDTO literatureQueryDTO) {
+        Integer projectId = literatureQueryDTO.getProjectId();
+        //根据对比projectId 查询对比文献
+        LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareLiterature::getProjectId, projectId);
+        Page<CompareLiterature> page = this.page(new Page<>(literatureQueryDTO.getCurrent(), literatureQueryDTO.getSize()), queryWrapper);
+        List<CompareLiterature> compareLiteratures = page.getRecords();
+
+        List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
+
+        //根据项目id查询标的专利号
+        LambdaQueryWrapper<ReportProject> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ReportProject::getProjectId, projectId);
+        ReportProject reportProject = reportProjectService.getOne(wrapper);
+
+        compareLiteratureVOS = this.loadCompareLiterature(compareLiteratures, reportProject);
+        //装载不同的类型的对比文献
+        Records records = new Records();
+              records.setData(compareLiteratureVOS);
+              records.setTotal(page.getTotal());
+              records.setSize(Long.parseLong(literatureQueryDTO.getSize().toString()));
+              records.setCurrent(Long.parseLong(literatureQueryDTO.getCurrent().toString()));
+        return records;
+    }
+
+
+    private List<CompareLiteratureVO> loadCompareLiterature(List<CompareLiterature> compareLiteratures, ReportProject reportProject) {
+        String signPatentNo = reportProject.getSignPatentNo();
+        //查询标的专利号
+        List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
+        //非专利文献列表
+        List<CompareLiterature> fileLiterature = compareLiteratures.stream().filter(item -> item.getType().equals(2)).collect(Collectors.toList());
+        //专利文献列表
+        List<String> patentNos = compareLiteratures.stream().filter(item -> item.getType().equals(1)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
+        List<Patent> patentList = new ArrayList<>();
+
+        if (reportProject.getSignPatentNo() != null) {
+            patentNos.add(reportProject.getSignPatentNo());
+        }
+
+        if (patentNos.size() > 0) {
+            try {
+                patentList = esPatentService.getPatentsByNo(patentNos);
+            } catch (Exception e) {
+                throw new XiaoShiException("装载文献信息失败");
+            }
+        }
+
+        //获得标的专利信息
+        Patent signPatent = patentList.stream()
+                .filter(item -> item.getAppNo().equals(signPatentNo)
+                        || item.getPublicNo().equals(signPatentNo) ||
+                        item.getGrantNo().equals(signPatentNo)).findFirst().orElse(null);
+
+
+        for (CompareLiterature compareLiterature : compareLiteratures) {
+            Integer id = compareLiterature.getId();
+            String literatureNo = compareLiterature.getLiteratureNo();
+            CompareLiteratureVO compareLiteratureVO = new CompareLiteratureVO();
+            compareLiteratureVO.setId(id);
+            compareLiteratureVO.setName(compareLiterature.getName());
+
+            //当为专利文献时
+            if (compareLiterature.getType().equals(1)) {
+                compareLiteratureVO.setIfSignAppEarly(false);
+                if (patentList.size() > 0) {
+                    Patent patent = patentList.stream()
+                            .filter(item -> item.getAppNo().equals(literatureNo)
+                                    || item.getPublicNo().equals(literatureNo) ||
+                                    item.getGrantNo().equals(literatureNo)).findFirst().orElse(null);
+                    if (patent != null) {
+                        compareLiteratureVO.setAppNo(patent.getAppNo());
+                        compareLiteratureVO.setAppDate(patent.getAppDate());
+                        compareLiteratureVO.setPublicDate(patent.getPublicDate());
+                        compareLiteratureVO.setPublicNo(patent.getPublicNo());
+                        compareLiteratureVO.setGrantDate(patent.getGrantDate());
+                        compareLiteratureVO.setGrantNo(patent.getGrantNo());
+
+                        //比较标的专利的申请日和对比专利的公开或者公告日
+                        if (signPatent.getAppDate() != null) {
+                            if (patent.getPublicDate() != null) {
+                                if (signPatent.getAppDate().compareTo(patent.getPublicDate()) >= 0) {
+                                    compareLiteratureVO.setIfSignAppEarly(true);
+                                }
+                            } else if (patent.getGrantDate() != null) {
+                                if (signPatent.getAppDate().compareTo(patent.getGrantDate()) >= 0) {
+                                    compareLiteratureVO.setIfSignAppEarly(true);
+                                } } }
+                    }
+                }
+
+            }
+            compareLiteratureVOS.add(compareLiteratureVO);
+        }
+
+        return compareLiteratureVOS;
+    }
+
+
 }

+ 67 - 61
src/main/java/cn/cslg/pas/service/business/FeatureService.java

@@ -68,11 +68,17 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
         LambdaQueryWrapper<PatentSplitMessage> splitWrapper = new LambdaQueryWrapper<>();
         splitWrapper.eq(PatentSplitMessage::getPatentNo, patentNo);
         splitWrapper.eq(PatentSplitMessage::getProjectId, projectId);
+        //当任务id不为空时
+        if (taskId != null) {
+            splitWrapper.eq(PatentSplitMessage::getTaskId, taskId);
+        }
         PatentSplitMessage patentSplitMessage = patentSplitMessageService.getOne(splitWrapper, false);
 
         LambdaQueryWrapper<Feature> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Feature::getProjectId, projectId)
                 .eq(Feature::getPatentNo, patentNo);
+            wrapper.eq(Feature::getSplitMessageId,patentSplitMessage.getId());
+
         List<Feature> allFeatures = new ArrayList<>();
         //如果是不重拆
         if (!ifReSplit) {
@@ -82,33 +88,32 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
             }
             //如果没有拆分过
             else {
-                allFeatures = this.splitFeature(splitBy,splitType,patentNo,projectId,patentRights);
                 patentSplitMessage = new PatentSplitMessage();
                 patentSplitMessage.setPatentNo(patentNo);
                 patentSplitMessage.setProjectId(projectId);
                 patentSplitMessage.setTenantId(personnelVO.getTenantId());
                 patentSplitMessage.setCreateId(personnelVO.getId());
                 patentSplitMessage.insert();
-                }
+                allFeatures = this.splitFeature(splitBy, splitType, patentNo, projectId, patentRights,patentSplitMessage.getId());
+            }
         }
         //当重拆时新建
         else {
-            //清除原本的
-            this.remove(wrapper);
-            allFeatures = this.splitFeature(splitBy,splitType,patentNo,projectId,patentRights);
             //更新拆分信息
             patentSplitMessage.setCreateTime(new Date());
             patentSplitMessage.setCreateId(personnelVO.getId());
             patentSplitMessage.updateById();
+            //清除原本的
+            this.remove(wrapper);
+            allFeatures = this.splitFeature(splitBy, splitType, patentNo, projectId, patentRights,patentSplitMessage.getId());
 
         }
         //装载信息并返回
         List<PatentRightVo> patentRightVos = new ArrayList<>();
-        patentRightVos=this.loadPatentRightVO(patentRights,allFeatures,projectId,patentNo);
+        patentRightVos = this.loadPatentRightVO(patentRights, allFeatures, projectId, patentNo);
         return patentRightVos;
     }
 
-
     //根据符号拆分字符串
     public List<String> splitStringByFlags(String sentence, List<String> flags) {
         List<String> sectences = new ArrayList<>();
@@ -251,8 +256,8 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
     }
 
 
-    public List<Feature> splitFeature(Integer splitBy,Integer splitType,String patentNo,Integer projectId,List<RePatentClaim> patentRights) throws IOException {
-       List<Feature> allFeatures =new ArrayList<>();
+    public List<Feature> splitFeature(Integer splitBy, Integer splitType, String patentNo, Integer projectId, List<RePatentClaim> patentRights,Integer splitMessageId) throws IOException {
+        List<Feature> allFeatures = new ArrayList<>();
         PersonnelVO personnelVO = new PersonnelVO();
         personnelVO.setId("1");
         personnelVO.setTenantId(1);
@@ -270,63 +275,64 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
             flags.add(",");
             flags.add(",");
         }
-            if (splitType.equals(0)) {  //当splitType=0仅拆解主权要
-                partRightSorts = patentRights.stream().filter(item -> item.getType().equals(1)).map(RePatentClaim::getSort).collect(Collectors.toList());
-            } else if (splitType.equals(1)) {  //当splitType=1拆解全部权要
-                partRightSorts = patentRights.stream().map(RePatentClaim::getSort).collect(Collectors.toList());
-            }
-            //遍历权要保存特征
-            for (int i = 0; i < patentRights.size(); i++) {
-                List<Feature> featureList = new ArrayList<>();
-                //根据拆分方式返回特征
-                List<String> contents = Arrays.asList(patentRights.get(i).getContent());
+        if (splitType.equals(0)) {  //当splitType=0仅拆解主权要
+            partRightSorts = patentRights.stream().filter(item -> item.getType().equals(1)).map(RePatentClaim::getSort).collect(Collectors.toList());
+        } else if (splitType.equals(1)) {  //当splitType=1拆解全部权要
+            partRightSorts = patentRights.stream().map(RePatentClaim::getSort).collect(Collectors.toList());
+        }
+        //遍历权要保存特征
+        for (int i = 0; i < patentRights.size(); i++) {
+            List<Feature> featureList = new ArrayList<>();
+            //根据拆分方式返回特征
+            List<String> contents = Arrays.asList(patentRights.get(i).getContent());
 
-                //如果是需要拆解的权要
-                if (partRightSorts.contains(patentRights.get(i).getSort())) {
-                    //获得权要的原文并且拆解
-                    contents = this.splitStringByFlags(patentRights.get(i).getContent(), flags);
-                }
-                for (int t = 0; t < contents.size(); t++) {
-                    Feature feature = new Feature();
-                    feature.setRightSort(patentRights.get(i).getSort());
-                    feature.setPatentNo(patentNo);
-                    feature.setProjectId(projectId);
-                    feature.setSysOrder(t+1);
-                    feature.setContent(contents.get(t));
-                    feature.setCreateId(personnelVO.getId());
-                    feature.setRightType(patentRights.get(i).getType());
-                    feature.setTenantId(personnelVO.getTenantId());
-                    featureList.add(feature);
-                }
-                if (featureList.size() > 0) {
-                    this.saveBatch(featureList);
-                    allFeatures.addAll(featureList);
-                }
+            //如果是需要拆解的权要
+            if (partRightSorts.contains(patentRights.get(i).getSort())) {
+                //获得权要的原文并且拆解
+                contents = this.splitStringByFlags(patentRights.get(i).getContent(), flags);
+            }
+            for (int t = 0; t < contents.size(); t++) {
+                Feature feature = new Feature();
+                feature.setRightSort(patentRights.get(i).getSort());
+                feature.setPatentNo(patentNo);
+                feature.setProjectId(projectId);
+                feature.setSysOrder(t + 1);
+                feature.setContent(contents.get(t));
+                feature.setCreateId(personnelVO.getId());
+                feature.setRightType(patentRights.get(i).getType());
+                feature.setTenantId(personnelVO.getTenantId());
+                feature.setSplitMessageId(splitMessageId);
+                featureList.add(feature);
+            }
+            if (featureList.size() > 0) {
+                this.saveBatch(featureList);
+                allFeatures.addAll(featureList);
             }
+        }
 
         return allFeatures;
     }
 
-   public List<PatentRightVo> loadPatentRightVO(List<RePatentClaim> patentRights,List<Feature>allFeatures,Integer projectId,String patentNo){
-      List<PatentRightVo> patentRightVos =new ArrayList<>();
-       //将拆解的权要和特征装载到对象PatentRightVo
-       for (int i = 0; i < patentRights.size(); i++) {
-           List<Feature> featureList = new ArrayList<>();
-           Integer sort = patentRights.get(i).getSort();
+    public List<PatentRightVo> loadPatentRightVO(List<RePatentClaim> patentRights, List<Feature> allFeatures, Integer projectId, String patentNo) {
+        List<PatentRightVo> patentRightVos = new ArrayList<>();
+        //将拆解的权要和特征装载到对象PatentRightVo
+        for (int i = 0; i < patentRights.size(); i++) {
+            List<Feature> featureList = new ArrayList<>();
+            Integer sort = patentRights.get(i).getSort();
 
-           featureList = allFeatures.stream().filter(item -> item.getRightSort().equals(sort)).collect(Collectors.toList());
-           PatentRightVo patentRightVo = new PatentRightVo();
-           patentRightVo.setPatentNo(patentRights.get(i).getPatentNo());
-           patentRightVo.setFeatures(featureList);
-           patentRightVo.setContent(patentRights.get(i).getContent());
-           patentRightVo.setSort(patentRights.get(i).getSort()+1);
-           patentRightVo.setType(patentRights.get(i).getType());
-           patentRightVo.setContentOut(patentRights.get(i).getContentOut());
-           patentRightVo.setProjectId(projectId);
-           patentRightVo.setRightName("权要" + (sort+1));
-           patentRightVo.setSignPatentNo(patentNo);
-           patentRightVos.add(patentRightVo);
-       }
-       return patentRightVos;
-   }
+            featureList = allFeatures.stream().filter(item -> item.getRightSort().equals(sort)).collect(Collectors.toList());
+            PatentRightVo patentRightVo = new PatentRightVo();
+            patentRightVo.setPatentNo(patentRights.get(i).getPatentNo());
+            patentRightVo.setFeatures(featureList);
+            patentRightVo.setContent(patentRights.get(i).getContent());
+            patentRightVo.setSort(patentRights.get(i).getSort() + 1);
+            patentRightVo.setType(patentRights.get(i).getType());
+            patentRightVo.setContentOut(patentRights.get(i).getContentOut());
+            patentRightVo.setProjectId(projectId);
+            patentRightVo.setRightName("权要" + (sort + 1));
+            patentRightVo.setSignPatentNo(patentNo);
+            patentRightVos.add(patentRightVo);
+        }
+        return patentRightVos;
+    }
 }

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

@@ -1,19 +1,36 @@
 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.PatentDetailDTO;
 import cn.cslg.pas.common.dto.PatentKinDTO;
 import cn.cslg.pas.common.dto.business.ContentDetailDTO;
+import cn.cslg.pas.common.model.request.MapRequest;
+import cn.cslg.pas.common.model.request.OrderDTO;
+import cn.cslg.pas.common.model.request.QueryRequest;
+import cn.cslg.pas.common.model.request.StringRequest;
+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.ContentVO;
+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.domain.es.*;
+import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.elasticsearch._types.SortOrder;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
 import co.elastic.clients.elasticsearch.core.search.Hit;
+import co.elastic.clients.elasticsearch.core.search.SourceConfig;
+import co.elastic.clients.elasticsearch.core.search.SourceConfigBuilders;
+import co.elastic.clients.elasticsearch.transform.Source;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import lombok.RequiredArgsConstructor;
@@ -26,6 +43,7 @@ import org.springframework.util.CollectionUtils;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -33,8 +51,11 @@ import java.util.stream.Collectors;
 public class EsPatentService {
 
     private final ElasticsearchClient client;
+    private final FormatQueryService formatQueryService;
+
     /**
      * 根据专利号查询专利详情
+     *
      * @param vo
      * @return
      * @throws IOException
@@ -94,6 +115,7 @@ public class EsPatentService {
 
     /**
      * 根据专利号查询出同族专利列表
+     *
      * @param vo
      * @return
      * @throws IOException
@@ -180,4 +202,135 @@ public class EsPatentService {
         }
         return list;
     }
+
+    /**
+     * 根据专利号批量查询专利
+     *
+     * @param patentNos
+     * @return
+     * @throws Exception
+     */
+    public List<Patent> getPatentsByNo(List<String> patentNos) throws Exception {
+        List<Patent> patentList = new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        List<Query> querys = new ArrayList<>();
+        for (String patentNo : patentNos) {
+            Query q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
+            //公开号
+            Query q2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(patentNo));
+            //授权号
+            Query q3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(patentNo));
+            Query query = QueryBuilders.bool(i -> i.should(q1, q2, q3));
+            querys.add(query);
+        }
+        Query finalQuery = QueryBuilders.bool((i -> i.should(querys)));
+        builder.query(finalQuery);
+        List<String> reSources = this.rePatentSource();
+        builder.source(sourceOptionsBuilder -> sourceOptionsBuilder
+                .filter(fieldSourceBuilder -> fieldSourceBuilder
+                        .includes(reSources)));
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        if (hits != null && hits.size() > 0) {
+            Patent patent = hits.get(0).source();
+            patentList.add(patent);
+        }
+        return patentList;
+    }
+
+
+    private List<String> rePatentSource() {
+        List<String> rePatentSource = new ArrayList<>();
+        rePatentSource.add("patent_no");
+        rePatentSource.add("app_no");
+        rePatentSource.add("app_date");
+        rePatentSource.add("public_no");
+        rePatentSource.add("public_date");
+        rePatentSource.add("grant_no");
+        rePatentSource.add("grant_date");
+        return rePatentSource;
+    }
+
+
+    /**
+     * 检索上一页下一页信息
+     *
+     * @param queryRequest 检索条件
+     * @return
+     */
+    public List<PatentPageMessageVO> getPatentPageMessage(QueryRequest queryRequest) throws Exception {
+        List<PatentPageMessageVO> patentPageMessageVOS= new ArrayList<>();
+        PatentDTO dto = new PatentDTO();
+        String searchCondition = "";
+        Integer projectId = queryRequest.getProjectId();
+        Long current = queryRequest.getCurrent();
+        Long size = queryRequest.getSize();
+
+        //判断表达式
+        if (queryRequest instanceof StringRequest) {
+            searchCondition = ((StringRequest) queryRequest).getSearchQuery();
+        } else if (queryRequest instanceof MapRequest) {
+            Map<String, Object> map = ((MapRequest) queryRequest).getSearchQuery();
+            StringBuilder stringBuilder = new StringBuilder();
+            for (String key : map.keySet()) {
+                Object value = map.get(key);
+                if (!"".contentEquals(stringBuilder)) {
+                    stringBuilder = stringBuilder.append(" AND ").append(key).append("=").append(value);
+                } else {
+                    stringBuilder = stringBuilder.append(key).append("=").append(value);
+                }
+            }
+            searchCondition = stringBuilder.toString();
+        }
+        if (projectId != null) {
+            if (searchCondition != null && !"".equals(searchCondition.trim())) {
+                searchCondition = "projectId = " + projectId + " AND " + searchCondition;
+            } else {
+                searchCondition = "projectId = " + projectId;
+            }
+        }
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        //1. 解析检索条件
+        treeNode tree = expressManager.getInstance().Parse(searchCondition, false);
+        //格式化检索式
+        //3. 从es中检索数据
+        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent");
+        //4. 返回数据
+        builder.query(q);
+        //排序
+        List<OrderDTO> dtoList = queryRequest.getOrderDTOList();
+        if (!CollectionUtils.isEmpty(dtoList)) {
+            for (OrderDTO orderDTO : dtoList) {
+                if (orderDTO.getOrderType().equals(IfConstant.NO)) {
+                    builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+                            .field(fieldSortBuilder -> fieldSortBuilder
+                                    .field(orderDTO.getOrderBy()).order(SortOrder.Asc)));
+                } else {
+                    builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+                            .field(fieldSortBuilder -> fieldSortBuilder
+                                    .field(orderDTO.getOrderBy()).order(SortOrder.Desc)));
+                }
+            }
+        } else {
+            builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+                    .field(fieldSortBuilder -> fieldSortBuilder
+                            .field("patent_no.keyword").order(SortOrder.Desc)));
+        }
+        //分页
+        if (current > 0 && size > 0) {
+            builder.from(current.intValue()).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);
+        }
+        return patentPageMessageVOS;
+    }
 }

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

@@ -118,6 +118,8 @@ public class EsService {
         return patentWithIdVO;
     }
 
+
+
     /**
      * Es检索
      *

+ 5 - 2
src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java

@@ -748,8 +748,8 @@ public class PatentStarApiService {
 
 
     private List<PatentColumnDTO> loadPatent(List<StarPatentVO> starPatentVOS) {
-        List<PatentColumnDTO> patentColumnDTOS = new ArrayList<>();
 
+        List<PatentColumnDTO> patentColumnDTOS = new ArrayList<>();
         starPatentVOS.forEach(item -> {
             PatentColumnDTO patentColumnDTO = new PatentColumnDTO();
             //申请号
@@ -773,20 +773,23 @@ public class PatentStarApiService {
                 }
 
             }
+
             //装载申请日
             if (item.getApplicationDate() != null && !item.getApplicationDate().trim().equals("")) {
                 patentColumnDTO.setAppDate(DateUtils.strToDate(item.getApplicationDate()));
             }
+
             //装载公开日
             if (item.getPublicDate() != null && !item.getPublicDate().trim().equals("")) {
                 patentColumnDTO.setPublicDate(DateUtils.strToDate(item.getPublicDate()));
             }
+
             //装载申请人
             if (item.getApplicantStr() != null && !item.getApplicantStr().trim().equals("")) {
                 List<String> names = Arrays.asList(item.getApplicantStr().split(";"));
                 patentColumnDTO.setApplicant(names);
-
             }
+
             //装载发明人
             if (item.getInventorStr() != null && !item.getInventorStr().trim().equals("")) {
                 List<String> names = Arrays.asList(item.getInventorStr().split(";"));

+ 4 - 0
src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java

@@ -252,6 +252,10 @@ public class GetCataloguingFromWebThread extends Thread {
             }
         }
 
+        if (starPatentVO.getAgencyStr() != null && !starPatentVO.getAgencyStr().equals("")) {
+                patent.setAgency(starPatentVO.getAgencyStr());
+
+        }
         //装载公开日
         if (starPatentVO.getPublicDate() != null && !starPatentVO.getPublicDate().equals("")) {
             Date date = DateUtils.strToDate(starPatentVO.getPublicDate());

+ 18 - 0
src/main/resources/mapper/AvoidDesignMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="cn.cslg.pas.mapper.AvoidDesignMapper">
+    <select id="selectAvoidDesign" resultType="cn.cslg.pas.common.vo.AvoidFeaturesVO">
+        select f.id,
+               patent_no,
+               content,
+               right_sort,
+               explain_text,
+               direction,
+        from feature f
+                 left join avoid_design a on f.id = a.feature_id
+        where f.project_id = #{projectId}
+        order by f.sys_order
+    </select>
+
+
+</mapper>

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

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.cslg.pas.mapper.ImportTaskMapper">
     <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,
+        select it.name as name, it.id,it.search_condition as searchCondition,it.all_num as allNum,
                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 ,itc.file_guid as fileGuid from import_task it left join import_task_condition itc on
         it.import_task_condition_id=itc.id