Przeglądaj źródła

批量上传对比文献

lwhhszx 1 rok temu
rodzic
commit
850c62fcb8
32 zmienionych plików z 1352 dodań i 137 usunięć
  1. 4 4
      src/main/java/cn/cslg/pas/common/dto/CompareLiteratureDTO.java
  2. 4 2
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddClaimDTO.java
  3. 11 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddClaimsDTO.java
  4. 3 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/QueryClaimDTO.java
  5. 10 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/QueryReportAffairDTO.java
  6. 7 6
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateBatchLiteratureDTO.java
  7. 34 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateBatchLiteraturesDTO.java
  8. 9 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateLiteratureOrderDTO.java
  9. 3 2
      src/main/java/cn/cslg/pas/common/utils/ResponseEnum.java
  10. 11 0
      src/main/java/cn/cslg/pas/common/vo/CompareLiteratureVO.java
  11. 4 1
      src/main/java/cn/cslg/pas/common/vo/ImportTaskAMVO.java
  12. 2 0
      src/main/java/cn/cslg/pas/common/vo/QueryFiledVO.java
  13. 19 0
      src/main/java/cn/cslg/pas/common/vo/WebSocketMessageVO.java
  14. 25 0
      src/main/java/cn/cslg/pas/common/vo/invalidReport/PatentClaimVO.java
  15. 4 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/ReportAffairVO.java
  16. 53 4
      src/main/java/cn/cslg/pas/controller/CompareLiteratureController.java
  17. 22 5
      src/main/java/cn/cslg/pas/controller/PatentClaimController.java
  18. 4 3
      src/main/java/cn/cslg/pas/controller/ReportAffairController.java
  19. 24 0
      src/main/java/cn/cslg/pas/domain/business/EvidenceReason.java
  20. 3 1
      src/main/java/cn/cslg/pas/domain/business/PatentClaim.java
  21. 288 30
      src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java
  22. 13 9
      src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java
  23. 10 3
      src/main/java/cn/cslg/pas/service/business/ReportAffairService.java
  24. 131 11
      src/main/java/cn/cslg/pas/service/business/invalidReport/PatentClaimService.java
  25. 21 12
      src/main/java/cn/cslg/pas/service/common/MessageService.java
  26. 59 39
      src/main/java/cn/cslg/pas/service/common/PersonFieldService.java
  27. 473 0
      src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java
  28. 6 4
      src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java
  29. 15 1
      src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java
  30. 17 0
      src/test/java/cn/cslg/pas/service/CompareLiteratureServiceTests.java
  31. 23 0
      src/test/java/cn/cslg/pas/service/ImportSinglePatentServiceTests.java
  32. 40 0
      src/test/java/cn/cslg/pas/service/PatentClaimServiceTest.java

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

@@ -14,10 +14,10 @@ public class CompareLiteratureDTO {
      private String   description; //描述
      private Integer   projectId; //报告id
      private String authorName; //作者
-     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+     @DateTimeFormat(pattern = "yyyy-MM-dd")
+     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
      private Date  publicDate; //公开时间
-     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+     @DateTimeFormat(pattern = "yyyy-MM-dd")
+     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
      private Date appDate;
 }

+ 4 - 2
src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddClaimDTO.java

@@ -1,13 +1,15 @@
 package cn.cslg.pas.common.dto.invalidDTO;
 
+import lombok.Data;
+
+@Data
 public class AddClaimDTO {
     private Integer id;
     private Integer sysOrder;
     private String content;
     private Integer claimType;
     private Integer contentType;
-    private Integer parentOrder;
+    private String parentOrder;
     private Integer projectId;
     private Integer optionType;
-
 }

+ 11 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddClaimsDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AddClaimsDTO {
+    private Integer projectId;
+    private List<AddClaimDTO> addClaimDTOs;
+}

+ 3 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/QueryClaimDTO.java

@@ -1,8 +1,11 @@
 package cn.cslg.pas.common.dto.invalidDTO;
 
+import lombok.Data;
+
 /**
  * 查询权利要求
  */
+@Data
 public class QueryClaimDTO {
     private  Integer projectId;
 }

+ 10 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/QueryReportAffairDTO.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class QueryReportAffairDTO {
+    private Integer projectId;
+}

+ 7 - 6
src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateBatchLiteratureDTO.java

@@ -2,12 +2,13 @@ package cn.cslg.pas.common.dto.invalidDTO;
 
 import lombok.Data;
 
+import java.util.Date;
+import java.util.List;
+
 @Data
 public class UpdateBatchLiteratureDTO {
-    private Integer id;
-    private String name; //文件名称
-    private String fileGuid; //文件guid
-    private String description; //描述
-    private String authorName; //作者
-    private Integer sysOrder;//排序
+
+
+    private Integer projectId;
+    private List<UpdateBatchLiteraturesDTO> updateBatchLiteratureDTOs;
 }

+ 34 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateBatchLiteraturesDTO.java

@@ -0,0 +1,34 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.joda.time.DateTime;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class UpdateBatchLiteraturesDTO {
+    private Integer id;
+
+    private Integer projectId;
+
+    private String literatureNo;
+
+    private String name;
+
+    private Integer type;
+
+    private Integer sysOrder;
+
+    private String description;
+
+    private Boolean ifApproval;
+
+    private String authorName;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date publicDate;
+
+}

+ 9 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateLiteratureOrderDTO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import lombok.Data;
+
+@Data
+public class UpdateLiteratureOrderDTO {
+    private Integer id;
+    private Integer sysOrder;
+}

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

@@ -12,8 +12,9 @@ public enum ResponseEnum {
     PARAMS_ERROR(202,"参数错误"),
     CONDITION_ERROR(203, "检索式错误"),
     PATENT_IMPORT_TASK_SUCCESS(903, "导入任务完成"),
-    PATENT_IMPORT_PATENT_PART_SUCCESS(900, "专利信息部分上传成功");
-    ;
+    PATENT_IMPORT_PATENT_PART_SUCCESS(900, "专利信息部分上传成功"),
+    COMPARE_LITERATURE_BATCH(600,"批量上传对比文献"),
+    COMPARE_LITERATURE_BATCH_DONE(601,"批量上传对比文献完成");
 
     private Integer code;
     private String message;

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

@@ -4,9 +4,11 @@ import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.domain.BaseEntity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import org.joda.time.DateTime;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -34,6 +36,8 @@ public class CompareLiteratureVO extends BaseEntity<CompareLiteratureVO> {
     /**
      * 公开日
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date publicDate;
 
     /**
@@ -44,6 +48,8 @@ public class CompareLiteratureVO extends BaseEntity<CompareLiteratureVO> {
     /**
      * 申请日
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date appDate;
 
     /**
@@ -57,12 +63,17 @@ public class CompareLiteratureVO extends BaseEntity<CompareLiteratureVO> {
     /**
      * 授权日
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date grantDate;
     private Integer type;
     private Integer sysOrder;
     private String description;
     private Boolean ifApproval;
     private String createName;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date createTime;
     private SystemFile systemFile;
+    private String authorName;
 }

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

@@ -54,7 +54,10 @@ public class ImportTaskAMVO {
      * 报告或数据库id
      */
     private Integer projectId;
-
+    /**
+     * 报告类型
+     */
+    private Integer reportType;
     /**
      * 产品id
      */

+ 2 - 0
src/main/java/cn/cslg/pas/common/vo/QueryFiledVO.java

@@ -17,4 +17,6 @@ public class QueryFiledVO {
     //栏位选项查询参数
     private String fieldOptionQueryParam;
     private String group;
+
+    private Integer filedType;
 }

+ 19 - 0
src/main/java/cn/cslg/pas/common/vo/WebSocketMessageVO.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 拆分保存特征的前端传输DTO类
+ */
+@Data
+@Accessors(chain = true)
+public class WebSocketMessageVO {
+    private  Integer projectId;
+   private  Integer allNum;
+    private Integer   currentNum;
+    private Integer code;
+    private Integer state;
+    private String createId;
+
+}

+ 25 - 0
src/main/java/cn/cslg/pas/common/vo/invalidReport/PatentClaimVO.java

@@ -0,0 +1,25 @@
+package cn.cslg.pas.common.vo.invalidReport;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+
+@Data
+
+public class PatentClaimVO  {
+    private  Integer id;
+
+    private Integer sysOrder;
+
+    private String content;
+
+    private Integer claimType;
+
+    private Integer contentType;
+
+    private String parentOrder;
+
+    private Integer projectId;
+}

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

@@ -1,7 +1,9 @@
 package cn.cslg.pas.common.vo.invalidVO;
 
 import cn.cslg.pas.common.model.cronModel.SystemFile;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 import java.util.List;
@@ -24,6 +26,8 @@ public class ReportAffairVO {
     /**
      * 发生时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date occurredTime;
 
     /**

+ 53 - 4
src/main/java/cn/cslg/pas/controller/CompareLiteratureController.java

@@ -2,17 +2,23 @@ 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.dto.invalidDTO.AddClaimsDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateBatchLiteratureDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateBatchLiteraturesDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateLiteratureOrderDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.dto.CompareLiteratureDTO;
+import cn.cslg.pas.common.vo.StarPatentVO;
+import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.service.business.CompareLiteratureService;
+import cn.cslg.pas.service.importPatent.ImportSinglePatentService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 @Slf4j
 @RequestMapping(Constants.API_XiaoSHI + "/compareLiterature")
@@ -20,6 +26,8 @@ import org.springframework.web.bind.annotation.RestController;
 public class CompareLiteratureController {
     @Autowired
     private CompareLiteratureService compareLiteratureService;
+    @Autowired
+    private ImportSinglePatentService importSinglePatentService;
 
     @Operation(summary = "添加非专利对比文件")
     @PostMapping("/addNotPatent")
@@ -45,5 +53,46 @@ public class CompareLiteratureController {
         return Response.success(records);
     }
 
+    @Operation(summary = "更新对比文献顺序")
+    @PostMapping("/updateLiteratureOrder")
+    public Response updateLiteratureOrder(@RequestBody List<UpdateLiteratureOrderDTO> dtoList) throws Exception {
+        Boolean flag = compareLiteratureService.updateLiteratureOrder(dtoList);
+        if (flag.equals(true)) {
+            return Response.success("更新成功");
+        }
+        return Response.error("更新失败");
+    }
+
+    @Operation(summary = "更新对比文献顺序")
+    @GetMapping("/aa")
+    public Response aa(String patentNo) throws Exception {
+        Patent patent = importSinglePatentService.addSinglePatent(patentNo);
+        System.out.println(patent);
+        return Response.error("更新失败");
+    }
+
+    @Operation(summary = "批量添加或编辑")
+    @PostMapping("/updateCompareLiteratureBatch")
+    public Response updateCompareLiteratureBatch(@RequestBody UpdateBatchLiteratureDTO updateBatchLiteratureDTO) throws Exception {
+        try {
+            compareLiteratureService.updateCompareLiteratureBatch(updateBatchLiteratureDTO);
+            return Response.success("更新成功");
+        } catch (Exception e) {
+            return Response.error("更新失败");
+
+        }
+    }
+
 
+    @Operation(summary = "批量添加或编辑")
+    @PostMapping("/deleteCompareLiterature")
+    public Response deleteCompareLiterature(@RequestBody List<Integer> ids) throws Exception {
+        try {
+            compareLiteratureService.deleteCompareLiterature(ids);
+            return Response.success("删除成功");
+        } catch (Exception e) {
+            return Response.error("删除失败");
+
+        }
+    }
 }

+ 22 - 5
src/main/java/cn/cslg/pas/controller/PatentClaimController.java

@@ -2,12 +2,16 @@ package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.invalidDTO.AddClaimDTO;
+import cn.cslg.pas.common.dto.invalidDTO.AddClaimsDTO;
 import cn.cslg.pas.common.dto.invalidDTO.QueryClaimDTO;
 import cn.cslg.pas.common.dto.invalidDTO.SplitClaimDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.invalidReport.PatentClaimVO;
+import cn.cslg.pas.service.business.invalidReport.PatentClaimService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,23 +23,36 @@ import java.util.List;
 @RequestMapping(Constants.API_XiaoSHI + "/patentClaim")
 @RestController
 public class PatentClaimController {
+    @Autowired
+    private PatentClaimService patentClaimService;
+
     @Operation(summary = "拆分权利要求")
     @PostMapping("/splitClaim")
     public Response splitClaim(@RequestBody SplitClaimDTO splitClaimDTO) throws Exception {
-        Records records =new Records();
+        Records records = new Records();
+        List<PatentClaimVO> patentClaimVOS = patentClaimService.splitClaim(splitClaimDTO);
+        records.setData(patentClaimVOS);
         return Response.success(records);
     }
+
     @Operation(summary = "查询权利要求")
     @PostMapping("/queryClaim")
     public Response queryClaim(@RequestBody QueryClaimDTO queryClaimDTO) throws Exception {
-        Records records =new Records();
+        Records records = new Records();
+        List<PatentClaimVO> patentClaimVOS = patentClaimService.getPatentClaimVO(queryClaimDTO);
+        records.setData(patentClaimVOS);
         return Response.success(records);
     }
 
     @Operation(summary = "保存权利要求")
     @PostMapping("/addClaim")
-    public Response addClaim(@RequestBody List<AddClaimDTO> addClaimDTOs) throws Exception {
-        Records records =new Records();
-        return Response.success(records);
+    public Response addClaim(@RequestBody AddClaimsDTO addClaimsDTO) throws Exception {
+
+        Boolean flag = patentClaimService.addPatentClaim(addClaimsDTO);
+        if (flag.equals(true)) {
+            return Response.success("添加成功");
+        }
+        return Response.error("添加失败");
     }
+
 }

+ 4 - 3
src/main/java/cn/cslg/pas/controller/ReportAffairController.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.invalidDTO.AddInvalidRequestFileDTO;
+import cn.cslg.pas.common.dto.invalidDTO.QueryReportAffairDTO;
 import cn.cslg.pas.common.dto.invalidDTO.UpdateInvalidRequestFileDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
@@ -51,9 +52,9 @@ public class ReportAffairController {
     }
 
     @Operation(summary = "查询报告事务")
-    @GetMapping("/queryReportAffair")
-    public Response queryReportAffair(Integer projectId) throws Exception {
-        List<ReportAffairVO> reportAffairVOS = reportAffairService.queryReportAffair(projectId);
+    @PostMapping("/queryReportAffair")
+    public Response queryReportAffair(@RequestBody QueryReportAffairDTO queryReportAffairDTO) throws Exception {
+        List<ReportAffairVO> reportAffairVOS = reportAffairService.queryReportAffair(queryReportAffairDTO);
         Records records = new Records();
         records.setData(reportAffairVOS);
         return Response.success(records);

+ 24 - 0
src/main/java/cn/cslg/pas/domain/business/EvidenceReason.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 事件项目关联表
+ * </p>
+ *
+ * @author xx
+ * @since 2022-10-20
+ */
+@Data
+@TableName("evidence_reason")
+public class EvidenceReason extends BaseEntity<EvidenceReason> {
+    private String evidenceText;
+    private String Description;
+    
+}

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

@@ -7,7 +7,7 @@ import lombok.Data;
 
 
 @Data
-@TableName("patentClaim")
+@TableName("patent_claim")
 public class PatentClaim extends BaseEntity<PatentClaim> {
     @TableField(value = "sys_order")
     private Integer sysOrder;
@@ -21,4 +21,6 @@ public class PatentClaim extends BaseEntity<PatentClaim> {
     private String parentOrder;
     @TableField(value = "project_id")
     private Integer projectId;
+    @TableField(value = "create_id")
+    private String createId;
 }

+ 288 - 30
src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java

@@ -1,12 +1,17 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateBatchLiteratureDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateBatchLiteraturesDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateLiteratureOrderDTO;
 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.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.PatentWithIdVO;
+import cn.cslg.pas.common.vo.WebSocketMessageVO;
 import cn.cslg.pas.domain.business.CompareLiterature;
 import cn.cslg.pas.common.dto.CompareLiteratureDTO;
 import cn.cslg.pas.domain.business.ReportProject;
@@ -17,18 +22,22 @@ import cn.cslg.pas.mapper.CompareLiteratureMapper;
 import cn.cslg.pas.service.business.es.EsPatentService;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.common.MessageService;
+import cn.cslg.pas.service.importPatent.ImportSinglePatentService;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.concurrent.Callable;
 import java.util.stream.Collectors;
 
 /**
@@ -53,28 +62,64 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
     @Autowired
     private FileManagerService fileManagerService;
 
+    @Autowired
+    private ImportSinglePatentService importSinglePatentService;
+
+    @Autowired
+    private EsService esService;
+    @Autowired
+    private MessageService messageService;
+
     //添加专利对比文献
-    public Integer addPatentCompareLiterature(String patentNo, Integer projectId, String createId) {
+    public Integer addPatentCompareLiterature(Patent patent, Integer projectId, String createId) {
         Integer id = null;
+        id = this.getHaveAddIdByNos(projectId, patent.getPatentNo());
+
         //根据专利号和报告id查询是否已经保存
-        LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(CompareLiterature::getLiteratureNo, patentNo);
-        queryWrapper.eq(CompareLiterature::getProjectId, projectId);
-        List<CompareLiterature> compareLiteratures = this.list(queryWrapper);
-        if (compareLiteratures.size() <= 0) {
+        if (id == null) {
             CompareLiterature compareLiterature = new CompareLiterature();
             compareLiterature.setCreateId(createId);
+            //报告id
             compareLiterature.setProjectId(projectId);
-            compareLiterature.setLiteratureNo(patentNo);
-            compareLiterature.setName(patentNo);
-            compareLiterature.insert();
+            //文档guid
+            compareLiterature.setLiteratureNo(patent.getPatentNo());
+            //文档名称
+            String name = patent.getPatentNo();
+
+            //作者
+            String authorName = "";
+            Integer order = 1;
+            //根据报告id获得最大序号
+            LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CompareLiterature::getProjectId, projectId);
+            CompareLiterature compareLiteratureBig = this.getOne(queryWrapper, false);
+            if (compareLiteratureBig != null && compareLiteratureBig.getSysOrder() != null) {
+                order = compareLiteratureBig.getSysOrder() + 1;
+            }
+            if (patent != null) {
+                if (patent.getTitle() != null && patent.getTitle().size() != 0) {
+                    name += "(" + patent.getTitle().get(0).getTextContent();
+                }
+                compareLiterature.setAppDate(patent.getAppDate());
+                compareLiterature.setPublicDate(patent.getPublicDate());
+                if (patent.getRightHolder() != null && patent.getRightHolder().size() != 0) {
+                    authorName = patent.getRightHolder().get(0).getName();
+                }
+            }
+            compareLiterature.setName(name);
+            //描述
+            //作者
+            compareLiterature.setAuthorName(authorName);
+            //类型
+            compareLiterature.setType(1);
+            //装载排序
+            compareLiterature.setSysOrder(order);
             return compareLiterature.getId();
-        } else {
-            return compareLiteratures.get(0).getId();
         }
+        return id;
     }
 
-    //添加对比文献
+    //添加对比文献
     public Integer addNotPatent(CompareLiteratureDTO compareLiteratureDTO) {
         PersonnelVO personnelVO = new PersonnelVO();
         Integer projectId = compareLiteratureDTO.getProjectId();
@@ -85,7 +130,7 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
-        Integer order = 0;
+        Integer order = 1;
         //根据报告id获得最大序号
         LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(CompareLiterature::getProjectId, projectId);
@@ -119,11 +164,21 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
     //查询对比文献
     public Records queryCompareLiterature(LiteratureQueryDTO literatureQueryDTO) {
         Integer projectId = literatureQueryDTO.getProjectId();
+        Records records = new Records();
         //根据对比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<CompareLiterature> compareLiteratures = new ArrayList<>();
+
+        if (literatureQueryDTO.getCurrent() != null && literatureQueryDTO.getSize() != null) {
+            Page<CompareLiterature> page = this.page(new Page<>(literatureQueryDTO.getCurrent(), literatureQueryDTO.getSize()), queryWrapper);
+            compareLiteratures = page.getRecords();
+            records.setTotal(page.getTotal());
+            records.setSize(Long.parseLong(literatureQueryDTO.getSize().toString()));
+            records.setCurrent(Long.parseLong(literatureQueryDTO.getCurrent().toString()));
+        } else {
+            compareLiteratures = this.list(queryWrapper);
+        }
 
         List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
 
@@ -134,21 +189,22 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
 
         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) {
+    public List<CompareLiteratureVO> loadCompareLiterature(List<CompareLiterature> compareLiteratures, ReportProject reportProject) {
         String signPatentNo = reportProject.getSignPatentNo();
+
         //查询标的专利号
         List<CompareLiteratureVO> compareLiteratureVOS = new ArrayList<>();
+
         //非专利文献列表
         List<String> guids = compareLiteratures.stream().filter(item -> item.getType().equals(1)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
+
         //专利文献列表
         List<String> patentNos = compareLiteratures.stream().filter(item -> item.getType().equals(0)).map(CompareLiterature::getLiteratureNo).collect(Collectors.toList());
         List<Patent> patentList = new ArrayList<>();
@@ -167,12 +223,13 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
 
         //获得标的专利信息
         Patent signPatent = patentList.stream()
-                .filter(item -> item.getAppNo().equals(signPatentNo)
-                        || item.getPublicNo().equals(signPatentNo) ||
-                        item.getGrantNo().equals(signPatentNo)).findFirst().orElse(null);
+                .filter(item -> signPatentNo.equals(item.getAppNo())
+                        || signPatentNo.equals(item.getPublicNo()) ||
+                        signPatentNo.equals(item.getGrantNo())).findFirst().orElse(null);
 
         //查询文件
         List<SystemFile> systemFiles = new ArrayList<>();
+
         //查询文件
         if (guids.size() != 0) {
             try {
@@ -189,17 +246,15 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
             String literatureNo = compareLiterature.getLiteratureNo();
             Date publicDate = compareLiterature.getPublicDate();
             CompareLiteratureVO compareLiteratureVO = new CompareLiteratureVO();
-            compareLiteratureVO.setId(id);
-            compareLiteratureVO.setName(compareLiterature.getName());
-            compareLiteratureVO.setLiteratureNo(compareLiterature.getLiteratureNo());
+            BeanUtils.copyProperties(compareLiterature, compareLiteratureVO);
             //当为专利文献时
             if (compareLiterature.getType().equals(0)) {
                 compareLiteratureVO.setFitType(0);
                 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);
+                            .filter(item -> literatureNo.equals(item.getAppNo())
+                                    || literatureNo.equals(item.getPublicNo()) ||
+                                    literatureNo.equals(item.getGrantNo())).findFirst().orElse(null);
                     if (patent != null) {
                         compareLiteratureVO.setAppNo(patent.getAppNo());
                         compareLiteratureVO.setAppDate(patent.getAppDate());
@@ -260,5 +315,208 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         return compareLiteratureVOS;
     }
 
+    //更新对比文献序号
+    public Boolean updateLiteratureOrder(List<UpdateLiteratureOrderDTO> dtos) {
+        if (dtos != null && dtos.size() < 0) {
+            return false;
+        }
+        dtos.forEach(item -> {
+            UpdateWrapper<CompareLiterature> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.eq("id", item.getId());
+            updateWrapper.set("sys_order", item.getSysOrder());
+            this.update(updateWrapper);
+        });
+        return true;
+    }
+
+
+    //批量添加对比文献
+
+    public void updateCompareLiteratureBatch(UpdateBatchLiteratureDTO updateBatchLiteratureDTO) {
+        PersonnelVO personnelVO = new PersonnelVO();
+        personnelVO.setId("1");
+        if (updateBatchLiteratureDTO == null) {
+            return;
+        }
+        List<UpdateBatchLiteraturesDTO> dtos = updateBatchLiteratureDTO.getUpdateBatchLiteratureDTOs();
+        int i = 1;
+        for (UpdateBatchLiteraturesDTO item : dtos) {
+            if (item.getType().equals(1)) {
+                this.saveOrUpdateNotPatent(item);
+            } else {
+                this.saveOrUpdatePatent(item);
+            }
+            WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
+            webSocketMessageVO.setAllNum(dtos.size());
+            webSocketMessageVO.setCurrentNum(i);
+            webSocketMessageVO.setCreateId(personnelVO.getId());
+            webSocketMessageVO.setState(1);
+            messageService.sendMessage(webSocketMessageVO);
+            i++;
+        }
+        WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
+        webSocketMessageVO.setAllNum(dtos.size());
+        webSocketMessageVO.setCurrentNum(dtos.size());
+        webSocketMessageVO.setCreateId(personnelVO.getId());
+        webSocketMessageVO.setState(2);
+        messageService.sendMessage(webSocketMessageVO);
+
+    }
+
+    /**
+     * 添加或更新非专利文献
+     */
+    public Integer saveOrUpdateNotPatent(UpdateBatchLiteraturesDTO updateBatchLiteratureDTO) {
+        PersonnelVO personnelVO = new PersonnelVO();
+        Integer projectId = updateBatchLiteratureDTO.getProjectId();
+        try {
+            personnelVO = new PersonnelVO();
+            personnelVO.setId("1");
+//            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+
+        CompareLiterature compareLiterature = new CompareLiterature();
+        compareLiterature.setCreateId(personnelVO.getId());
+        //报告id
+        compareLiterature.setProjectId(projectId);
+        //文档guid
+        compareLiterature.setLiteratureNo(updateBatchLiteratureDTO.getLiteratureNo());
+        //文档名称
+        compareLiterature.setName(updateBatchLiteratureDTO.getName());
+        //描述
+        compareLiterature.setDescription(updateBatchLiteratureDTO.getDescription());
+        //作者
+        compareLiterature.setAuthorName(updateBatchLiteratureDTO.getAuthorName());
+        //类型
+        compareLiterature.setType(1);
+        //装载排序
+        compareLiterature.setSysOrder(updateBatchLiteratureDTO.getSysOrder());
+        //装载公开日
+        compareLiterature.setPublicDate(updateBatchLiteratureDTO.getPublicDate());
+
+        //当传id则为更新
+        if (updateBatchLiteratureDTO.getId() != null) {
+
+            compareLiterature.setId(updateBatchLiteratureDTO.getId());
+            compareLiterature.updateById();
+
+        } else {
+            compareLiterature.insert();
+        }
+
+        return compareLiterature.getId();
+
+    }
+
+
+    /**
+     * 添加或更新专利文献
+     */
+    public Integer saveOrUpdatePatent(UpdateBatchLiteraturesDTO updateBatchLiteratureDTO) {
+        PersonnelVO personnelVO = new PersonnelVO();
+        Integer projectId = updateBatchLiteratureDTO.getProjectId();
+        String literatureNo = updateBatchLiteratureDTO.getName();
+        Integer id = updateBatchLiteratureDTO.getId();
+        try {
+            personnelVO = new PersonnelVO();
+            personnelVO.setId("1");
+//            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+
+        Patent patent = new Patent();
+        //判断该专利是否已经作为文献
+        if (id != null) {
+            id = this.getHaveAddIdByNos(projectId, literatureNo);
+
+        }
+        //当id为null时
+        else {
+            //判断库里是否存在该专利
+            try {
+                PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(literatureNo);
+                if (patentWithIdVO == null) {
+                    // 不存在该专利则从数据库获取著录信息并保存
+                    patent = importSinglePatentService.addSinglePatent(literatureNo);
+                } else {
+                    patent = patentWithIdVO.getPatent();
+                }
+            } catch (Exception e) {
+
+            }
+
+        }
+
+        CompareLiterature compareLiterature = new CompareLiterature();
+        compareLiterature.setCreateId(personnelVO.getId());
+        //报告id
+        compareLiterature.setProjectId(projectId);
+        //文档guid
+        compareLiterature.setLiteratureNo(literatureNo);
+        //文档名称
+        String name = literatureNo;
+        if (patent != null) {
+            if (patent.getTitle() != null && patent.getTitle().size() != 0) {
+                name += "(" + patent.getTitle().get(0).getTextContent();
+            }
+            compareLiterature.setAppDate(patent.getAppDate());
+            compareLiterature.setPublicDate(patent.getPublicDate());
+        }
+        compareLiterature.setName(name);
+        //描述
+        compareLiterature.setDescription(updateBatchLiteratureDTO.getDescription());
+        //作者
+        String authorName = "";
+        if (patent != null && patent.getRightHolder() != null && patent.getRightHolder().size() > 0) {
+            authorName = patent.getRightHolder().get(0).getName();
+        }
+        compareLiterature.setAuthorName(authorName);
+        //类型
+        compareLiterature.setType(0);
+        //装载排序
+        compareLiterature.setSysOrder(updateBatchLiteratureDTO.getSysOrder());
+
+        //当传id则为更新
+        if (id != null) {
+
+            compareLiterature.setId(updateBatchLiteratureDTO.getId());
+            compareLiterature.updateById();
+
+        } else {
+            compareLiterature.insert();
+        }
+
+        return compareLiterature.getId();
+
+    }
+
 
+    /**
+     * 根据号码判断是否被加入过
+     *
+     * @param projectId
+     * @param nos
+     * @return
+     */
+    public Integer getHaveAddIdByNos(Integer projectId, String nos) {
+        LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareLiterature::getLiteratureNo, nos)
+                .eq(CompareLiterature::getProjectId, projectId);
+        CompareLiterature compareLiterature = this.getOne(queryWrapper, false);
+        if (compareLiterature != null) {
+            return compareLiterature.getId();
+        }
+        return null;
+    }
+
+    public Boolean deleteCompareLiterature(List<Integer> ids){
+        if(ids==null||ids.size()<=0){
+            throw new XiaoShiException("请选择对比文献");
+        }
+       return this.removeBatchByIds(ids);
+
+    }
 }

+ 13 - 9
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -315,14 +315,16 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             String name = patentDigProjectFilesService.getProcessName(projectTaskVO.getProcessId());
             projectTaskVO.setProcessName(name);
             Project project = projects.stream().filter(item -> item.getId().equals(projectTaskVO.getProjectId())).findFirst().orElse(null);
-            projectTaskVO.setProjectName(project.getName());
-            projectTaskVO.setProjectType(project.getType());
-            if (project.getType().equals(2)) {//报告
-                LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
-                queryWrapper.eq(ReportProject::getProjectId, projectTaskVO.getProjectId());
-                ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
-                if (reportProject != null) {
-                    projectTaskVO.setReportType(reportProject.getReportType());
+            if (project != null) {
+                projectTaskVO.setProjectName(project.getName());
+                projectTaskVO.setProjectType(project.getType());
+                if (project.getType().equals(2)) {//报告
+                    LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.eq(ReportProject::getProjectId, projectTaskVO.getProjectId());
+                    ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
+                    if (reportProject != null) {
+                        projectTaskVO.setReportType(reportProject.getReportType());
+                    }
                 }
             }
         }
@@ -1014,6 +1016,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 添加FTO协同任务
+     *
      * @param tortTaskDTO
      * @return
      */
@@ -1096,6 +1099,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
 
     /**
      * 添加任务与专利关联到ES
+     *
      * @param patentNos
      * @param taskId
      * @param projectId
@@ -1175,7 +1179,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     /**
      *
      */
-    public void getPatent(String patentNo,Integer taskId){
+    public void getPatent(String patentNo, Integer taskId) {
 
 
     }

+ 10 - 3
src/main/java/cn/cslg/pas/service/business/ReportAffairService.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.ReportAffairDTO;
+import cn.cslg.pas.common.dto.invalidDTO.QueryReportAffairDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
@@ -30,6 +31,7 @@ import java.util.stream.Collectors;
 
 /**
  * 报告事务Service层
+ *
  * @Author xiexiang
  * @Date 2023/12/23
  */
@@ -51,6 +53,7 @@ public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportA
 
     /**
      * 创建报告事务
+     *
      * @param reportAffairDTO
      */
     public Integer addReportAffair(ReportAffairDTO reportAffairDTO) {
@@ -87,9 +90,11 @@ public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportA
 
     /**
      * 查询报告事务
-     * @param projectId
+     *
+     * @param QueryReportAffairDTO
      */
-    public List<ReportAffairVO> queryReportAffair(Integer projectId) {
+    public List<ReportAffairVO> queryReportAffair(QueryReportAffairDTO queryReportAffairDTO) {
+        Integer projectId = queryReportAffairDTO.getProjectId();
         List<ReportAffairVO> reportAffairVOS = new ArrayList<>();
         //判空
         if (projectId == null) {
@@ -138,9 +143,10 @@ public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportA
 
     /**
      * 装载文件
+     *
      * @param reportAffairVOS
      */
-    public void loadSystemFile(List<ReportAffairVO> reportAffairVOS){
+    public void loadSystemFile(List<ReportAffairVO> reportAffairVOS) {
         reportAffairVOS.forEach(item -> {
             Integer reportAffairId = item.getId();
             List<SystemFile> systemFiles = new ArrayList<>();
@@ -168,6 +174,7 @@ public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportA
 
     /**
      * 装载无效请求书
+     *
      * @param reportAffairVO
      */
     public void loadInvalidRequestFile(ReportAffairVO reportAffairVO) {

+ 131 - 11
src/main/java/cn/cslg/pas/service/business/invalidReport/PatentClaimService.java

@@ -2,8 +2,14 @@ package cn.cslg.pas.service.business.invalidReport;
 
 
 import cn.cslg.pas.common.dto.invalidDTO.AddClaimDTO;
+import cn.cslg.pas.common.dto.invalidDTO.AddClaimsDTO;
+import cn.cslg.pas.common.dto.invalidDTO.QueryClaimDTO;
 import cn.cslg.pas.common.dto.invalidDTO.SplitClaimDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.RePatentClaim;
+import cn.cslg.pas.common.vo.invalidReport.PatentClaimVO;
 import cn.cslg.pas.domain.business.AssoEventFile;
 import cn.cslg.pas.domain.business.PatentClaim;
 import cn.cslg.pas.domain.business.ReportProject;
@@ -15,11 +21,13 @@ import cn.cslg.pas.service.business.ReportProjectService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.experimental.Accessors;
+import org.springframework.beans.BeanUtils;
 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;
 
 @Service
 public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentClaim> {
@@ -27,16 +35,21 @@ public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentCla
     private ReportProjectService reportProjectService;
     @Autowired
     private FeatureService featureService;
+    @Autowired
+    private CacheUtils cacheUtils;
+    @Autowired
+    private LoginUtils loginUtils;
 
-    public void splitClaim(SplitClaimDTO splitClaimDTO) {
+    public List<PatentClaimVO> splitClaim(SplitClaimDTO splitClaimDTO) {
         Integer projectId = splitClaimDTO.getProjectId();
         if (projectId == null) {
             throw new XiaoShiException("请输入报告id");
         }
-        Boolean flag= this.ifHaveSplit(projectId);
-        if(flag){
-
+        List<PatentClaimVO> patentClaimVOS = this.ifHaveSplit(projectId);
+        if (patentClaimVOS.size() != 0) {
+            return patentClaimVOS;
         }
+        patentClaimVOS = new ArrayList<>();
         //根据projectId 获得标的专利号
         LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ReportProject::getProjectId, projectId);
@@ -54,15 +67,22 @@ public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentCla
 
         }
 
+        //装载返回
         if (savePatentClaims != null) {
-            this.saveBatch(savePatentClaims);
-        }
+            for (PatentClaim item : savePatentClaims) {
+                PatentClaimVO patentClaimVO = new PatentClaimVO();
+                BeanUtils.copyProperties(item, patentClaimVO);
+                patentClaimVOS.add(patentClaimVO);
+            }
 
+        }
 
+        return patentClaimVOS;
     }
 
-    //
+    //装载实体类
     public List<PatentClaim> loadPatentClaim(List<RePatentClaim> rePatentClaims, Integer projectId) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         List<PatentClaim> patentClaims = new ArrayList<>();
         rePatentClaims.forEach(item -> {
             PatentClaim patentClaim = new PatentClaim();
@@ -71,19 +91,119 @@ public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentCla
             patentClaim.setParentOrder(item.getParentSort());
             patentClaim.setProjectId(projectId);
             patentClaim.setSysOrder(item.getSort());
+            patentClaim.setCreateId(personnelVO.getId());
+            patentClaim.setContentType(0);
+            patentClaims.add(patentClaim);
         });
+
+        this.saveBatch(patentClaims);
         return patentClaims;
     }
 
     //判断是否拆分过
-    public Boolean ifHaveSplit(Integer projectId) {
+    public List<PatentClaimVO> ifHaveSplit(Integer projectId) {
+        //根据报告id 查询是否有拆分权要
+        LambdaQueryWrapper<PatentClaim> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PatentClaim::getProjectId, projectId).orderByAsc(PatentClaim::getSysOrder);
+        List<PatentClaim> patentClaims = this.list(queryWrapper);
+        List<PatentClaimVO> patentClaimVOS = new ArrayList<>();
+        patentClaims.forEach(item -> {
+            PatentClaimVO patentClaimVO = new PatentClaimVO();
+            BeanUtils.copyProperties(item, patentClaimVO);
+            patentClaimVOS.add(patentClaimVO);
+        });
+        return patentClaimVOS;
+    }
+
+    //查询权利要求
+    public List<PatentClaimVO> getPatentClaimVO(QueryClaimDTO queryClaimDTO) {
+        Integer projectId = queryClaimDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("请输入报告id");
+        }
+        List<PatentClaimVO> patentClaimVOS = this.ifHaveSplit(projectId);
+
+        return patentClaimVOS;
+
+    }
+
+    // 根据报告id 查询权利要求
+    public List<PatentClaim> getPatentClaimByProjectId(Integer projectId) {
         //根据报告id 查询是否有拆分权要
         LambdaQueryWrapper<PatentClaim> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(PatentClaim::getProjectId, projectId);
-        Long count = this.count(queryWrapper);
-        if (count == 0) {
-            return false;
+        List<PatentClaim> patentClaims = this.list(queryWrapper);
+        return patentClaims;
+    }
+
+    //添加权利要求
+    public Boolean addPatentClaim(AddClaimsDTO addClaimsDTO) {
+
+        List<AddClaimDTO> addClaimDTOS = addClaimsDTO.getAddClaimDTOs();
+        Integer projectId = addClaimsDTO.getProjectId();
+
+        //根据projectId 查询拆分过的权要
+        List<PatentClaim> patentClaims = this.getPatentClaimByProjectId(projectId);
+        List<Integer> orgIds = patentClaims.stream().map(PatentClaim::getId).collect(Collectors.toList());
+        //需要添加的
+        List<AddClaimDTO> addClaimDTOS1 = addClaimDTOS.stream()
+                .filter(item -> item.getOptionType() != null && item.getOptionType().equals(2))
+                .collect(Collectors.toList());
+            this.saveByAddDTOs(addClaimDTOS1);
+        //需要删除的
+        List<Integer> saveIds = addClaimDTOS.stream().map(AddClaimDTO::getId).collect(Collectors.toList());
+        orgIds.removeAll(saveIds);
+        if (orgIds != null && orgIds.size() != 0) {
+            this.removeBatchByIds(orgIds);
         }
+        //需要修改的
+        List<AddClaimDTO> updateDTOs = addClaimDTOS.stream()
+                .filter(item -> item.getOptionType() != null && item.getOptionType().equals(1))
+                .collect(Collectors.toList());
+         this.updateByAddVOS(updateDTOs);
+
         return true;
+
     }
+
+
+    public void saveByAddDTOs(List<AddClaimDTO> addClaimDTOS) {
+        if (addClaimDTOS == null || addClaimDTOS.size() == 0) {
+            return;
+        }
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        List<PatentClaim> patentClaims = new ArrayList<>();
+
+        addClaimDTOS.forEach(item -> {
+            PatentClaim patentClaim = new PatentClaim();
+            BeanUtils.copyProperties(item, patentClaim);
+            patentClaim.setId(null);
+            patentClaim.setCreateId(personnelVO.getId());
+            patentClaims.add(patentClaim);
+        });
+
+        if(patentClaims!=null&&patentClaims.size()>0) {
+            this.saveBatch(patentClaims);
+        }
+    }
+
+    public void updateByAddVOS(List<AddClaimDTO> addClaimDTOS) {
+        if (addClaimDTOS == null || addClaimDTOS.size() == 0) {
+            return;
+        }
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        List<PatentClaim> patentClaims = new ArrayList<>();
+
+        addClaimDTOS.forEach(item -> {
+            PatentClaim patentClaim = new PatentClaim();
+            BeanUtils.copyProperties(item, patentClaim);
+            patentClaim.setCreateId(personnelVO.getId());
+            patentClaims.add(patentClaim);
+        });
+
+        if(patentClaims!=null&&patentClaims.size()>0) {
+            this.updateBatchById(patentClaims);
+        }
+    }
+
 }

+ 21 - 12
src/main/java/cn/cslg/pas/service/common/MessageService.java

@@ -9,6 +9,7 @@ import cn.cslg.pas.common.utils.WebSocketServer;
 import cn.cslg.pas.common.vo.ImportTaskAMVO;
 
 import cn.cslg.pas.common.vo.TaskWebSocketDTO;
+import cn.cslg.pas.common.vo.WebSocketMessageVO;
 import cn.cslg.pas.domain.business.ImportTask;
 import cn.cslg.pas.service.importPatent.PatentProcess;
 import org.springframework.stereotype.Service;
@@ -25,20 +26,16 @@ public class MessageService {
 
     /**
      * 通过WebSocket 在每一次循环结束后 向前端发送完成进度
-     *
-
      */
     public void sendWebsocketMessage(ImportTaskAMVO importTaskAMVO, Integer type, PatentProcess patentProcess) {
-        Integer doneNum=0;
- if(type.equals(0)){
+        Integer doneNum = 0;
+        if (type.equals(0)) {
             doneNum = patentProcess.getPdfDoneNum();
-        }
-        else if(type.equals(1)){
-                doneNum = patentProcess.getPatentMessageDoneNum();
-            }
-            else if(type.equals(2)){
+        } else if (type.equals(1)) {
+            doneNum = patentProcess.getPatentMessageDoneNum();
+        } else if (type.equals(2)) {
 
-                doneNum= patentProcess.getPictureDoneNum();
+            doneNum = patentProcess.getPictureDoneNum();
         }
         long percentage = (long) Math.floor((doneNum + 0D) / importTaskAMVO.getAllNum() * 100D);
         //通过WebSocket 在每一次循环结束后 向前端发送完成进度
@@ -55,7 +52,7 @@ public class MessageService {
                 .setOldName("")
                 .setUrl("")
                 .setDoneType(type)
-                .setTotal(importTaskAMVO.getAllNum()), ResponseEnum.PATENT_IMPORT_PATENT_PART_SUCCESS),null);
+                .setTotal(importTaskAMVO.getAllNum()), ResponseEnum.PATENT_IMPORT_PATENT_PART_SUCCESS), null);
     }
 
 
@@ -74,8 +71,20 @@ public class MessageService {
                 .setFileName(importTaskAMVO.getFileGuid())
                 .setOldName("")
                 .setUrl("")
-                .setTotal(importTaskAMVO.getAllNum()), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS),null);
+                .setTotal(importTaskAMVO.getAllNum()), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), null);
     }
 
+    public void sendMessage(WebSocketMessageVO webSocketMessageVO) {
+        //通过WebSocket 在每一次循环结束后 向前端发送完成进度
+        //当任务状态为完成时,flag为true
+        long percentage = (long) Math.floor((webSocketMessageVO.getCurrentNum() + 0D) / webSocketMessageVO.getAllNum() * 100D);
+        boolean flag = webSocketMessageVO.getState().equals(2);
+
+        TaskWebSocketDTO taskWebSocketDTO = new TaskWebSocketDTO();
+        taskWebSocketDTO.setComplete(flag);
+        taskWebSocketDTO.setIndex(webSocketMessageVO.getCurrentNum());
+        taskWebSocketDTO.setPercentage(percentage);
+            WebSocketServer.sendInfo(Response.websocket(taskWebSocketDTO, ResponseEnum.COMPARE_LITERATURE_BATCH), webSocketMessageVO.getCreateId());
 
+    }
 }

+ 59 - 39
src/main/java/cn/cslg/pas/service/common/PersonFieldService.java

@@ -183,45 +183,46 @@ public class PersonFieldService {
                         queryFieldsVO1.setName(i.getName());
 
                         //装载类型
-                      Integer  type =i.getType();
-                      switch (type){
-                          case 0:
-                              //装载组别
-                              queryFieldsVO1.setGroup("customField");
-                              queryFieldsVO1.setType("Integer");
-                           break;
-                          case 1:
-                              queryFieldsVO1.setGroup("customField");
-                              queryFieldsVO1.setType("DateTime");
-                           break;
-                          case 2:
-                              queryFieldsVO1.setGroup("customField");
-                              queryFieldsVO1.setType("String");
-                              break;
-                          case 4:
-
-
-                          case 5:
-                              queryFieldsVO1.setGroup("customField");
-                              queryFieldsVO1.setType("Array");
-                              break;
-                          case 6:
-                              queryFieldsVO1.setGroup("customField");
-                              queryFieldsVO1.setType("tree");
-                              break;
-                          case 7:
-                              queryFieldsVO1.setGroup("product");
-                              queryFieldsVO1.setType("tree");
-                              break;
-                          case 8:
-                              queryFieldsVO1.setGroup("productCategory");
-                              queryFieldsVO1.setType("tree");
-                              break;
-                          case 9:
-                              queryFieldsVO1.setGroup("technical");
-                              queryFieldsVO1.setType("tree");
-                              break;
-                      }
+                        Integer type = i.getType();
+                        queryFieldsVO1.setFiledType(type);
+                        switch (type) {
+                            case 0:
+                                //装载组别
+                                queryFieldsVO1.setGroup("customField");
+                                queryFieldsVO1.setType("Integer");
+                                break;
+                            case 1:
+                                queryFieldsVO1.setGroup("customField");
+                                queryFieldsVO1.setType("DateTime");
+                                break;
+                            case 2:
+                                queryFieldsVO1.setGroup("customField");
+                                queryFieldsVO1.setType("String");
+                                break;
+                            case 4:
+
+
+                            case 5:
+                                queryFieldsVO1.setGroup("customField");
+                                queryFieldsVO1.setType("Array");
+                                break;
+                            case 6:
+                                queryFieldsVO1.setGroup("customField");
+                                queryFieldsVO1.setType("tree");
+                                break;
+                            case 7:
+                                queryFieldsVO1.setGroup("product");
+                                queryFieldsVO1.setType("tree");
+                                break;
+                            case 8:
+                                queryFieldsVO1.setGroup("productCategory");
+                                queryFieldsVO1.setType("tree");
+                                break;
+                            case 9:
+                                queryFieldsVO1.setGroup("technical");
+                                queryFieldsVO1.setType("tree");
+                                break;
+                        }
                         //装载id
                         queryFieldsVO1.setField(i.getId().toString());
                         queryFieldsVO1.setIfSearch(true);
@@ -240,6 +241,7 @@ public class PersonFieldService {
 
     /**
      * 查询表格显示栏位
+     *
      * @param getTabelColumDTO
      * @return
      */
@@ -421,8 +423,26 @@ public class PersonFieldService {
                     //装载栏位类型
                     if (allCustomFieldVO.getType() <= 6) {
                         getAllPatentCountVO.setFiledKind(0);
+                        switch (allCustomFieldVO.getType()) {
+                            case 0:
+                                getAllPatentCountVO.setType("Integer");
+                                break;
+                            case 1:
+                                getAllPatentCountVO.setType("DateTime");
+                                break;
+                            case 2:
+                                getAllPatentCountVO.setType("String");
+                                break;
+                            case 4:
+                            case 5:
+                                getAllPatentCountVO.setType("Array");
+                                break;
+                            case 6:
+                                getAllPatentCountVO.setType("tree");
+                        }
                     } else {
                         getAllPatentCountVO.setFiledKind(allCustomFieldVO.getType());
+                        getAllPatentCountVO.setType("tree");
                     }
                     fieldVOS.add(getAllPatentCountVO);
                 }

+ 473 - 0
src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java

@@ -0,0 +1,473 @@
+package cn.cslg.pas.service.importPatent;
+
+import cn.cslg.pas.common.dto.PatentStarListDTO;
+import cn.cslg.pas.common.dto.UploadPatentWebDTO;
+import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.esDataForm.AddressSplitter;
+import cn.cslg.pas.common.utils.esDataForm.PatentClassifySplitter;
+import cn.cslg.pas.common.vo.ChinaPatentZhuLu;
+import cn.cslg.pas.common.vo.PatentWithIdVO;
+import cn.cslg.pas.common.vo.StarPatentVO;
+import cn.cslg.pas.common.vo.WorldPatentZhuLu;
+import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.service.business.es.EsService;
+import cn.cslg.pas.service.common.PatentStarApiService;
+import com.alibaba.fastjson.JSON;
+import lombok.RequiredArgsConstructor;
+import lombok.experimental.Accessors;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@RequiredArgsConstructor
+public class ImportSinglePatentService {
+    @Autowired
+    private PatentStarApiService patentStarApiService;
+
+    @Autowired
+    private EsService esService;
+
+    public StarPatentVO getPatentFromWeb(String patentNo) {
+        StarPatentVO starPatentVO = null;
+        String dbType = "";
+        if (patentNo.startsWith("CN")) {
+            dbType = "CN";
+        } else {
+            dbType = "WD";
+        }
+        //根据专利号查询
+        String conditions = "AN=(" + patentNo + ") OR PN=(" + patentNo + ") OR GN=(" + patentNo + ")";
+        PatentStarListDTO patentStarListDTO1 = new PatentStarListDTO();
+        patentStarListDTO1.setCurrentQuery(conditions);
+        patentStarListDTO1.setPageNum(1);
+        patentStarListDTO1.setDBType(dbType);
+        patentStarListDTO1.setCurrentQuery(conditions);
+        patentStarListDTO1.setRowCount(50);
+        try {
+            Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDTO1);
+            if (resultMap == null || (Integer) resultMap.get("total") == 0) {
+
+            }
+            List<StarPatentVO> starPatents = (List<StarPatentVO>) resultMap.get("records");
+            if (starPatents != null && starPatents.size() != 0) {
+                starPatentVO = starPatents.get(0);
+            }
+        } catch (Exception e) {
+            return null;
+        }
+
+        return starPatentVO;
+    }
+
+
+    public Patent addSinglePatent(String patentNo) {
+        StarPatentVO starPatentVO = new StarPatentVO();
+        starPatentVO = this.getPatentFromWeb(patentNo);
+        if (starPatentVO == null) {
+            return null;
+        }
+        Patent patent = this.getPatentCataloguingFromWeb(starPatentVO);
+        PatentJoin patentJoin = new PatentJoin();
+        patentJoin.setName("patent");
+        patent.setPatentJoin(patentJoin);
+        try {
+            PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patent.getPatentNo());
+            if (patentWithIdVO != null) {
+                return patentWithIdVO.getPatent();
+            }
+            String patentId = esService.addPatent(patent);
+        } catch (Exception e) {
+            return null;
+        }
+        return patent;
+    }
+
+    public Patent getPatentCataloguingFromWeb(StarPatentVO starPatentVO) {
+        String patentZhuLuStr = "";
+        if (starPatentVO.getApplicationNo().startsWith("CN")) {
+            patentZhuLuStr = patentStarApiService.getCnBibApi(starPatentVO.getRowApplicationNo());
+        } else {
+            patentZhuLuStr = patentStarApiService.getENBibApi(starPatentVO.getRowApplicationNo());
+        }
+        UploadPatentWebDTO uploadPatentWebDTO = new UploadPatentWebDTO();
+        uploadPatentWebDTO.setPatent(new Patent());
+        uploadPatentWebDTO.setStarPatentVO(starPatentVO);
+        if (patentZhuLuStr != null && !patentZhuLuStr.trim().equals("") && !patentZhuLuStr.equals("{}") && !patentZhuLuStr.contains("请求不合法")) {
+            this.loadPatent(uploadPatentWebDTO);
+            if (starPatentVO.getApplicationNo().startsWith("CN")) {
+                this.loadCNPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent(), starPatentVO);
+
+                //装载专利号
+                if (uploadPatentWebDTO.getPatent().getAppNo() != null) {
+                    uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getAppNo());
+                } else if (uploadPatentWebDTO.getPatent().getGrantNo() != null) {
+                    uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getGrantNo());
+                } else if (uploadPatentWebDTO.getPatent().getPublicNo() != null) {
+                    uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getPublicNo());
+                }
+            } else {
+//                this.loadWorldPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent());
+                //装载专利号
+                if (uploadPatentWebDTO.getPatent().getGrantNo() != null) {
+                    uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getGrantNo());
+                } else if (uploadPatentWebDTO.getPatent().getPublicNo() != null) {
+                    uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getPublicNo());
+                } else if (uploadPatentWebDTO.getPatent().getAppNo() != null) {
+                    uploadPatentWebDTO.getPatent().setPatentNo(uploadPatentWebDTO.getPatent().getAppNo());
+                }
+            }
+        }
+        return uploadPatentWebDTO.getPatent();
+    }
+
+    //装载专利信息
+    private void loadPatent(UploadPatentWebDTO uploadPatentWebDTO) {
+        String country = "";
+        Patent patent = uploadPatentWebDTO.getPatent();
+        StarPatentVO starPatentVO = uploadPatentWebDTO.getStarPatentVO();
+        //装载专利类型
+        Integer patentType = starPatentVO.getPatentType();
+        if (patentType != null) {
+            if (patentType.equals(2) || patentType.equals(9)) {
+                patent.setPatentType("1");  //实用新型
+            } else if (patentType.equals(1) || patentType.equals(8)) {
+                patent.setPatentType("2");  //发明
+            } else if (patentType.equals(3)) {
+                patent.setPatentType("3");  //外观设计
+            }
+        }
+
+        //装载申请人地址
+        if (starPatentVO.getApplicationAddress() != null && !starPatentVO.getApplicationAddress().equals("")) {
+            String applicationAddress = starPatentVO.getApplicationAddress();
+            PersonAddress personAddress = AddressSplitter.splitAddress(applicationAddress, starPatentVO.getProvinceStr());
+            patent.setApplicantAddr(personAddress);
+        }
+
+        //装载IPC分类号
+        if (starPatentVO.getIpcListStr() != null && !starPatentVO.getIpcListStr().equals("")) {
+            List<PatentClassify> patentClassifies = new ArrayList<>();
+            List<String> ipcArr = Arrays.asList(starPatentVO.getIpcListStr().split(";"));
+            for (int i = 0; i < ipcArr.size(); i++) {
+                PatentClassify patentClassify = PatentClassifySplitter.split(ipcArr.get(i));
+                patentClassifies.add(patentClassify);
+                if (i == 0) {
+                    patent.setMipc(patentClassify);
+                }
+            }
+            patent.setIpc(patentClassifies);
+        }
+
+        //装载公告日
+        if (starPatentVO.getPublicAccreditDate() != null && !starPatentVO.getPublicAccreditDate().equals("")) {
+//
+//            patent.setGrantDate();
+            Date date = DateUtils.strToDate(starPatentVO.getPublicAccreditDate());
+            patent.setGrantDate(date);
+        }
+
+        //装载摘要
+        if (starPatentVO.getAbstractStr() != null && !starPatentVO.getAbstractStr().equals("")) {
+            Text text = new Text();
+            text.setLanguage(patent.getAppCountry());
+            text.setIfOrigin(true);
+            text.setTextContent(starPatentVO.getAbstractStr());
+            patent.setAbstractStr(Arrays.asList(text));
+        }
+
+        //装载申请日
+        if (starPatentVO.getApplicationDate() != null && !starPatentVO.getApplicationDate().equals("")) {
+            Date date = DateUtils.strToDate(starPatentVO.getApplicationDate());
+            patent.setAppDate(date);
+        }
+
+        //装载发明人
+        if (starPatentVO.getInventorStr() != null && !starPatentVO.getInventorStr().equals("")) {
+            List<String> patentInventorNames = Arrays.asList(starPatentVO.getInventorStr().split(";"));
+            List<PatentPerson> patentPeople = new ArrayList<>();
+            for (int i = 0; i < patentInventorNames.size(); i++) {
+                PatentPerson patentPerson = new PatentPerson();
+                patentPerson.setOrder(i + 1);
+                patentPerson.setType("1");
+                patentPerson.setName(patentInventorNames.get(i));
+                patentPeople.add(patentPerson);
+            }
+            patent.setInventor(patentPeople);
+        }
+
+        //装载申请号
+        if (starPatentVO.getApplicationNo() != null && !starPatentVO.getApplicationNo().equals("")) {
+            patent.setAppNo(starPatentVO.getApplicationNo());
+            country = starPatentVO.getApplicationNo().substring(0, 2);
+
+        }
+
+        //装载公开号
+        if (starPatentVO.getPublicNo() != null && !starPatentVO.getPublicNo().equals("")) {
+            patent.setPublicNo(starPatentVO.getPublicNo());
+        }
+
+        if (starPatentVO.getPublicAccreditNo() != null && !starPatentVO.getPublicAccreditNo().equals("")) {
+            patent.setGrantNo(starPatentVO.getPublicAccreditNo());
+        }
+
+        //装载申请人
+        if (starPatentVO.getApplicantStr() != null && !starPatentVO.getApplicantStr().equals("")) {
+            List<String> names = Arrays.asList(starPatentVO.getApplicantStr().split(";"));
+            List<PatentPerson> patentPeople = new ArrayList<>();
+            for (int i = 0; i < names.size(); i++) {
+                PatentPerson patentPerson = new PatentPerson();
+                patentPerson.setOrder(i + 1);
+                patentPerson.setType("1");
+                patentPerson.setName(names.get(i));
+                patentPeople.add(patentPerson);
+            }
+            patent.setApplicant(patentPeople);
+        }
+
+        //装载代理人
+        if (starPatentVO.getAgentStr() != null && !starPatentVO.getAgentStr().equals("")) {
+            List<String> patentAgents = Arrays.asList(starPatentVO.getAgentStr().split(";"));
+            if (patentAgents != null && patentAgents.size() != 0) {
+                patent.setAgent(patentAgents);
+            }
+        }
+
+        if (starPatentVO.getAgencyStr() != null && !starPatentVO.getAgencyStr().equals("")) {
+            patent.setAgency(starPatentVO.getAgencyStr());
+
+        }
+        //装载公开日
+        if (starPatentVO.getPublicDate() != null && !starPatentVO.getPublicDate().equals("")) {
+            Date date = DateUtils.strToDate(starPatentVO.getPublicDate());
+            patent.setPublicDate(date);
+        }
+
+        //装载标题
+        if (starPatentVO.getName() != null && !starPatentVO.getName().equals("")) {
+            Text text = new Text();
+            text.setLanguage(country);
+            text.setIfOrigin(true);
+            text.setTextContent(starPatentVO.getName());
+            patent.setTitle(Arrays.asList(text));
+        }
+
+        //装载权利人
+        if (starPatentVO.getCurrentApplicantStr() != null && !starPatentVO.getCurrentApplicantStr().equals("")) {
+            List<String> names = Arrays.asList(starPatentVO.getCurrentApplicantStr().split(";"));
+            List<PatentPerson> patentPeople = new ArrayList<>();
+            for (int i = 0; i < names.size(); i++) {
+                PatentPerson patentPerson = new PatentPerson();
+                patentPerson.setOrder(0);
+                patentPerson.setType("1");
+                patentPerson.setName(names.get(i));
+                patentPeople.add(patentPerson);
+            }
+            patent.setRightHolder(patentPeople);
+        }
+
+        //装载法律状态(os_patent表status字段值)
+        Integer status = starPatentVO.getLG();
+        if (status != null) {
+            //有效(有权)
+            if (status == 1) {
+                patent.setSimpleStatus("3");
+                //失效(无权)
+            } else if (status == 2) {
+                patent.setSimpleStatus("2");
+                //审中(审中)
+            } else if (status == 3) {
+                patent.setSimpleStatus("1");
+            }
+        }
+
+        //装载优先权
+        if (starPatentVO.getPriorityNo() != null && !starPatentVO.getPriorityNo().equals("")) {
+            Priorities priorities = new Priorities();
+            priorities.setPriorityNo(starPatentVO.getPriorityNo());
+            String pCountry = starPatentVO.getApplicationNo().substring(0, 2);
+            priorities.setPriorityCountry(pCountry);
+            //装载优先权日
+            if (starPatentVO.getPriorityDate() != null && !starPatentVO.getPriorityDate().equals("")) {
+                DateUtils.str2Date(starPatentVO.getPriorityDate());
+            }
+            patent.setPriorities(Arrays.asList(priorities));
+        }
+
+        //装载受理局
+        if (starPatentVO.getBureau() != null && !starPatentVO.getBureau().equals("")) {
+            patent.setAppCountry(starPatentVO.getBureau());
+        }
+    }
+
+
+    //装载中国专利
+    private void loadCNPatent(String chinaPatentZhuLuStr, Patent patent, StarPatentVO starPatentVO) {
+        patent.setPatentNo(patent.getAppNo());
+        if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}") && !chinaPatentZhuLuStr.contains("请求不合法")) {
+            List<ChinaPatentZhuLu> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, ChinaPatentZhuLu.class);
+            ChinaPatentZhuLu chinaPatentZhuLu = chinaPatentZhuLus.get(0);
+            //装载申请人地址
+            if (patent.getApplicantAddr() == null) {
+                if (chinaPatentZhuLu.getDZ() != null && !chinaPatentZhuLu.getDZ().equals("")) {
+                    PersonAddress personAddress = AddressSplitter.splitAddress(chinaPatentZhuLu.getDZ(), starPatentVO.getProvinceStr());
+                    patent.setApplicantAddr(personAddress);
+                    patent.setApplicantAddr(personAddress);
+                }
+            }
+            //装载代理人
+            if (patent.getAgent() == null || patent.getAgent().size() == 0) {
+                if (chinaPatentZhuLu.getAT() != null && !chinaPatentZhuLu.getAT().equals("")) {
+                    List<String> patentAgents = Arrays.asList(chinaPatentZhuLu.getAT().split(";"));
+                    if (patentAgents != null && patentAgents.size() != 0) {
+                        patent.setAgent(patentAgents);
+                    }
+                }
+            }
+
+            //装载发明人
+            if (patent.getInventor() == null || patent.getInventor().size() == 0) {
+
+                if (chinaPatentZhuLu.getIV() != null && !chinaPatentZhuLu.getIV().equals("")) {
+                    List<String> patentInventorNames = Arrays.asList(chinaPatentZhuLu.getIV().split(";"));
+                    List<PatentPerson> patentPeople = new ArrayList<>();
+                    for (int i = 0; i < patentInventorNames.size(); i++) {
+                        PatentPerson patentPerson = new PatentPerson();
+                        patentPerson.setOrder(0);
+                        patentPerson.setType("1");
+                        patentPerson.setName(patentInventorNames.get(i));
+                        patentPeople.add(patentPerson);
+                    }
+                    patent.setInventor(patentPeople);
+                }
+            }
+            //装载优先权号、优先权国家、优先权日
+            if (patent.getPriorities() == null && chinaPatentZhuLu.getPR() != null && chinaPatentZhuLu.getPR() != "") {
+                Priorities priorities = new Priorities();
+                priorities.setPriorityNo(chinaPatentZhuLu.getPR());
+                String pCountry = chinaPatentZhuLu.getPR().substring(0, 2);
+                priorities.setPriorityCountry(pCountry);
+                patent.setPriorities(Arrays.asList(priorities));
+            }
+
+        }
+    }
+
+    // 装载世界专利
+    private void loadWorldPatent(String worldPatentZhuLuStr, Patent patent) {
+        String country = "";
+        List<WorldPatentZhuLu> worldPatentZhuLus = JSON.parseArray(worldPatentZhuLuStr, WorldPatentZhuLu.class);
+        WorldPatentZhuLu worldPatentZhuLu = worldPatentZhuLus.get(0);
+
+        //装载公开号
+        if (patent.getPublicNo() == null || patent.getPublicNo().equals("")) {
+            patent.setPublicNo(worldPatentZhuLu.getDocdbPubNo());
+        }
+        //装载申请号
+        if (patent.getAppNo() == null || patent.getAppNo().equals("")) {
+            patent.setAppNo(worldPatentZhuLu.getEpoAppNo());
+        }
+        //装载申请日
+        if (patent.getAppDate() == null) {
+            Date date = DateUtils.strToDate(worldPatentZhuLu.getAppDate());
+            patent.setAppDate(date);
+        }
+        //装载公开日
+        if (patent.getPublicDate() == null) {
+            Date date = DateUtils.strToDate(worldPatentZhuLu.getPubDate());
+            patent.setPublicDate(date);
+        }
+        //装载IPC分类号
+        if (patent.getIpc() == null || patent.getIpc().size() == 0) {
+            List<PatentClassify> patentClassifies = new ArrayList<>();
+            List<String> ipcArr = Arrays.asList(worldPatentZhuLu.getIpc().split(";"));
+            for (int i = 0; i < ipcArr.size(); i++) {
+                PatentClassify patentClassify = PatentClassifySplitter.split(ipcArr.get(i));
+                patentClassifies.add(patentClassify);
+                if (i == 0) {
+                    patent.setMipc(patentClassify);
+                }
+            }
+            patent.setIpc(patentClassifies);
+        }
+
+        //装载CPC分类号
+        if (patent.getCpc() == null || patent.getCpc().size() == 0) {
+            if (worldPatentZhuLu.getCpc() != null && !worldPatentZhuLu.getCpc().equals("")) {
+                List<PatentClassify> patentClassifies = new ArrayList<>();
+                List<String> cpcArr = Arrays.asList(worldPatentZhuLu.getCpc().split(";"));
+                for (int i = 0; i < cpcArr.size(); i++) {
+                    PatentClassify patentClassify = PatentClassifySplitter.split(cpcArr.get(i));
+                    patentClassifies.add(patentClassify);
+                    if (i == 0) {
+                        patent.setMipc(patentClassify);
+                    }
+                }
+                patent.setCpc(patentClassifies);
+            }
+        }
+
+        //装载申请人
+        if (patent.getApplicant() == null || patent.getApplicant().size() == 0) {
+            List<String> names = Arrays.asList(worldPatentZhuLu.getPa().split(";"));
+            List<PatentPerson> patentPeople = new ArrayList<>();
+            for (int i = 0; i < names.size(); i++) {
+                PatentPerson patentPerson = new PatentPerson();
+                patentPerson.setOrder(0);
+                patentPerson.setType("1");
+                patentPerson.setName(names.get(i));
+                patentPeople.add(patentPerson);
+            }
+            patent.setApplicant(patentPeople);
+
+        }
+
+
+        //装载发明人
+        if (patent.getInventor() == null || patent.getInventor().size() == 0) {
+            if (worldPatentZhuLu.getIv() != null && !worldPatentZhuLu.getIv().equals("")) {
+                List<String> patentInventorNames = Arrays.asList(worldPatentZhuLu.getIv().split(";"));
+                List<PatentPerson> patentPeople = new ArrayList<>();
+                for (int i = 0; i < patentInventorNames.size(); i++) {
+                    PatentPerson patentPerson = new PatentPerson();
+                    patentPerson.setOrder(0);
+                    patentPerson.setType("1");
+                    patentPerson.setName(patentInventorNames.get(i));
+                    patentPeople.add(patentPerson);
+                }
+                patent.setInventor(patentPeople);
+            }
+        }
+
+        //装载优先权号、优先权国家、优先权日
+        if (patent.getPriorities() == null && worldPatentZhuLu.getPr() != null && worldPatentZhuLu.getPr() != "") {
+            Priorities priorities = new Priorities();
+            priorities.setPriorityNo(worldPatentZhuLu.getPr());
+            String pCountry = worldPatentZhuLu.getPr().substring(0, 2);
+            priorities.setPriorityCountry(pCountry);
+            patent.setPriorities(Arrays.asList(priorities));
+        }
+
+        //装载标题
+        if (patent.getTitle() == null || patent.getTitle().size() != 0) {
+            Text text = new Text();
+            text.setLanguage(country);
+            text.setIfOrigin(true);
+            text.setTextContent(worldPatentZhuLu.getTitle());
+            patent.setTitle(Arrays.asList(text));
+        }
+        //装载摘要
+        if (patent.getAbstractStr() == null || patent.getAbstractStr().equals("")) {
+            Text text = new Text();
+            text.setLanguage(patent.getAppCountry());
+            text.setIfOrigin(true);
+            text.setTextContent(worldPatentZhuLu.getAbstract());
+            patent.setAbstractStr(Arrays.asList(text));
+        }
+
+
+    }
+
+}

+ 6 - 4
src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java

@@ -84,8 +84,10 @@ public class SavePatentToEsThread extends Thread {
 
                         //添加报告对比文件
                         if (importTaskAMVO.getProjectType() != null && importTaskAMVO.getProjectType().equals(1)) {
-                            CompareLiteratureService compareLiteratureService = applicationContext.getBean(CompareLiteratureService.class);
-                            compareLiteratureService.addPatentCompareLiterature(patent.getPatentNo(), importTaskAMVO.getProjectId(), importTaskAMVO.getCreateId());
+                            if (importTaskAMVO.getType().equals(7)) {
+                                CompareLiteratureService compareLiteratureService = applicationContext.getBean(CompareLiteratureService.class);
+                                compareLiteratureService.addPatentCompareLiterature(patent, importTaskAMVO.getProjectId(), importTaskAMVO.getCreateId());
+                            }
                         }
                     }
                     //和任务关联
@@ -126,8 +128,8 @@ public class SavePatentToEsThread extends Thread {
     }
 
     public void awakeTask(Patent patent) {
-        Patent patent1 =new Patent();
-        BeanUtils.copyProperties(patent,patent1);
+        Patent patent1 = new Patent();
+        BeanUtils.copyProperties(patent, patent1);
         patents.add(patent1);
         if (taskLock.tryLock()) {
             taskCondition.signalAll();

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

@@ -5,8 +5,10 @@ import cn.cslg.pas.common.vo.ImportTaskAMVO;
 import cn.cslg.pas.common.vo.ProgressVO;
 import cn.cslg.pas.domain.business.ImportTask;
 import cn.cslg.pas.domain.business.ImportTaskCondition;
+import cn.cslg.pas.domain.business.ReportProject;
 import cn.cslg.pas.service.business.ImportTaskConditionService;
 import cn.cslg.pas.service.business.ImportTaskService;
+import cn.cslg.pas.service.business.ReportProjectService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +34,8 @@ public class SchedulingTaskService {
     @Autowired
     private ImportTaskConditionService importTaskConditionService;
 
+    @Autowired
+    private ReportProjectService reportProjectService;
     private List<ImportTaskAMVO> importTaskAMVOS;
 
     public void startTask() {
@@ -67,6 +71,8 @@ public class SchedulingTaskService {
     }
 
     public List<ImportTaskAMVO> loadTaskAMVOS(List<ImportTask> importTaskList) {
+        //根据projectId 获得报告类型
+
         List<ImportTaskAMVO> importTaskAMVOS = new ArrayList<>();
         List<Integer> taskConditionIds = new ArrayList<>();
         List<ImportTaskCondition> importTaskConditions = new ArrayList<>();
@@ -79,6 +85,7 @@ public class SchedulingTaskService {
 
         }
         for (ImportTask importTask : importTaskList) {
+
             ImportTaskCondition importTaskCondition = importTaskConditions.stream().filter(item -> item.getId().equals(importTask.getImportTaskConditionId())).findFirst().orElse(null);
             ImportTaskAMVO importTaskAMVO = new ImportTaskAMVO();
             BeanUtils.copyProperties(importTask, importTaskAMVO);
@@ -92,6 +99,13 @@ public class SchedulingTaskService {
                 importTaskAMVO.setOrderBy(importTaskCondition.getOrderBy());
                 importTaskAMVO.setOrderByType(importTaskCondition.getOrderByType());
                 importTaskAMVO.setProjectType(importTaskCondition.getProjectType());
+
+                LambdaQueryWrapper<ReportProject> rQueryWrapper = new LambdaQueryWrapper<>();
+                rQueryWrapper.eq(ReportProject::getProjectId, importTaskCondition.getProjectId());
+                ReportProject reportProject = reportProjectService.getOne(rQueryWrapper, false);
+                if (reportProject != null) {
+                    importTaskAMVO.setReportType(reportProject.getReportType());
+                }
             }
             ProgressVO progressVO = new ProgressVO();
             progressVO.setState(0);
@@ -110,7 +124,7 @@ public class SchedulingTaskService {
         importTaskAMVO.setState(state);
     }
 
-    public List<ImportTaskAMVO> getImportTaskAMVOs(){
+    public List<ImportTaskAMVO> getImportTaskAMVOs() {
         return this.importTaskAMVOS;
     }
 }

+ 17 - 0
src/test/java/cn/cslg/pas/service/CompareLiteratureServiceTests.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.dto.CompareLiteratureDTO;
 import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateLiteratureOrderDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.controller.AvoidDesignController;
 import cn.cslg.pas.service.business.AvoidDesignService;
@@ -13,7 +14,9 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author xiexiang
@@ -50,4 +53,18 @@ public class CompareLiteratureServiceTests {
 
 }
 
+@Test
+    public  void updateOrder(){
+List<UpdateLiteratureOrderDTO> updateLiteratureOrderDTOList=new ArrayList<>();
+    UpdateLiteratureOrderDTO d1 =new UpdateLiteratureOrderDTO();
+    d1.setSysOrder(1);
+    d1.setId(44);
+    updateLiteratureOrderDTOList.add(d1);
+    UpdateLiteratureOrderDTO d2 =new UpdateLiteratureOrderDTO();
+    d2.setSysOrder(0);
+    d2.setId(45);
+    updateLiteratureOrderDTOList.add(d2);
+    compareLiteratureService.updateLiteratureOrder(updateLiteratureOrderDTOList);
+System.out.println("1");
+}
 }

+ 23 - 0
src/test/java/cn/cslg/pas/service/ImportSinglePatentServiceTests.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.vo.StarPatentVO;
+import cn.cslg.pas.service.importPatent.ImportSinglePatentService;
+import lombok.experimental.Accessors;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class ImportSinglePatentServiceTests {
+@Autowired
+private ImportSinglePatentService importSinglePatentService;
+@Test
+    public  void getPatentFromWeb(){
+        StarPatentVO starPatentVO = importSinglePatentService.getPatentFromWeb("CN200820185104.4");
+        System.out.println(starPatentVO);
+
+    }
+}

+ 40 - 0
src/test/java/cn/cslg/pas/service/PatentClaimServiceTest.java

@@ -0,0 +1,40 @@
+package cn.cslg.pas.service;
+
+
+import cn.cslg.pas.common.dto.invalidDTO.QueryClaimDTO;
+import cn.cslg.pas.common.dto.invalidDTO.SplitClaimDTO;
+import cn.cslg.pas.common.vo.invalidReport.PatentClaimVO;
+import cn.cslg.pas.service.business.invalidReport.PatentClaimService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class PatentClaimServiceTest {
+
+    @Autowired
+    private PatentClaimService patentClaimService;
+
+    @Test
+    public void splitClaim() {
+        SplitClaimDTO splitClaimDTO = new SplitClaimDTO();
+        splitClaimDTO.setProjectId(105);
+        List<PatentClaimVO> patentClaimVOS = patentClaimService.splitClaim(splitClaimDTO);
+        System.out.println(patentClaimVOS);
+    }
+
+    @Test
+    public void getClaim() {
+        QueryClaimDTO queryClaimDTO = new QueryClaimDTO();
+        queryClaimDTO.setProjectId(105);
+        List<PatentClaimVO> patentClaimVOS = patentClaimService.getPatentClaimVO(queryClaimDTO);
+        System.out.println(patentClaimVOS);
+    }
+
+
+}