Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master' into prod_test

# Conflicts:
#	src/main/java/cn/cslg/pas/common/config/ElasticSearchClientConfig.java
lwhhszx 1 gadu atpakaļ
vecāks
revīzija
10d38b3aec
39 mainītis faili ar 1445 papildinājumiem un 144 dzēšanām
  1. 24 24
      src/main/java/cn/cslg/pas/common/config/ElasticSearchClientConfig.java
  2. 15 0
      src/main/java/cn/cslg/pas/common/dto/business/ReportProjectDTO.java
  3. 11 0
      src/main/java/cn/cslg/pas/common/dto/business/UpdateReportProjectDTO.java
  4. 12 0
      src/main/java/cn/cslg/pas/common/model/finalInvalid/FinalProfGroupEditDTO.java
  5. 11 0
      src/main/java/cn/cslg/pas/common/model/finalInvalid/FinalProfGroupQueryDTO.java
  6. 14 0
      src/main/java/cn/cslg/pas/common/model/finalInvalid/FinalProfGroupVO.java
  7. 14 0
      src/main/java/cn/cslg/pas/common/model/finalInvalid/GetClaimMesVO.java
  8. 1 0
      src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java
  9. 97 23
      src/main/java/cn/cslg/pas/common/utils/ClaimUtils/ClaimSplitUtils.java
  10. 4 1
      src/main/java/cn/cslg/pas/common/vo/PersonSelfFieldVO.java
  11. 11 0
      src/main/java/cn/cslg/pas/common/vo/business/ReportProjectVO.java
  12. 3 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/QueryPatentClaimHistoryVO.java
  13. 14 1
      src/main/java/cn/cslg/pas/controller/CompareLiteratureController.java
  14. 6 2
      src/main/java/cn/cslg/pas/controller/FTOController.java
  15. 53 11
      src/main/java/cn/cslg/pas/controller/InvalidStatutesController.java
  16. 33 0
      src/main/java/cn/cslg/pas/domain/FinalInvalidStatue.java
  17. 31 0
      src/main/java/cn/cslg/pas/domain/FinalProofGroup.java
  18. 15 5
      src/main/java/cn/cslg/pas/domain/business/ReportProject.java
  19. 5 0
      src/main/java/cn/cslg/pas/domain/business/SystemDict.java
  20. 83 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetProofNameSql.java
  21. 18 0
      src/main/java/cn/cslg/pas/mapper/FinalInvalidStatueMapper.java
  22. 19 0
      src/main/java/cn/cslg/pas/mapper/FinalProofGroupMapper.java
  23. 217 0
      src/main/java/cn/cslg/pas/service/FinalInvalidStatueService.java
  24. 49 0
      src/main/java/cn/cslg/pas/service/FinalProofGroupService.java
  25. 1 0
      src/main/java/cn/cslg/pas/service/SearchRecordService.java
  26. 56 12
      src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java
  27. 10 6
      src/main/java/cn/cslg/pas/service/business/FollowUpService.java
  28. 1 0
      src/main/java/cn/cslg/pas/service/business/ProofGroupService.java
  29. 47 8
      src/main/java/cn/cslg/pas/service/business/ReportProjectService.java
  30. 46 0
      src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java
  31. 5 6
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  32. 9 8
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java
  33. 36 9
      src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java
  34. 423 0
      src/main/resources/jsons/invalidReportProject.json
  35. 18 5
      src/main/resources/jsons/reportProject.json
  36. 2 1
      src/main/resources/mapper/PatentProjectMapper.xml
  37. 8 8
      src/main/resources/mapper/ReportProjectMapper.xml
  38. 1 1
      src/test/java/cn/cslg/pas/service/ClaimTextTests.java
  39. 22 13
      src/test/java/cn/cslg/pas/service/EventServiceTests.java

+ 24 - 24
src/main/java/cn/cslg/pas/common/config/ElasticSearchClientConfig.java

@@ -29,11 +29,34 @@ public class  ElasticSearchClientConfig {
     @Configuration
     public class ElasticSearchConfig {
         //注入IOC容器
+//        @Bean
+//        public ElasticsearchClient elasticsearchClient() throws Exception {
+//            RestClientBuilder builder = RestClient.builder(new HttpHost(config, 9200, "http"));
+//            CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+//            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "Xiaoshi221101"));
+//            SSLContext sslContext = SSLContextBuilder.create()
+//                    .loadTrustMaterial(new TrustSelfSignedStrategy())
+//                    .build();
+//            builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider).setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()));
+//            RestClient client =builder.build();
+//            ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
+//            return new ElasticsearchClient(transport);
+//        }
+//                @Bean
+//                public ElasticsearchClient elasticsearchClient() throws Exception {
+//                    RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
+//                    RestClient client = builder.build();
+//                    ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper());
+//
+//                    return new ElasticsearchClient(transport);
+//                }
+
+
         @Bean
         public ElasticsearchClient elasticsearchClient() throws Exception {
             RestClientBuilder builder = RestClient.builder(new HttpHost(config, 9200, "http"));
             CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
-            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "Xiaoshi221101"));
+            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "xiaoshi221101"));
             SSLContext sslContext = SSLContextBuilder.create()
                     .loadTrustMaterial(new TrustSelfSignedStrategy())
                     .build();
@@ -42,28 +65,5 @@ public class  ElasticSearchClientConfig {
             ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
             return new ElasticsearchClient(transport);
         }
-//                @Bean
-//                public ElasticsearchClient elasticsearchClient() throws Exception {
-//                    RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
-//                    RestClient client = builder.build();
-//                    ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper());
-//
-//                    return new ElasticsearchClient(transport);
-//                }
-
-
-//        @Bean
-//        public ElasticsearchClient elasticsearchClient() throws Exception {
-//            RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
-//            CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
-//            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "xiaoshi221101"));
-//            SSLContext sslContext = SSLContextBuilder.create()
-//                    .loadTrustMaterial(new TrustSelfSignedStrategy())
-//                    .build();
-//            builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider).setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()));
-//            RestClient client =builder.build();
-//            ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
-//            return new ElasticsearchClient(transport);
-//        }
     }
 }

+ 15 - 0
src/main/java/cn/cslg/pas/common/dto/business/ReportProjectDTO.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.common.dto.business;
 
 import cn.hutool.core.date.DateTime;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -77,4 +80,16 @@ public class ReportProjectDTO {
     private Integer associateReportId;
     private List<Integer> copyIds;
     private Boolean track;
+
+    @Schema(description = "国知局受理年")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy")
+    private Date acceptYear;
+
+    @Schema(description = "申请人代理所")
+    private String applicantAgency;
+    @Schema(description = " 权利人代理所")
+    private String rightHolderAgency;
+    @Schema(description = "案件阶段")
+    private String caseStage;
+
 }

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

@@ -1,9 +1,11 @@
 package cn.cslg.pas.common.dto.business;
 
 import cn.hutool.core.date.DateTime;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -71,4 +73,13 @@ public class UpdateReportProjectDTO {
     private Integer assoReportId;
     @Schema(description = "梳理意见")
     private String cardingOpinion;
+    @Schema(description = "国知局受理年")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy")
+    private Date acceptYear;
+    @Schema(description = "申请人代理所")
+    private String applicantAgency;
+    @Schema(description = " 权利人代理所")
+    private String rightHolderAgency;
+    @Schema(description = "案件阶段")
+    private String caseStage;
 }

+ 12 - 0
src/main/java/cn/cslg/pas/common/model/finalInvalid/FinalProfGroupEditDTO.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.finalInvalid;
+
+import lombok.Data;
+
+@Data
+public class FinalProfGroupEditDTO {
+   private Integer invalidStatueId;
+    private   Integer proofGroupId;
+    private  String editField;
+    private   String fieldContent;
+
+}

+ 11 - 0
src/main/java/cn/cslg/pas/common/model/finalInvalid/FinalProfGroupQueryDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.model.finalInvalid;
+
+import cn.cslg.pas.domain.FinalInvalidStatue;
+import lombok.Data;
+
+@Data
+public class FinalProfGroupQueryDTO {
+    private Integer id;
+    private Integer statueType;
+
+}

+ 14 - 0
src/main/java/cn/cslg/pas/common/model/finalInvalid/FinalProfGroupVO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.finalInvalid;
+
+import cn.cslg.pas.domain.FinalInvalidStatue;
+import lombok.Data;
+
+@Data
+public class FinalProfGroupVO {
+    private Integer id;
+    private String invalidReason;
+    private String presentOpinions;
+   private String rbDecision;
+   private FinalInvalidStatue invalidStatue;
+
+}

+ 14 - 0
src/main/java/cn/cslg/pas/common/model/finalInvalid/GetClaimMesVO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.finalInvalid;
+
+import cn.cslg.pas.domain.FinalInvalidStatue;
+import lombok.Data;
+
+@Data
+public class GetClaimMesVO {
+    private Integer id;
+    private String invalidReason;
+    private String presentOpinions;
+   private String rbDecision;
+   private FinalInvalidStatue invalidStatue;
+
+}

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

@@ -20,6 +20,7 @@ public class QueryRequest {
     private List<EsCustomFieldValueDTO> customFields;
     private Integer taskId;
     private List<String> patentNos;
+    private Boolean ifInvalidReport;
     //商品化专利
     private Integer productId;
     //商品化专利标识

+ 97 - 23
src/main/java/cn/cslg/pas/common/utils/ClaimUtils/ClaimSplitUtils.java

@@ -23,7 +23,7 @@ import java.util.stream.Collectors;
 public class ClaimSplitUtils {
     private static final List<String> CNRegix = Arrays.asList("[0-9]+\\.[^0-9]+?", "\\[[0-9]+]");
     private static final List<String> JPRegix = Arrays.asList("【請求項[0-9]+】");
-    private static final List<String> KORRegix = Arrays.asList("청구항 [0-9]+","\\[[0-9]+]");
+    private static final List<String> KORRegix = Arrays.asList("청구항 [0-9]+", "\\[[0-9]+]");
     private static final List<String> ENReginx = Arrays.asList("[0-9]+\\.[^0-9]+?", "\\[[0-9]+]");
 
 
@@ -33,7 +33,7 @@ public class ClaimSplitUtils {
             String country = params.getCountry();
             String patentNo = params.getPatentNo();
             if (country == null) {
-                country = params.getPatentNo().substring(0,2);
+                country = params.getPatentNo().substring(0, 2);
             }
             //原文
             String content = params.getContent();
@@ -47,7 +47,7 @@ public class ClaimSplitUtils {
             }
             String regex = ClaimSplitUtils.getRegex(country, content);
             if (regex == null) {
-               reDefaultPatentClaim(patentRights,content);
+                reDefaultPatentClaim(patentRights, content);
                 return patentRights;
             }
             patentRights = splitPatentRight(regex, content);
@@ -63,7 +63,7 @@ public class ClaimSplitUtils {
                     loadENPatentClaim(patentNo, patentRights);
                     break;
             }
-             return patentRights;
+            return patentRights;
         } catch (Exception e) {
             e.printStackTrace();
             ArrayList<RePatentClaim> patentRights = new ArrayList<>();
@@ -74,6 +74,64 @@ public class ClaimSplitUtils {
 
     }
 
+//    private static final ArrayList<RePatentClaim> splitPatentRight(String regex, String content) {
+//        //获取拆分信息
+//        List<ClaimSplitVO> claimSplitVOS = ClaimSplitUtils.getClaimSpitVO(regex, content);
+//
+//        String regexNum = "[1-9][0-9]*";
+//        Integer num = 1;
+//        ArrayList<RePatentClaim> patentRights = new ArrayList<>();
+//        Boolean flag = true;
+//        Integer start =0;
+//        Integer end =0;
+//        for (int i = 0; i < claimSplitVOS.size(); i++) {
+////            Integer start = claimSplitVOS.get(i).getPosition();
+////            Integer end = content.length();
+//            String cont = claimSplitVOS.get(i).getContent();
+//            Matcher matcherNum = Pattern.compile(regexNum).matcher(cont);
+//
+//            //查询当前序号
+//            if (matcherNum.find()) {
+//                String a = matcherNum.group();
+//                Integer num2 = Integer.parseInt(a);
+//                if (num2 != num) {
+//                    if (i == 0 && num2.equals(2)) {
+//                        start =claimSplitVOS.get(i).getPosition();
+//                        String str = content.substring(0, start);
+//                        RePatentClaim rePatentClaim = new RePatentClaim();
+//                        rePatentClaim.setSort(num - 1);
+//                        rePatentClaim.setContent(str);
+//                        patentRights.add(rePatentClaim);
+//                        num++;
+//                    } else {
+//                        flag = false;
+//                        break;
+//                    }
+//                }
+//
+//                start =claimSplitVOS.get(i).getPosition();
+//                if (i + 1 < claimSplitVOS.size()) {
+//                    end = claimSplitVOS.get(i + 1).getPosition();
+//                }
+//
+//                String str = content.substring(start, end);
+//                RePatentClaim rePatentClaim = new RePatentClaim();
+//                rePatentClaim.setSort(num - 1);
+//                rePatentClaim.setContent(str);
+//                patentRights.add(rePatentClaim);
+//                num++;
+//            } else {
+//                flag = false;
+//                break;
+//            }
+//        }
+//        if (flag.equals(false) || patentRights.size() == 1) {
+//            reDefaultPatentClaim(patentRights, content);
+//        }
+//        return patentRights;
+//    }
+
+
     private static final ArrayList<RePatentClaim> splitPatentRight(String regex, String content) {
         //获取拆分信息
         List<ClaimSplitVO> claimSplitVOS = ClaimSplitUtils.getClaimSpitVO(regex, content);
@@ -82,39 +140,55 @@ public class ClaimSplitUtils {
         Integer num = 1;
         ArrayList<RePatentClaim> patentRights = new ArrayList<>();
         Boolean flag = true;
-
+        Integer start = 0;
+        Integer end = 0;
         for (int i = 0; i < claimSplitVOS.size(); i++) {
-            Integer start = claimSplitVOS.get(i).getPosition();
-            Integer end = content.length();
             String cont = claimSplitVOS.get(i).getContent();
             Matcher matcherNum = Pattern.compile(regexNum).matcher(cont);
-
             //查询当前序号
             if (matcherNum.find()) {
                 String a = matcherNum.group();
                 Integer num2 = Integer.parseInt(a);
-                if (num2 != num) {
+                if (num2 == num) {
+                    if (num == 1) {
+                        start = claimSplitVOS.get(i).getPosition();
+                        num++;
+                    } else {
+                        end = claimSplitVOS.get(i).getPosition();
+                        String str = content.substring(start, end);
+                        RePatentClaim rePatentClaim = new RePatentClaim();
+                        rePatentClaim.setSort(num - 2);
+                        rePatentClaim.setContent(str);
+                        patentRights.add(rePatentClaim);
+                        start = claimSplitVOS.get(i).getPosition();
+                        num++;
+
+                        //最后一个的处理逻辑
+                        if(i+1==claimSplitVOS.size()){
+                            end=content.length();
+                            String str1 = content.substring(start, end);
+                            RePatentClaim rePatentClaim1 = new RePatentClaim();
+                            rePatentClaim1.setSort(num - 1);
+                            rePatentClaim1.setContent(str1);
+                            patentRights.add(rePatentClaim1);
+                        }
+                    }
+
+
+                } else {
                     if (i == 0 && num2.equals(2)) {
-                        String str = content.substring(0, start);
+                        end =claimSplitVOS.get(i).getPosition();
+                        String str = content.substring(0, end);
                         RePatentClaim rePatentClaim = new RePatentClaim();
                         rePatentClaim.setSort(num - 1);
                         rePatentClaim.setContent(str);
                         patentRights.add(rePatentClaim);
-                        num++;
-                    } else {
-                        flag = false;
-                        break;
+                        start =claimSplitVOS.get(i).getPosition();
+                        num+=2;
                     }
+                    continue;
                 }
-                if (i + 1 < claimSplitVOS.size()) {
-                    end = claimSplitVOS.get(i + 1).getPosition();
-                }
-                String str = content.substring(start, end);
-                RePatentClaim rePatentClaim = new RePatentClaim();
-                rePatentClaim.setSort(num - 1);
-                rePatentClaim.setContent(str);
-                patentRights.add(rePatentClaim);
-                num++;
+
             } else {
                 flag = false;
                 break;

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

@@ -1,6 +1,9 @@
 package cn.cslg.pas.common.vo;
 
+import lombok.Builder;
 import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.bind.DefaultValue;
 
 /**
  * 人员私有栏位vo
@@ -30,7 +33,7 @@ public class PersonSelfFieldVO {
     private Integer createType;
     private Boolean defaultHidden;
     private Boolean ifPersonal;
-    private Boolean ifSort;
+    private Boolean ifSort=true;
     private Boolean ifNotOrder;
 
 }

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

@@ -2,6 +2,7 @@ package cn.cslg.pas.common.vo.business;
 
 import cn.cslg.pas.common.model.cronModel.SystemFile;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.joda.time.DateTime;
@@ -227,4 +228,14 @@ public class ReportProjectVO {
     @Schema(description = "关联id")
     private Integer assoReportId;
 
+    @Schema(description = "国知局受理年")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy")
+    private Date acceptYear;
+    @Schema(description = "申请人代理所")
+    private String applicantAgency;
+    @Schema(description = " 权利人代理所")
+    private String rightHolderAgency;
+    @Schema(description = "案件阶段")
+    private String caseStage;
+    private List<String> rightHolder;
 }

+ 3 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/QueryPatentClaimHistoryVO.java

@@ -39,4 +39,7 @@ public class QueryPatentClaimHistoryVO {
      */
     private Boolean ifFirst;
 
+    private String courtDecision1;
+    private String courtDecision2;
+
 }

+ 14 - 1
src/main/java/cn/cslg/pas/controller/CompareLiteratureController.java

@@ -9,6 +9,7 @@ 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.PatentWithIdVO;
 import cn.cslg.pas.common.vo.StarPatentVO;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.service.business.CompareLiteratureService;
@@ -66,7 +67,7 @@ public class CompareLiteratureController {
     @Operation(summary = "更新对比文献顺序")
     @GetMapping("/aa")
     public Response aa(String patentNo) throws Exception {
-        Patent patent = importSinglePatentService.addSinglePatent(patentNo);
+        PatentWithIdVO patent = importSinglePatentService.addSinglePatent(patentNo);
         System.out.println(patent);
         return Response.error("更新失败");
     }
@@ -94,4 +95,16 @@ public class CompareLiteratureController {
             return Response.error("删除失败");
         }
     }
+
+
+    @Operation(summary = "批量删除对比文献")
+    @PostMapping("/addAssoToEs")
+    public Response addAssoToEs() throws Exception {
+        try {
+            compareLiteratureService.addAssoToEs();
+            return Response.success("删除成功");
+        } catch (Exception e) {
+            return Response.error("删除失败");
+        }
+    }
 }

+ 6 - 2
src/main/java/cn/cslg/pas/controller/FTOController.java

@@ -127,9 +127,13 @@ public class FTOController {
     @Operation(summary = "获得对比过的专利")
     @PostMapping("/getComparedPatent")
     public Response getComparedPatent(@RequestBody ComparedPatentDTO comparedPatentDTO) {
-        List<ComparedPatentVO> comparedPatentVOS = ftoCompareRecordService.getComparedPatent(comparedPatentDTO);
         Records records = new Records();
-        records.setData(comparedPatentVOS);
+        try {
+            List<ComparedPatentVO> comparedPatentVOS = ftoCompareRecordService.getComparedPatent(comparedPatentDTO);
+            records.setData(comparedPatentVOS);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
         return Response.success(records);
     }
 }

+ 53 - 11
src/main/java/cn/cslg/pas/controller/InvalidStatutesController.java

@@ -5,8 +5,12 @@ import cn.cslg.pas.common.dto.business.InvalidStatutesDTO;
 import cn.cslg.pas.common.dto.invalidDTO.GetInvalidStatutesDTO;
 import cn.cslg.pas.common.dto.invalidDTO.UpdateMessageDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupEditDTO;
+import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupQueryDTO;
+import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupVO;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.invalidVO.InvalidStatutesVO;
+import cn.cslg.pas.service.FinalInvalidStatueService;
 import cn.cslg.pas.service.business.InvalidStatutesService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
@@ -14,10 +18,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
  * 无效法条的Controller层
+ *
  * @Author xiexiang
  * @Date 2023/12/22
  */
@@ -26,12 +32,14 @@ import java.util.List;
 @RestController
 public class InvalidStatutesController {
     @Autowired
-
     private InvalidStatutesService invalidStatutesService;
 
+    @Autowired
+    private FinalInvalidStatueService finalInvalidStatueService;
+
     @Operation(summary = "添加无效法条")
     @PostMapping("/addInvalidStatutes")
-    public Response addInvalidStatutes(@RequestBody InvalidStatutesDTO invalidStatutesDTO){
+    public Response addInvalidStatutes(@RequestBody InvalidStatutesDTO invalidStatutesDTO) {
         List<Integer> ids = invalidStatutesService.addInvalidStatutes(invalidStatutesDTO);
         Records records = new Records();
         records.setData(ids);
@@ -40,7 +48,7 @@ public class InvalidStatutesController {
 
     @Operation(summary = "查询无效法条")
     @PostMapping("/queryInvalidStatutes")
-    public Response queryInvalidStatutes(@RequestBody GetInvalidStatutesDTO getInvalidStatutesDTO){
+    public Response queryInvalidStatutes(@RequestBody GetInvalidStatutesDTO getInvalidStatutesDTO) {
         Integer projectId = getInvalidStatutesDTO.getProjectId();
         List<InvalidStatutesVO> ids = invalidStatutesService.queryInvalidStatutes(projectId);
         Records records = new Records();
@@ -54,9 +62,8 @@ public class InvalidStatutesController {
     public Response updateMessage(@RequestBody UpdateMessageDTO updateMessageDTO) {
         try {
             invalidStatutesService.updateMessage(updateMessageDTO);
-        }
-        catch (Exception e){
-            return  Response.error(e.getMessage());
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
         }
         return Response.success("更新成功");
     }
@@ -64,13 +71,48 @@ public class InvalidStatutesController {
     @Operation(summary = "删除无效法条")
     @GetMapping("/removeInvalidStatutes")
     public Response removeInvalidStatutes(Integer id) {
-        Records records =new Records();
+        Records records = new Records();
+        try {
+            Integer reId = invalidStatutesService.removeInvalidStatutes(id);
+            records.setData(reId);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询最终无效理由和证据")
+    @PostMapping("/queryFinalInvalidStatues")
+    public Response queryFinalInvalidStatues(@RequestBody FinalProfGroupQueryDTO finalProfGroupQueryDTO) {
+        List<FinalProfGroupVO> finalProfGroupVOS =new ArrayList<>();
         try {
-          Integer reId=  invalidStatutesService.removeInvalidStatutes(id);
-          records.setData(reId);
+           finalProfGroupVOS = finalInvalidStatueService.queryFinalProofGroup(finalProfGroupQueryDTO);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
         }
-        catch (Exception e){
-            return  Response.error(e.getMessage());
+        return Response.success(finalProfGroupVOS);
+    }
+
+    @Operation(summary = "导入最终无效理由和证据")
+    @GetMapping("/importFinalInvalidStatues")
+    public Response importFinalInvalidStatues(Integer id) {
+        try {
+           finalInvalidStatueService.importFinalInvalidStatutes(id);
+
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("请求成功");
+    }
+
+    @Operation(summary = "编辑最终无效理由和证据")
+    @PostMapping("/editFinalInvalidStatues")
+    public Response editFinalInvalidStatues(@RequestBody FinalProfGroupEditDTO finalProfGroupEditDTO) {
+        Records records = new Records();
+        try {
+            finalInvalidStatueService.editProofGroup(finalProfGroupEditDTO);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
         }
         return Response.success(records);
     }

+ 33 - 0
src/main/java/cn/cslg/pas/domain/FinalInvalidStatue.java

@@ -0,0 +1,33 @@
+package cn.cslg.pas.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @TableName final_invalid_statue
+ */
+@TableName(value ="final_invalid_statue")
+@Data
+public class FinalInvalidStatue extends BaseEntity<FinalInvalidStatue> {
+    private Integer id;
+
+    private Integer statuteId;
+
+    private String claimText;
+
+    private Integer projectId;
+
+    private String courtOpinions1;
+
+    private String courtOpinions2;
+
+    private String createId;
+
+    private Date createTime;
+    private Integer claimOrder;
+}

+ 31 - 0
src/main/java/cn/cslg/pas/domain/FinalProofGroup.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.domain;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @TableName final_proof_group
+ */
+@TableName(value ="final_proof_group")
+@Data
+public class FinalProofGroup extends BaseEntity<FinalProofGroup> {
+
+
+    private Integer finalInvalidStatueId;
+
+    private String invalidReason;
+
+    private String presentOpinions;
+
+    private Integer projectId;
+
+    private String rbDecision;
+
+    private String createId;
+
+    private Date createTime;
+
+}

+ 15 - 5
src/main/java/cn/cslg/pas/domain/business/ReportProject.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * <p>
  * 专利数据库
@@ -25,19 +27,19 @@ public class ReportProject extends BaseEntity<ReportProject> {
     private Integer projectId;
 
     /**
-     *标的专利号
+     * 标的专利号
      */
     @TableField(value = "sign_patent_no")
     private String signPatentNo;
 
     /**
-     *标的产品号
+     * 标的产品号
      */
     @TableField(value = "sign_product_id")
     private Integer signProjectId;
 
     /**
-     *类型
+     * 类型
      */
     @TableField(value = "report_type")
     private Integer reportType;
@@ -45,7 +47,7 @@ public class ReportProject extends BaseEntity<ReportProject> {
      * 状态
      */
     @TableField(value = "status")
-    private  Integer status;
+    private Integer status;
 
     /**
      * 案件编号
@@ -119,5 +121,13 @@ public class ReportProject extends BaseEntity<ReportProject> {
      */
     @TableField(value = "carding_opinion")
     private String cardingOpinion;
-
+    @TableField(value = "accept_year")
+    private Date acceptYear;
+    @TableField(value = "applicant_agency")
+    private String applicantAgency;
+    @TableField(value ="right_holder_agency")
+    private String rightHolderAgency;
+
+    @TableField(value ="case_stage")
+    private String caseStage;
 }

+ 5 - 0
src/main/java/cn/cslg/pas/domain/business/SystemDict.java

@@ -40,6 +40,11 @@ public class SystemDict extends BaseEntity<SystemDict> {
      * 组名
      */
 
+    /**
+     * 组合
+     */
+    @TableField("simple_label")
+    private String simpleLabel;
     public SystemDict() {
         this.label = "-";
         this.value = "-1";

+ 83 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetProofNameSql.java

@@ -0,0 +1,83 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.domain.business.CompareLiterature;
+import cn.cslg.pas.service.business.CompareLiteratureService;
+import cn.cslg.pas.service.business.es.EsPatentService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Component
+public class GetProofNameSql implements GetSqlObject {
+    private SqlObject sqlObject;
+    @Lazy
+    @Autowired
+    private CompareLiteratureService compareLiteratureService;
+    @Lazy
+    @Autowired
+    private EsPatentService esPatentService;
+
+    @Override
+    public String getSql(String value) {
+        Boolean ifEqual = false;
+        //根据名称查询人员id
+        List<Integer> ids = new ArrayList<>();
+        if (sqlObject.getOption() == "contain") {
+            sqlObject.setOption(" in ");
+
+        } else if (sqlObject.getOption() == "=") {
+            sqlObject.setOption(" in ");
+            ifEqual = true;
+        }
+        //根据名称查询
+        try {
+            //根据号码模糊查询专利
+            List<Integer> projectIds = esPatentService.getProjectIds(value);
+            if (projectIds.size() > 0) {
+                ids.addAll(projectIds);
+            }
+            LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper();
+            queryWrapper.like(CompareLiterature::getName, value)
+                    .eq(CompareLiterature::getType, 2);
+            List<CompareLiterature> compareLiteratures = compareLiteratureService.list(queryWrapper);
+
+            if (compareLiteratures.size() != 0) {
+                List<Integer> newIds = compareLiteratures.stream().map(CompareLiterature::getProjectId).distinct().collect(Collectors.toList());
+                ids.addAll(newIds);
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (ids == null || ids.size() == 0) {
+            ids = new ArrayList<>();
+            ids.add(0);
+        }
+        String idStr = StringUtils.join(ids, ",");
+        String re = sqlObject.getSqlField() + sqlObject.getOption() + "(" + idStr + ")";
+        return re;
+    }
+
+    @Override
+    public void setSqlObject(SqlObject sqlObject) {
+        this.sqlObject = sqlObject;
+    }
+
+    ;
+
+    public SqlObject getSqlObject() {
+        return sqlObject;
+    }
+}

+ 18 - 0
src/main/java/cn/cslg/pas/mapper/FinalInvalidStatueMapper.java

@@ -0,0 +1,18 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.FinalInvalidStatue;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author admin
+* @description 针对表【final_invalid_statue(最终无效理由和证据)】的数据库操作Mapper
+* @createDate 2024-06-20 17:09:07
+* @Entity cn/cslg/pas.domain.FinalInvalidStatue
+*/
+public interface FinalInvalidStatueMapper extends BaseMapper<FinalInvalidStatue> {
+
+}
+
+
+
+

+ 19 - 0
src/main/java/cn/cslg/pas/mapper/FinalProofGroupMapper.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.mapper;
+
+
+import cn.cslg.pas.domain.FinalProofGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author admin
+* @description 针对表【final_proof_group(最终证据组合)】的数据库操作Mapper
+* @createDate 2024-06-20 17:10:10
+* @Entity cn/cslg/pas.domain.FinalProofGroup
+*/
+public interface FinalProofGroupMapper extends BaseMapper<FinalProofGroup> {
+
+}
+
+
+
+

+ 217 - 0
src/main/java/cn/cslg/pas/service/FinalInvalidStatueService.java

@@ -0,0 +1,217 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.invalidDTO.PatentClaimDTO;
+import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupEditDTO;
+import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupQueryDTO;
+import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupVO;
+import cn.cslg.pas.common.vo.invalidVO.PatentClaimHistoryVO;
+import cn.cslg.pas.domain.FinalInvalidStatue;
+import cn.cslg.pas.domain.FinalProofGroup;
+import cn.cslg.pas.domain.business.InvalidStatutes;
+import cn.cslg.pas.domain.business.ProofGroup;
+import cn.cslg.pas.mapper.FinalInvalidStatueMapper;
+import cn.cslg.pas.service.business.InvalidStatutesService;
+import cn.cslg.pas.service.business.ProofGroupService;
+import cn.cslg.pas.service.business.invalidReport.PatentClaimHistoryService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.data.elasticsearch.core.query.UpdateQuery;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author admin
+ * @description 针对表【final_invalid_statue(最终无效理由和证据)】的数据库操作Service实现
+ * @createDate 2024-06-20 17:09:07
+ */
+@Service
+@RequiredArgsConstructor
+public class FinalInvalidStatueService extends ServiceImpl<FinalInvalidStatueMapper, FinalInvalidStatue> {
+    private final InvalidStatutesService invalidStatutesService;
+    private final PatentClaimHistoryService patentClaimHistoryService;
+    private static List<Integer> inStatueIds = Arrays.asList(2, 3, 4);
+    private final ProofGroupService proofGroupService;
+    private final FinalProofGroupService finalProofGroupService;
+
+    public void ImportByProjectId(Integer projectId, Integer statueType) {
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void importFinalInvalidStatutes(Integer projectId) {
+
+        //删除原来保存数据
+        this.removeFinalInvalidStatus(projectId);
+        //根据projectId 查询无效理由和证据
+        LambdaQueryWrapper<InvalidStatutes> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InvalidStatutes::getProjectId, projectId);
+        List<InvalidStatutes> invalidStatutes = invalidStatutesService.list(queryWrapper);
+
+        for (InvalidStatutes invalidStatute : invalidStatutes) {
+            FinalInvalidStatue finalInvalidStatue = new FinalInvalidStatue();
+            Integer claimId = invalidStatute.getClaimId();
+            finalInvalidStatue.setStatuteId(invalidStatute.getStatutesId());
+            Map<String, String> claimMess = this.getClaimText(claimId);
+            finalInvalidStatue.setClaimText(claimMess.get("claimText"));
+            finalInvalidStatue.setCourtOpinions1(claimMess.get("court1"));
+            finalInvalidStatue.setCourtOpinions2(claimMess.get("court2"));
+            if (claimMess.get("index") != null) {
+                Integer index = Integer.parseInt(claimMess.get("index").toString());
+                finalInvalidStatue.setClaimOrder(index);
+            }
+            finalInvalidStatue.setProjectId(projectId);
+            finalInvalidStatue.insert();
+            finalProofGroupService.addFinalProofGroup(invalidStatute.getId(), finalInvalidStatue);
+        }
+
+    }
+
+    public Map<String, String> getClaimText(Integer claimId) {
+        String claimText = "";
+        PatentClaimDTO patentClaimDTO = new PatentClaimDTO();
+        patentClaimDTO.setClaimId(claimId);
+
+        PatentClaimHistoryVO patentClaimHistoryVO = patentClaimHistoryService.queryPatentClaimHistory(patentClaimDTO);
+        if (patentClaimHistoryVO.getSecondClaimVO() != null && patentClaimHistoryVO.getSecondClaimVO().getOperateType().equals(0)) {
+            claimText = patentClaimHistoryVO.getSecondClaimVO().getContent();
+        } else if (patentClaimHistoryVO.getFirstClaimVO() != null && patentClaimHistoryVO.getFirstClaimVO().getOperateType().equals(0)) {
+            claimText = patentClaimHistoryVO.getFirstClaimVO().getContent();
+        } else {
+            claimText = patentClaimHistoryVO.getOriginalClaimVO().getContent();
+        }
+        Map<String, String> map = new HashMap<>();
+        map.put("claimText", claimText);
+        map.put("court1", patentClaimHistoryVO.getOriginalClaimVO().getCourtDecision1());
+        map.put("court2", patentClaimHistoryVO.getOriginalClaimVO().getCourtDecision2());
+        if( patentClaimHistoryVO.getOriginalClaimVO().getSysOrder()!=null) {
+            map.put("index", patentClaimHistoryVO.getOriginalClaimVO().getSysOrder().toString());
+        }
+        return map;
+    }
+
+    public List<FinalProfGroupVO> queryFinalProofGroup(FinalProfGroupQueryDTO finalProfGroupQueryDTO) {
+        List<FinalProfGroupVO> finalProfGroupVOS = new ArrayList<>();
+
+        Integer projectId = finalProfGroupQueryDTO.getId();
+        Integer statusType = finalProfGroupQueryDTO.getStatueType();
+        //根据projectId查询最终无效理由和证据
+        LambdaQueryWrapper<FinalInvalidStatue> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(FinalInvalidStatue::getProjectId, projectId);
+
+        if (statusType != null) {
+            if (statusType.equals(1)) {
+                queryWrapper.in(FinalInvalidStatue::getStatuteId, inStatueIds);
+            } else {
+                queryWrapper.notIn(FinalInvalidStatue::getStatuteId, inStatueIds);
+
+            }
+        }
+        List<FinalInvalidStatue> finalInvalidStatues = this.list(queryWrapper);
+        if (finalInvalidStatues.size() == 0) {
+            return finalProfGroupVOS;
+        }
+        List<Integer> ids = finalInvalidStatues.stream().map(FinalInvalidStatue::getId).collect(Collectors.toList());
+
+        List<FinalProofGroup> finalProofGroups = new ArrayList<>();
+        LambdaQueryWrapper<FinalProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.in(FinalProofGroup::getFinalInvalidStatueId, ids).orderByDesc(FinalProofGroup::getFinalInvalidStatueId);
+        finalProofGroups = finalProofGroupService.list(queryWrapper1);
+        finalProofGroups.forEach(item -> {
+            FinalProfGroupVO finalProfGroupVO = new FinalProfGroupVO();
+            FinalInvalidStatue finalInvalidStatue = finalInvalidStatues.stream()
+                    .filter(tem -> tem.getId().equals(item.getFinalInvalidStatueId())).findFirst().orElse(null);
+            if (finalInvalidStatue != null) {
+                finalProfGroupVO.setInvalidStatue(finalInvalidStatue);
+            }
+            finalProfGroupVO.setId(item.getId());
+            finalProfGroupVO.setPresentOpinions(item.getPresentOpinions());
+            finalProfGroupVO.setInvalidReason(item.getInvalidReason());
+            finalProfGroupVO.setRbDecision(item.getRbDecision());
+            finalProfGroupVOS.add(finalProfGroupVO);
+
+        });
+        return finalProfGroupVOS;
+    }
+
+
+    public void editProofGroup(FinalProfGroupEditDTO finalProfGroupEditDTO) {
+        Integer invalidStatueId = finalProfGroupEditDTO.getInvalidStatueId();
+        Integer proofGroupId = finalProfGroupEditDTO.getProofGroupId();
+        String editField = finalProfGroupEditDTO.getEditField();
+        String fieldContent = finalProfGroupEditDTO.getFieldContent();
+        switch (editField) {
+            case "invalidReason":
+                FinalProofGroup finalProofGroup1 = finalProofGroupService.getById(proofGroupId);
+                finalProofGroup1.setInvalidReason(fieldContent);
+                finalProofGroup1.updateById();
+                break;
+            case "presentOpinions":
+                FinalProofGroup finalProofGroup2 = finalProofGroupService.getById(proofGroupId);
+                finalProofGroup2.setPresentOpinions(fieldContent);
+                finalProofGroup2.updateById();
+                break;
+            case "rbDecision":
+                FinalProofGroup finalProofGroup3 = finalProofGroupService.getById(proofGroupId);
+                finalProofGroup3.setRbDecision(fieldContent);
+                finalProofGroup3.updateById();
+                break;
+            case "courtOpinions1":
+                FinalInvalidStatue finalInvalidStatue1 = this.getById(invalidStatueId);
+                Integer claimOrder = finalInvalidStatue1.getClaimOrder();
+                UpdateWrapper<FinalInvalidStatue> updateWrapper = new UpdateWrapper<>();
+
+                // Lambda表达式
+                updateWrapper.lambda().set(FinalInvalidStatue::getCourtOpinions1, fieldContent)
+                        .eq(FinalInvalidStatue::getClaimOrder, claimOrder)
+                        .eq(FinalInvalidStatue::getProjectId, finalInvalidStatue1.getProjectId());
+                this.update(updateWrapper);
+                break;
+            case "courtOpinions2":
+                FinalInvalidStatue finalInvalidStatue2 = this.getById(invalidStatueId);
+                Integer claimOrder2 = finalInvalidStatue2.getClaimOrder();
+                UpdateWrapper<FinalInvalidStatue> updateWrapper2 = new UpdateWrapper<>();
+
+                // Lambda表达式
+                updateWrapper2.lambda().set(FinalInvalidStatue::getCourtOpinions2, fieldContent)
+                        .eq(FinalInvalidStatue::getClaimOrder, claimOrder2)
+                        .eq(FinalInvalidStatue::getProjectId, finalInvalidStatue2.getProjectId());
+                this.update(updateWrapper2);
+                break;
+            case "claimText":
+                FinalInvalidStatue finalInvalidStatue3 = this.getById(invalidStatueId);
+                Integer claimOrder3 = finalInvalidStatue3.getClaimOrder();
+                UpdateWrapper<FinalInvalidStatue> updateWrapper3 = new UpdateWrapper<>();
+
+                // Lambda表达式
+                updateWrapper3.lambda().set(FinalInvalidStatue::getClaimText, fieldContent)
+                        .eq(FinalInvalidStatue::getClaimOrder, claimOrder3)
+                        .eq(FinalInvalidStatue::getProjectId, finalInvalidStatue3.getProjectId());
+                this.update(updateWrapper3);
+                break;
+            case "statuteId":
+                FinalInvalidStatue finalInvalidStatue4 = this.getById(invalidStatueId);
+                finalInvalidStatue4.setStatuteId(Integer.parseInt(fieldContent));
+                finalInvalidStatue4.updateById();
+        }
+    }
+
+
+    public void removeFinalInvalidStatus(Integer projectId) {
+        LambdaQueryWrapper<FinalInvalidStatue> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(FinalInvalidStatue::getProjectId, projectId);
+        LambdaQueryWrapper<FinalProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.eq(FinalProofGroup::getProjectId, projectId);
+        this.remove(queryWrapper);
+        finalProofGroupService.remove(queryWrapper1);
+
+    }
+}
+
+
+
+

+ 49 - 0
src/main/java/cn/cslg/pas/service/FinalProofGroupService.java

@@ -0,0 +1,49 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.vo.invalidVO.ProofGroupVO;
+import cn.cslg.pas.domain.FinalInvalidStatue;
+import cn.cslg.pas.domain.FinalProofGroup;
+import cn.cslg.pas.mapper.FinalProofGroupMapper;
+import cn.cslg.pas.service.business.ProofGroupService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author admin
+ * @description 针对表【final_proof_group(最终证据组合)】的数据库操作Service实现
+ * @createDate 2024-06-20 17:10:10
+ */
+@Service
+@RequiredArgsConstructor
+public class FinalProofGroupService extends ServiceImpl<FinalProofGroupMapper, FinalProofGroup> {
+  private final ProofGroupService proofGroupService;
+    public void addFinalProofGroup(Integer invalidStatesId, FinalInvalidStatue finalInvalidStatue) {
+        List<ProofGroupVO> proofGroupVOS= proofGroupService.queryProofGroup(invalidStatesId);
+          for (ProofGroupVO proofGroupVO:proofGroupVOS){
+              FinalProofGroup finalProofGroup =new FinalProofGroup();
+              finalProofGroup.setProjectId(finalInvalidStatue.getProjectId());
+              finalProofGroup.setFinalInvalidStatueId(finalInvalidStatue.getId());
+              finalProofGroup.setRbDecision(proofGroupVO.getRbOpinions());
+           if(proofGroupVO.getInvalidReasonDetail2()!=null)  {
+               finalProofGroup.setInvalidReason(proofGroupVO.getInvalidReasonDetail2());
+               finalProofGroup.setPresentOpinions(proofGroupVO.getPresentOpinions2());
+           }
+           else{
+               finalProofGroup.setInvalidReason(proofGroupVO.getInvalidReasonDetail1());
+               finalProofGroup.setPresentOpinions(proofGroupVO.getPresentOpinions1());
+           }
+            finalProofGroup.insert();
+          }
+    }
+
+
+
+}
+
+
+
+

+ 1 - 0
src/main/java/cn/cslg/pas/service/SearchRecordService.java

@@ -104,6 +104,7 @@ public class SearchRecordService extends ServiceImpl<SearchRecordMapper, SearchR
 
         LambdaQueryWrapper<SearchRecord> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(SearchRecord::getProjectId, projectId);
+        queryWrapper.orderByDesc(SearchRecord::getCreateTime);
         Page<SearchRecord> searchRecordPage = this.page(new Page<>(current, size), queryWrapper);
         Long total = searchRecordPage.getTotal();
         List<SearchRecord> searchRecords = searchRecordPage.getRecords();

+ 56 - 12
src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java

@@ -92,7 +92,7 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
                 //文档guid
                 compareLiterature.setLiteratureNo(patent.getPatentNo());
                 //文档名称
-                String name = patent.getPatentNo();
+                String name = "";
 
                 //作者
                 String authorName = "";
@@ -106,7 +106,7 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
                 }
                 if (patent != null) {
                     if (patent.getTitle() != null && patent.getTitle().size() != 0) {
-                        name += "(" + patent.getTitle().get(0).getTextContent() + ")";
+                        name = patent.getTitle().get(0).getTextContent();
                     }
                     compareLiterature.setAppDate(patent.getAppDate());
                     compareLiterature.setPublicDate(patent.getPublicDate());
@@ -431,6 +431,7 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
     /**
      * 添加或更新专利文献
      */
+    @Transactional(rollbackFor = Exception.class)
     public Integer saveOrUpdatePatent(UpdateBatchLiteraturesDTO updateBatchLiteratureDTO) {
         PersonnelVO personnelVO = new PersonnelVO();
         Integer projectId = updateBatchLiteratureDTO.getProjectId();
@@ -445,36 +446,41 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         }
 
         Patent patent = new Patent();
-        //判断该专利是否已经作为文献
-        Integer lastId = this.getHaveAddIdByNos(projectId, literatureNo);
-        if (lastId != null&&id==null) {
-            id = lastId;
-        }
+        PatentWithIdVO patentWithIdVO = new PatentWithIdVO();
         //判断库里是否存在该专利
         try {
-            PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(literatureNo);
+            patentWithIdVO = esService.getIdByPatentNo(literatureNo);
             if (patentWithIdVO == null) {
                 // 不存在该专利则从数据库获取著录信息并保存
-                patent = importSinglePatentService.addSinglePatent(literatureNo);
+                patentWithIdVO = importSinglePatentService.addSinglePatent(literatureNo);
+                patent = patentWithIdVO.getPatent();
             } else {
                 patent = patentWithIdVO.getPatent();
             }
         } catch (Exception e) {
 
         }
-
+        if(patentWithIdVO==null){
+            return  null;
+        }
+        literatureNo = patent.getPatentNo();
+        //判断该专利是否已经作为文献
+        Integer lastId = this.getHaveAddIdByNos(projectId, literatureNo);
+        if (lastId != null && id == null) {
+            id = lastId;
+        }
 
         CompareLiterature compareLiterature = new CompareLiterature();
         compareLiterature.setCreateId(personnelVO.getId());
         //报告id
         compareLiterature.setProjectId(projectId);
         //文档guid
-        compareLiterature.setLiteratureNo(literatureNo);
+        compareLiterature.setLiteratureNo(patent.getPatentNo());
         //文档名称
         String name = literatureNo;
         if (patent != null) {
             if (patent.getTitle() != null && patent.getTitle().size() != 0) {
-                name += "(" + patent.getTitle().get(0).getTextContent() + ")";
+                name = patent.getTitle().get(0).getTextContent();
             }
             compareLiterature.setAppDate(patent.getAppDate());
             compareLiterature.setPublicDate(patent.getPublicDate());
@@ -502,6 +508,11 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         } else {
             compareLiterature.insert();
         }
+        try {
+            importSinglePatentService.saveAssoPatentProjectToEs(projectId, patentWithIdVO.getId());
+        } catch (Exception e) {
+            throw new XiaoShiException("添加和es关联错误");
+        }
 
         return compareLiterature.getId();
 
@@ -649,4 +660,37 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         }
         return true;
     }
+
+
+
+    public  void addAssoToEs(){
+        List<String> patentNos =new ArrayList<>();
+        LambdaQueryWrapper<CompareLiterature> compareLiteratureLambdaQueryWrapper =new LambdaQueryWrapper<>();
+       compareLiteratureLambdaQueryWrapper.eq(CompareLiterature::getType,0);
+        List<CompareLiterature> compareLiteratures =this.list(compareLiteratureLambdaQueryWrapper);
+        int i=0;
+        for (CompareLiterature item: compareLiteratures){
+           i++;
+            System.out.println(i);
+            String patentNo =item.getLiteratureNo().trim();
+            Integer projectId =item.getProjectId();
+            try {
+                PatentWithIdVO  patentWithIdVO = esService.getIdByPatentNo(patentNo);
+                if(patentWithIdVO==null){
+                        // 不存在该专利则从数据库获取著录信息并保存
+                        patentWithIdVO = importSinglePatentService.addSinglePatent(patentNo);
+
+                }
+                importSinglePatentService.saveAssoPatentProjectToEs(projectId, patentWithIdVO.getId());
+            }
+catch (Exception e){
+                e.printStackTrace();
+    patentNos.add(patentNo);
+            }
+
+        }
+System.out.println(patentNos);
+    }
+
+
 }

+ 10 - 6
src/main/java/cn/cslg/pas/service/business/FollowUpService.java

@@ -32,6 +32,7 @@ import com.github.pagehelper.PageHelper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -92,11 +93,11 @@ public class FollowUpService extends ServiceImpl<FollowUpMapper, FollowUp> {
             }
         }
         //DTO赋值给后续事项表实体类
-        FollowUp followUp = new FollowUp();
-        if (followUpUpdateDTOList.size() > 0 && followUpUpdateDTOList != null) {
+        if (!CollectionUtils.isEmpty(followUpUpdateDTOList)) {
             //遍历传入列表
             for (int i = 0; i < followUpUpdateDTOList.size(); i++) {
                 FollowUpUpdateDTO followUpUpdateDTO = followUpUpdateDTOList.get(i);
+                FollowUp followUp = this.getById(followUpUpdateDTO.getId());
                 BeanUtils.copyProperties(followUpUpdateDTO, followUp);
                 //根据id修改后续事项表数据
                 followUp.updateById();
@@ -216,12 +217,15 @@ public class FollowUpService extends ServiceImpl<FollowUpMapper, FollowUp> {
             }
 
             //装载状态
-            if (followUp.getStatus().equals(0)) {
-                followUpVO.setStatusStr("进行中");
-            } else if (followUp.getStatus().equals(1)) {
-                followUpVO.setStatusStr("完成");
+            if (followUp.getStatus() != null) {
+                if (followUp.getStatus().equals(0)) {
+                    followUpVO.setStatusStr("进行中");
+                } else if (followUp.getStatus().equals(1)) {
+                    followUpVO.setStatusStr("完成");
+                }
             }
 
+
             //装载文件信息
             List<AssoFollowUpFile> assoFollowUpFilesTemp = assoFollowUpFiles.stream().filter(item -> item.getFollowUpId().equals(followUp.getId())).collect(Collectors.toList());
             if (assoFollowUpFilesTemp.size() != 0) {

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

@@ -142,6 +142,7 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper, ProofGroup>
         if (!proofGroups.isEmpty()) {
             proofGroups.forEach(item -> {
                 ProofGroupVO proofGroupVO = new ProofGroupVO();
+                BeanUtils.copyProperties(item,proofGroupVO);
                 proofGroupVO.setId(item.getId());
                 proofGroupVO.setInvalidStatutesId(invalidStatutesId);
                 proofGroupVO.setStatutesId(invalidStatutes.getStatutesId());

+ 47 - 8
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -16,6 +16,8 @@ import cn.cslg.pas.common.vo.DepartmentVO;
 import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.common.vo.business.*;
 import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentPerson;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
@@ -25,6 +27,7 @@ import cn.cslg.pas.mapper.AssoProjectEventMapper;
 import cn.cslg.pas.mapper.EventMapper;
 import cn.cslg.pas.mapper.PatentProjectMapper;
 import cn.cslg.pas.mapper.ReportProjectMapper;
+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.permissions.PermissionService;
@@ -103,6 +106,8 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
     @Autowired
     private EsService esService;
     @Autowired
+    private EsPatentService esPatentService;
+    @Autowired
     private CustomFieldService customFieldService;
     @Autowired
     @Lazy
@@ -111,11 +116,16 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-        List<String> sqls = formatQueryService.reSqls(queryRequest, "reportProject");
+        String tableName = "reportProject";
+        Boolean ifInvalidReport = true;
+        if (ifInvalidReport != null && ifInvalidReport) {
+            tableName = "invalidReportProject";
+        }
+        List<String> sqls = formatQueryService.reSqls(queryRequest, tableName);
         sqls = this.loadSearchSql(sqls);
         //根据sql查询事件信息
         List<ReportProjectVO> reportProject = reportProjectMapper.getReportProject(sqls.get(0), sqls.get(1), sqls.get(2));
-        this.loadReportProjectVO(reportProject);
+        this.loadReportProjectVO(reportProject, ifInvalidReport);
 
         //查询总数
         Long total = reportProjectMapper.getReportProjectCount(sqls.get(0));
@@ -344,9 +354,9 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         }
         reportProject.setProjectId(project.getId());
         //根据是否直接完成设置报告的状态
-        if (reportProjectDTO.getIfFinish() == null) {
+        if (reportProjectDTO.getIfFinish() == null || !reportProjectDTO.getIfFinish()) {
             reportProject.setStatus(2);
-        } else if (reportProjectDTO.getIfFinish() == true) {
+        } else if (reportProjectDTO.getIfFinish()) {
             reportProject.setStatus(3);
         }
         reportProject.insert();
@@ -359,6 +369,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             reportProjectDTO.getFollowUps().forEach(item -> {
                 FollowUp followUp = new FollowUp();
                 BeanUtils.copyProperties(item, followUp);
+                followUp.setProjectId(project.getId());
                 followUp.setCreateId(userId);
                 followUps.add(followUp);
             });
@@ -532,6 +543,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
                 FollowUp followUp = new FollowUp();
                 BeanUtils.copyProperties(item, followUp);
                 followUp.setCreateId(userId);
+                followUp.setProjectId(project.getId());
                 followUps.add(followUp);
             });
             followUpService.saveBatch(followUps);
@@ -598,7 +610,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
      *
      * @param reportProjectVOs
      */
-    private void loadReportProjectVO(List<ReportProjectVO> reportProjectVOs) throws IOException {
+    private void loadReportProjectVO(List<ReportProjectVO> reportProjectVOs, Boolean ifInvalidReport) throws IOException {
         List<String> createIds = new ArrayList<>();
         List<String> departmentIds = new ArrayList<>();
         List<DepartmentVO> departmentVOS = new ArrayList<>();
@@ -613,6 +625,8 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         List<Scenario> scenarios = new ArrayList<>();
         List<Matter> matters = new ArrayList<>();
         List<AssoProject> assoProjects = new ArrayList<>();
+        List<String> patentNos = new ArrayList<>();
+        List<Patent> patentList = new ArrayList<>();
         reportProjectVOs.forEach(
                 item -> {
 
@@ -639,6 +653,9 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
                     if (item.getEntrustType() != null && item.getEntrustType().equals(1)) {
                         clientIds.add(Integer.parseInt(item.getEntrustId()));
                     }
+                    if (ifInvalidReport != null && ifInvalidReport && item.getSignPatentNo() != null) {
+                        patentNos.add(item.getSignPatentNo());
+                    }
                 }
         );
 
@@ -661,7 +678,14 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             departmentVOS = JSON.parseArray(json, DepartmentVO.class);
 
         }
+        //查询标的专利信息
+        if (ifInvalidReport != null && ifInvalidReport && patentNos.size() > 0) {
+            try {
+                patentList = esPatentService.getPatentsByNo(patentNos, true, null, null);
 
+            } catch (Exception e) {
+            }
+        }
         if (ids.size() != 0) {
             //根据事件id获得专利数据库文件关联表
             LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
@@ -684,7 +708,6 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             reportTypeList = systemDictService.list(systemDictLambdaQueryWrapper);
 
 
-            //
             LambdaQueryWrapper<AssoProject> queryWrapper1 = new LambdaQueryWrapper<>();
             queryWrapper1.in(AssoProject::getAssoProjectId, ids);
             assoProjects = assoProjectService.list(queryWrapper1);
@@ -693,9 +716,12 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
 
         //查询文件
         if (guids.size() != 0) {
-            String res = fileManagerService.getSystemFileFromFMS(guids);
+            try {
+                String res = fileManagerService.getSystemFileFromFMS(guids);
 
-            systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                systemFiles = JSONObject.parseArray(res, SystemFile.class);
+            } catch (Exception e) {
+            }
         }
 
         //查询客户名称
@@ -864,6 +890,19 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             if (assoProject != null) {
                 reportProjectVO.setAssoReportId(assoProject.getProjectId());
             }
+
+            //装载专利权人
+            if (ifInvalidReport != null && ifInvalidReport && reportProjectVO.getSignPatentNo() != null && patentList.size() > 0) {
+                String patentNo = reportProjectVO.getSignPatentNo();
+                Patent patent = patentList.stream().filter(item -> patentNo.equals(item.getPublicNo()) || patentNo.equals(item.getGrantNo()) || patentNo.equals(item.getAppNo())).findFirst().orElse(null);
+                if (patent != null) {
+                    if (patent.getRightHolder() != null && patent.getRightHolder().size() > 0) {
+                        List<String> rightHolders = patent.getRightHolder().stream().map(PatentPerson::getName).collect(Collectors.toList());
+                        reportProjectVO.setRightHolder(rightHolders);
+                    }
+
+                }
+            }
         }
     }
 

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

@@ -43,6 +43,7 @@ import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.DeleteResponse;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.search.FieldCollapse;
 import co.elastic.clients.elasticsearch.core.search.Hit;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -571,6 +572,7 @@ public class EsPatentService {
         rePatentSource.add("grant_no");
         rePatentSource.add("grant_date");
         rePatentSource.add("title");
+        rePatentSource.add("project_id");
         return rePatentSource;
     }
 
@@ -808,4 +810,48 @@ public class EsPatentService {
             }
         return patentWithIdVOS;
     }
+
+    //根据专利号模糊查询
+ public List<Integer> getProjectIds(String patentNo) throws Exception{
+       List<Integer> projectIds=new ArrayList<>();
+     List<Patent> patentList = new ArrayList<>();
+     SearchRequest.Builder builder = new SearchRequest.Builder();
+     //设置查询索引
+     builder.index("patent");
+
+String searchPatentNo ="*"+patentNo+"*";
+
+         Query q1 = QueryBuilders.wildcard(i -> i.field("app_no.keyword").value(searchPatentNo));
+         //公开号
+         Query q2 = QueryBuilders.wildcard(t -> t.field("public_no.keyword").value(searchPatentNo));
+         //授权号
+         Query q3 = QueryBuilders.wildcard(t -> t.field("grant_no.keyword").value(searchPatentNo));
+         Query query = QueryBuilders.bool(i -> i.should(q1, q2, q3));
+
+
+       Query query1=      QueryBuilders.hasParent(i -> i.parentType("patent").query(query));
+
+Query query2 =QueryBuilders.exists(i->i.field("project_id"));
+     Query finalQuery = QueryBuilders.bool((i -> i.must(query1,query2)));
+     builder.query(finalQuery);
+         List<String> reSources = this.rePatentSource();
+         builder.source(sourceOptionsBuilder -> sourceOptionsBuilder
+                 .filter(fieldSourceBuilder -> fieldSourceBuilder
+                         .includes(reSources)));
+     builder.from(0).size(1000);
+     FieldCollapse collapse = FieldCollapse.of(i -> i.field("project_id"));
+     builder.collapse(collapse);
+     builder.trackTotalHits(i -> i.enabled(true));
+     SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+     List<Hit<Patent>> hits = response.hits().hits();
+     if (hits != null && hits.size() > 0) {
+         hits.forEach(item -> {
+                     Patent patent = item.source();
+             projectIds.add(patent.getProjectId());
+                 }
+         );
+     }
+     return projectIds;
+
+ }
 }

+ 5 - 6
src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java

@@ -208,8 +208,6 @@ public class GetCataloguingFromWebThread extends Thread {
 
         //装载公告日
         if (starPatentVO.getPublicAccreditDate() != null && !starPatentVO.getPublicAccreditDate().equals("")) {
-//
-//            patent.setGrantDate();
             Date date = DateUtils.strToDate(starPatentVO.getPublicAccreditDate());
             patent.setGrantDate(date);
         }
@@ -247,7 +245,6 @@ public class GetCataloguingFromWebThread extends Thread {
         if (starPatentVO.getApplicationNo() != null && !starPatentVO.getApplicationNo().equals("")) {
             patent.setAppNo(starPatentVO.getApplicationNo());
             country = starPatentVO.getApplicationNo().substring(0, 2);
-
         }
 
         //装载公开号
@@ -285,8 +282,8 @@ 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());
@@ -344,6 +341,7 @@ public class GetCataloguingFromWebThread extends Thread {
         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("")) {
@@ -352,6 +350,7 @@ public class GetCataloguingFromWebThread extends Thread {
                     patent.setApplicantAddr(personAddress);
                 }
             }
+
             //装载代理人
             if (patent.getAgent() == null || patent.getAgent().size() == 0) {
                 if (chinaPatentZhuLu.getAT() != null && !chinaPatentZhuLu.getAT().equals("")) {
@@ -378,6 +377,7 @@ public class GetCataloguingFromWebThread extends Thread {
                     patent.setInventor(patentPeople);
                 }
             }
+
             //装载优先权号、优先权国家、优先权日
             if (chinaPatentZhuLu.getPR() != null && chinaPatentZhuLu.getPR() != "") {
                 String pr = chinaPatentZhuLu.getPR();
@@ -524,6 +524,7 @@ public class GetCataloguingFromWebThread extends Thread {
             text.setTextContent(worldPatentZhuLu.getTitle());
             patent.setTitle(Arrays.asList(text));
         }
+
         //装载摘要
         if (patent.getAbstractStr() == null || patent.getAbstractStr().equals("")) {
             Text text = new Text();
@@ -532,8 +533,6 @@ public class GetCataloguingFromWebThread extends Thread {
             text.setTextContent(worldPatentZhuLu.getAbstract());
             patent.setAbstractStr(Arrays.asList(text));
         }
-
-
     }
 
     public List<String> reQuotedNos(String str) {

+ 9 - 8
src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java

@@ -137,7 +137,6 @@ public class GetPatentFromExcelThread extends Thread {
             }
         }
         patent.setPatentNo(patentNo);
-
         //装载国家
         patent.setAppCountry(contry);
         //装载标题
@@ -247,6 +246,7 @@ public class GetPatentFromExcelThread extends Thread {
         }
 
         List<String> applicantNames = uploadParamsVO.getPatentApplicantOriginalName();
+
         //申请人
         if (applicantNames != null && applicantNames.size() != 0) {
             List<PatentPerson> patentPeople = new ArrayList<>();
@@ -272,7 +272,6 @@ public class GetPatentFromExcelThread extends Thread {
                 patentPeople.add(patentPerson);
             }
             patent.setRightHolder(patentPeople);
-
         }
 
         //发明人
@@ -287,7 +286,6 @@ public class GetPatentFromExcelThread extends Thread {
                 patentPeople.add(patentPerson);
             }
             patent.setInventor(patentPeople);
-
         }
 
         List<String> ipcList = uploadParamsVO.getIpcList();
@@ -391,7 +389,9 @@ public class GetPatentFromExcelThread extends Thread {
                     case "失效":
                         patent.setSimpleStatus("2");
                         break;
-
+                    default:
+                        patent.setSimpleStatus("3");
+                        break;
                 }
             }
 
@@ -401,8 +401,8 @@ public class GetPatentFromExcelThread extends Thread {
 
 
     private void loadLegalStatusBySta(UploadParamsVO uploadParamsVO) {
-        Patent patent =uploadParamsVO.getPatent();
-        if (uploadParamsVO != null && uploadParamsVO.getPatentAffair() != null && uploadParamsVO.getPatentAffair().getStatus()!=null&&patent.getSimpleStatus()==null) {
+        Patent patent = uploadParamsVO.getPatent();
+        if (uploadParamsVO != null && uploadParamsVO.getPatentAffair() != null && uploadParamsVO.getPatentAffair().getStatus() != null && patent.getSimpleStatus() == null) {
             String status = uploadParamsVO.getPatentAffair().getStatus().split("\\|")[0];
             if (status != null) {
 
@@ -413,15 +413,16 @@ public class GetPatentFromExcelThread extends Thread {
                         break;
                     case "实质审查":
                         patent.setSimpleStatus("1");
-                         break;
+                        break;
                     default:
                         patent.setSimpleStatus("3");
                 }
             }
 
-
         }
     }
+
+
     private void loadPatentType(Patent patent) {
         String type = patent.getPatentType();
         if (type != null) {

+ 36 - 9
src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java

@@ -23,6 +23,7 @@ import cn.cslg.pas.domain.business.ReportProject;
 import cn.cslg.pas.domain.es.*;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.ReportProjectService;
+import cn.cslg.pas.service.business.es.EsMergePersonService;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.business.invalidReport.PatentClaimService;
 import cn.cslg.pas.service.common.FileManagerService;
@@ -107,7 +108,8 @@ public class ImportSinglePatentService {
     }
 
 
-    public Patent addSinglePatent(String patentNo) {
+    public PatentWithIdVO addSinglePatent(String patentNo) {
+        PatentWithIdVO patentWithIdVO =new PatentWithIdVO();
         StarPatentVO starPatentVO = new StarPatentVO();
         starPatentVO = this.getPatentFromWeb(patentNo);
         if (starPatentVO == null) {
@@ -119,15 +121,18 @@ public class ImportSinglePatentService {
         patentJoin.setName("patent");
         patent.setPatentJoin(patentJoin);
         try {
-            PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(patent.getPatentNo());
+             patentWithIdVO = esService.getIdByPatentNo(patent.getPatentNo());
             if (patentWithIdVO != null) {
-                return patentWithIdVO.getPatent();
+                return patentWithIdVO;
             }
+            patentWithIdVO =new PatentWithIdVO();
             String patentId = esService.addPatent(patent);
+            patentWithIdVO.setPatent(patent);
+            patentWithIdVO.setId(patentId);
         } catch (Exception e) {
             return null;
         }
-        return patent;
+        return patentWithIdVO;
     }
 
     /**
@@ -440,7 +445,7 @@ public class ImportSinglePatentService {
         }
         //装载申请日
         if (patent.getAppDate() == null) {
-            if(worldPatentZhuLu.getAppDate()!=null&&!worldPatentZhuLu.getAppDate().equals("")) {
+            if (worldPatentZhuLu.getAppDate() != null && !worldPatentZhuLu.getAppDate().equals("")) {
                 Date date = DateUtils.strToDate(worldPatentZhuLu.getAppDate());
                 patent.setAppDate(date);
             }
@@ -448,7 +453,7 @@ public class ImportSinglePatentService {
         }
         //装载公开日
         if (patent.getPublicDate() == null) {
-            if(worldPatentZhuLu.getPubDate()!=null&&!worldPatentZhuLu.getPubDate().equals("")) {
+            if (worldPatentZhuLu.getPubDate() != null && !worldPatentZhuLu.getPubDate().equals("")) {
                 Date date = DateUtils.strToDate(worldPatentZhuLu.getPubDate());
                 patent.setPublicDate(date);
             }
@@ -884,6 +889,7 @@ public class ImportSinglePatentService {
 
     /**
      * 从OPS装载权利要求
+     *
      * @param uploadPatentWebDTO
      * @throws Exception
      */
@@ -904,9 +910,10 @@ public class ImportSinglePatentService {
 
     /**
      * 从OPS装载说明书
+     *
      * @throws Exception
      */
-    private void loadFullTextFromOPS(UploadPatentWebDTO uploadPatentWebDTO) throws Exception{
+    private void loadFullTextFromOPS(UploadPatentWebDTO uploadPatentWebDTO) throws Exception {
         Patent patent = uploadPatentWebDTO.getPatent();
         GetDescriptionInfoParamsDTO getDescriptionInfoParamsDTO = new GetDescriptionInfoParamsDTO();
         PatentNoDetailVO patentNoDetailVO = patentNoUtil.getPatentNoDetail(patent.getPatentNo());
@@ -923,7 +930,9 @@ public class ImportSinglePatentService {
     public byte[] getImages(String publicNo) throws IOException {
 
         String res = opsService.getImagesInfo(publicNo);
-        if(res==null){return null;}
+        if (res == null) {
+            return null;
+        }
         JSONObject jsonObject = JSONObject.parseObject(res);
         String imageInfo = jsonObject.getString("data");
         // 删除第一个 `[`
@@ -957,4 +966,22 @@ public class ImportSinglePatentService {
         }
     }
 
-}
+    public void saveAssoPatentProjectToEs(Integer projectId, String patentId) throws Exception {
+        //和专题库或报告进行关联
+        if (projectId != null) {
+            //根据projectId和专利id查询
+            if (patentId != null) {
+                Boolean ifInproject = esService.searchPatent(patentId, projectId);
+                if (!ifInproject) {
+                    Patent patentChild = new Patent();
+                    PatentJoin patentJoin = new PatentJoin();
+                    patentJoin.setParent(patentId);
+                    patentJoin.setName("project");
+                    patentChild.setPatentJoin(patentJoin);
+                    patentChild.setProjectId(projectId);
+                    esService.addChildPatent(patentChild, patentId);
+                }
+            }
+        }
+    }
+}

+ 423 - 0
src/main/resources/jsons/invalidReportProject.json

@@ -0,0 +1,423 @@
+[
+  {"name":"Id",
+    "type":"Integer",
+    "value":"id",
+    "field":"id",
+    "sqlField": "p.id",
+    "sqlClass": "getComSql",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"false",
+    "ifAsCondition": "true"
+  },
+  {"name":"创建月份",
+    "type":"DateTime",
+    "value":"createTimeMonth",
+    "field": "createTimeMonth",
+    "sqlField": "p.create_time",
+    "sqlClass": "getDateTimeMonthSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"false",
+    "ifAsCondition": "true"
+  },
+  {"name":"报告名称",
+  "type":"String",
+  "value":"name",
+  "field": "name",
+  "sqlField": "p.name",
+  "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getComGroup",
+  "ifSearch":"true",
+  "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "false",
+    "ifAsCondition": "true"
+
+},
+  {"name":"标的专利",
+    "type":"String",
+    "value":"signPatentNo",
+    "field": "signPatentNo",
+    "sqlField": "rp.sign_patent_no",
+    "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "ifAsCondition": "true"
+  },
+  {"name":"专利名称",
+    "type":"String",
+    "value":"inventionName",
+    "field": "inventionName",
+    "sqlField": "rp.invention_name",
+    "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "ifAsCondition": "true"
+  },
+  {"name":"无效案号",
+    "type":"String",
+    "value":"caseNumber",
+    "field": "caseNumber",
+    "sqlField": "rp.case_number",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "false"
+  },
+  {"name":"案件阶段",
+  "type":"String",
+  "value":"caseStage",
+  "field": "caseStage",
+  "sqlField": "rp.case_stage",
+  "sqlClass": "getComSql",
+  "orderClass": "getComOrder",
+  "groupClass":"getScenarioGroup",
+  "ifSearch":"false",
+  "ifGroup": "false",
+  "ifShow":"true",
+  "defaultHidden": "false"
+},
+  {"name":"报告结果",
+    "type":"Array",
+    "value":"cronNames",
+    "field": "cronNames",
+    "sqlField": "arc.cron_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getCronsNameOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "false",
+    "ifAsCondition": "true"
+  },
+  {"name":"请求人",
+    "type":"String",
+    "value":"invalidApplication",
+    "field": "invalidApplication",
+    "sqlField": "rp.invalid_application",
+    "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "专利权人",
+    "type": "Array",
+    "value": "rightHolder",
+    "field": "rightHolder",
+    "sqlField": "p.create_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "false"
+  },
+  {"name":"创建人",
+    "type":"String",
+    "value":"createName",
+    "field": "createName",
+    "sqlField": "p.create_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true",
+    "ifAsCondition": "true"
+  },
+  {"name":"负责人名称",
+    "type":"String",
+    "value":"headName",
+    "field": "headName",
+    "sqlField": "p.head_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true",
+    "ifAsCondition": "true"
+  },
+  {"name":"负责部门",
+    "type":"String",
+    "value":"departmentName",
+    "field": "departmentName",
+    "sqlField": "p.department_id",
+    "sqlClass": "getDepartmentNameSql",
+    "orderClass": "getDepartmentNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true",
+    "ifAsCondition": "true"
+  },
+  {"name":"委托方",
+    "type":"String",
+    "value":"entrustName",
+    "field": "entrustName",
+    "sqlField": "p.entrust_id",
+    "sqlClass": "getEntrustTrueNameSql",
+    "orderClass": "getEntrustOrder",
+    "groupClass":"getEntrustGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true",
+    "ifAsCondition": "true"
+  },
+
+  {"name":"委托方",
+    "type":"String",
+    "value":"entrustNameTrue",
+    "field": "entrustNameTrue",
+    "sqlField": "p.entrust_id",
+    "sqlClass": "getEntrustTrueNameSql",
+    "orderClass": "getEntrustOrder",
+    "groupClass":"getEntrustGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"false",
+    "defaultHidden": "false",
+    "ifAsCondition": "true"
+  },
+  {"name":"创建时间",
+    "type":"DateTime",
+    "value":"createTime",
+    "field": "createTime",
+    "sqlField": "p.create_time",
+    "sqlClass": "getDateTimeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true",
+    "ifAsCondition": "true"
+  },
+  {"name":"报告类型",
+    "type":"String",
+    "value":"reportTypeName",
+    "field": "reportTypeName",
+    "sqlField": "rp.report_type",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getReportTypeGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"true",
+    "defaultHidden": "true",
+    "ifAsCondition": "true"
+  },
+  {"name":"报告类型",
+    "type":"Array",
+    "value":"reportType",
+    "field": "reportType",
+    "sqlField": "rp.report_type",
+    "sqlClass": "getComSql",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false",
+    "ifAsCondition": "true"
+  },
+  {"name":"报告状态",
+    "type":"String",
+    "value":"statusName",
+    "field": "statusName",
+    "sqlField": "rp.status",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "defaultHidden": "true",
+    "ifShow":"true"
+  },
+  {"name":"报告状态",
+    "type":"Array",
+    "value":"status",
+    "field": "status",
+    "sqlField": "rp.status",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false",
+    "ifAsCondition": "true"
+  },
+  {
+    "name": "结论论述",
+    "type": "Integer",
+    "value": "cronDescription",
+    "field": "cronDescription",
+    "sqlField": "rp.cron_description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "defaultHidden": "true",
+    "ifShow": "true"
+  },
+  {"name":"描述",
+    "type":"String",
+    "value":"description",
+    "field": "description",
+    "sqlField": "p.description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "defaultHidden": "true",
+    "ifShow":"true"
+  },
+  {"name":"相关事件",
+    "type":"Array",
+    "value":"eventNames",
+    "field": "eventNames",
+    "sqlField": "aspe.event_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getEventOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "defaultHidden": "true",
+    "ifShow":"true"
+  },
+  {"name":"相关事件",
+    "type":"String",
+    "value":"eventNames",
+    "field": "eventNames",
+    "sqlField": "aspe.event_id",
+    "sqlClass": "getEventNameSql",
+    "orderClass": "getEventOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false",
+    "ifAsCondition": "true"
+  },
+  {"name":"内部卷号",
+    "type":"String",
+    "value":"volumeNumber",
+    "field": "volumeNumber",
+    "sqlField": "p.volume_number",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
+  {"name":"产品/技术",
+  "type":"String",
+  "value":"productOrTech",
+  "field": "productOrTech",
+  "sqlField": "rp.product_or_tech",
+  "sqlClass": "getLikeSql",
+  "orderClass": "getComOrder",
+  "ifSearch":"false",
+  "ifGroup": "false",
+  "ifShow":"true",
+    "defaultHidden": "true"
+},
+  {"name":"调查类型",
+    "type":"Array",
+    "value":"matterNames",
+    "field": "matterNames",
+    "sqlField": "aspm.matter_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getMatterOrder",
+    "groupClass":"getMatterGroup",
+    "ifSearch":"true",
+    "ifGroup": "true",
+    "ifShow":"true",
+    "defaultHidden": "true",
+    "ifAsCondition": "true"
+  },
+  {"name":"应用场景",
+    "type":"Array",
+    "value":"scenarioNames",
+    "field": "scenarioNames",
+    "sqlField": "asps.scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getProjectScenarioOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "true",
+    "ifShow":"true",
+    "defaultHidden": "true",
+    "ifAsCondition": "true"
+  },
+  {"name":"国知局受理年份",
+    "type":"DateTime",
+    "value":"acceptYear",
+    "field": "acceptYear",
+    "sqlField": "rp.accept_year",
+    "sqlClass": "getDateTimeMonthSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "ifAsCondition": "true"
+  },
+  {"name":"请求人代理所",
+    "type":"String",
+    "value":"applicantAgency",
+    "field": "applicantAgency",
+    "sqlField": "rp.applicant_agency",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "false"
+  },
+  {"name":"专利权人代理所",
+    "type":"String",
+    "value":"rightHolderAgency",
+    "field": "rightHolderAgency",
+    "sqlField": "rp.right_holder_agency",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "false"
+  },
+  {"name":"证据库",
+    "type":"String",
+    "value":"proofName",
+    "field": "proofName",
+    "sqlField": "p.id",
+    "sqlClass": "getProofNameSql",
+    "orderClass": "getProjectScenarioOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false",
+    "ifAsCondition": "true"
+  }
+]

+ 18 - 5
src/main/resources/jsons/reportProject.json

@@ -58,7 +58,7 @@
     "type":"String",
     "value":"headName",
     "field": "headName",
-    "sqlField": "head_id",
+    "sqlField": "p.head_id",
     "sqlClass": "getCreateNameSql",
     "orderClass": "getCreateNameOrder",
     "groupClass":"getComGroup",
@@ -86,7 +86,7 @@
     "type":"String",
     "value":"entrustName",
     "field": "entrustName",
-    "sqlField": "entrust_id",
+    "sqlField": "p.entrust_id",
     "sqlClass": "getEntrustTrueNameSql",
     "orderClass": "getEntrustOrder",
     "groupClass":"getEntrustGroup",
@@ -101,7 +101,7 @@
     "type":"String",
     "value":"entrustNameTrue",
     "field": "entrustNameTrue",
-    "sqlField": "entrust_id",
+    "sqlField": "p.entrust_id",
     "sqlClass": "getEntrustTrueNameSql",
     "orderClass": "getEntrustOrder",
     "groupClass":"getEntrustGroup",
@@ -128,7 +128,7 @@
     "type":"String",
     "value":"signPatentNo",
     "field": "signPatentNo",
-    "sqlField": "sign_patent_no",
+    "sqlField": "rp.sign_patent_no",
     "sqlClass": "getLikeSql",
     "orderClass": "getComOrder",
     "ifSearch":"true",
@@ -188,7 +188,7 @@
     "type": "Integer",
     "value": "cronDescription",
     "field": "cronDescription",
-    "sqlField": "report_type",
+    "sqlField": "rp.cron_description",
     "sqlClass": "getComSql",
     "orderClass": "getComOrder",
     "ifSearch": "false",
@@ -296,5 +296,18 @@
     "ifGroup": "true",
     "ifShow":"true",
     "ifAsCondition": "true"
+  },
+  {"name":"证据库",
+    "type":"String",
+    "value":"proofName",
+    "field": "proofName",
+    "sqlField": "p.id",
+    "sqlClass": "getProofNameSql",
+    "orderClass": "getProjectScenarioOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false",
+    "ifAsCondition": "true"
   }
 ]

+ 2 - 1
src/main/resources/mapper/PatentProjectMapper.xml

@@ -5,7 +5,8 @@
         select distinct p.id as id,p.name as name ,p.contract_no as contract_no,p.volume_number as
         volumeNumber,p.commission_case_day as commissionCaseDay,p.description as description,p.create_id as
         createId,p.create_time as createTime,pp.if_update as ifUpdate,pp.crons as crons,pp.status as status,
-        p.entrust_type as  entrustType,p.entrust_id as entrustId,p.head_id as headId,p.department_id as departmentId
+        p.entrust_type as  entrustType,p.entrust_id as entrustId,p.head_id as headId,p.department_id as departmentId,
+        asps.scenario_id,aspe.event_id,aspt.tree_type,aspt.field_id
         from patent_project as pp
         left join project as p on pp.project_id =p.id
         left join asso_project_tree_node as aspt on p.id =aspt.project_id

+ 8 - 8
src/main/resources/mapper/ReportProjectMapper.xml

@@ -3,17 +3,17 @@
 <mapper namespace="cn.cslg.pas.mapper.ReportProjectMapper">
     <select id="getReportProject" resultType="cn.cslg.pas.common.vo.business.ReportProjectVO">
         select distinct p.id as id,p.name as name ,rp.sign_patent_no as signPatentNo,p.contract_no as
-        contract_no,p.volume_number
-        as
-        volumeNumber,p.commission_case_day as commissionCaseDay,p.description as description,p.create_id as
-        createId,p.create_time as createTime, rp.report_type as reportType ,p.head_id as headId,p.department_id as
-        departmentId,
+        contract_no,p.volume_number as volumeNumber,p.commission_case_day as commissionCaseDay,
+        p.description as description,p.create_id as createId,p.create_time as createTime, rp.report_type as reportType ,
+        p.head_id as headId,p.department_id as departmentId,
         p.entrust_type as entrustType,p.entrust_id as entrustId,rp.product_or_tech as productOrTech,rp.cron_description
         as cronDescription ,rp.status as status,rp.if_second_invalid as ifSecondInvalid,rp.patent_type as
-        patentType,rp.case_number as
-        caseNumber ,rp.issue_number as issueNumber ,rp.invalid_application as invalidApplication ,rp.cron_description as
+        patentType,rp.case_number as caseNumber ,rp.issue_number as issueNumber ,rp.invalid_application as invalidApplication ,rp.cron_description as
         cronDescription,rp.act_type as actType ,rp.patent_type as patentType ,rp.current_application as
-        currentApplication, rp.invention_name as inventionName,p.contract_no as contractNo,rp.carding_opinion from report as rp left join project as p
+        currentApplication, rp.invention_name as inventionName,p.contract_no as contractNo,rp.carding_opinion,
+        rp.accept_year,rp.applicant_agency,rp.right_holder_agency,rp.case_stage,
+        aspe.event_id,arc.cron_id,aspm.matter_id,asps.scenario_id
+        from report as rp left join project as p
         on rp.project_id =p.id left join asso_report_cron arc on p.id =arc.project_id
         left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id
         left join (select * from asso_project_event where event_id is not null ) as aspe on p.id = aspe.project_id

+ 1 - 1
src/test/java/cn/cslg/pas/service/ClaimTextTests.java

@@ -30,7 +30,7 @@ public class ClaimTextTests {
 
     @Test
     public void test() throws Exception {
-        String json = CommonService.readFile("C:\\Users\\dick\\Desktop\\claim\\KR200488684Y1.json");
+        String json = CommonService.readFile("C:\\Users\\admin\\Desktop\\patentClaim\\SKE23254T3.json");
         JSONObject sqlObjects = JSON.parseObject(json, JSONObject.class);
 
         String pn = sqlObjects.get("PN").toString();

+ 22 - 13
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -23,10 +23,7 @@ import cn.cslg.pas.mapper.AssoProjectEventMapper;
 import cn.cslg.pas.service.business.MergePersonService;
 import cn.cslg.pas.service.business.ProductMarketDataService;
 import cn.cslg.pas.service.business.ReportTempleService;
-import cn.cslg.pas.service.business.es.EsCountService;
-import cn.cslg.pas.service.business.es.EsCustomFieldService;
-import cn.cslg.pas.service.business.es.EsService;
-import cn.cslg.pas.service.business.es.EsPatentService;
+import cn.cslg.pas.service.business.es.*;
 import cn.cslg.pas.service.common.FileManagerService;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import com.alibaba.fastjson.JSONObject;
@@ -43,6 +40,7 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -565,15 +563,26 @@ public class EventServiceTests {
 //        System.out.println(list);
         //3. 从es中检索数据
 //        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent", projectId);
-        List<String> list = Arrays.asList("87K5hY8BdwlBaY8vibM3","DLK3hY8BdwlBaY8vfLLP","FLK3hY8BdwlBaY8vibLp","G7K5hY8BdwlBaY8vkrR7","I7K5hY8BdwlBaY8vnbTN",
-                "K7K5hY8BdwlBaY8vqLSM","K7LEhY8BdwlBaY8vP72K","M7K5hY8BdwlBaY8vsbRD","ObK3hY8BdwlBaY8vk7Ko","TbIWhY8BdwlBaY8vhS1O",
-                "XrK2hY8BdwlBaY8v37E8","Bt6xvo8BdwlBaY8vQe2a","Y7K3hY8BdwlBaY8vwLL8","ZrK2hY8BdwlBaY8v7LEH","i7K2hY8BdwlBaY8v9bHY",
-                "k7LJhY8BdwlBaY8vq8Fi","lLK3hY8BdwlBaY8vAbFG","m7LJhY8BdwlBaY8vtcGx","nLK3hY8BdwlBaY8vGLFD","q7K5hY8BdwlBaY8vUrOz","s7K5hY8BdwlBaY8vX7MV",
-                "u7LBhY8BdwlBaY8vn7qI","wbLJhY8BdwlBaY8vvcEH","xLK3hY8BdwlBaY8vIrH6","y7LEhY8BdwlBaY8vE7wT","y7LJhY8BdwlBaY8vxsG6");
-        list.forEach(System.out::println);
-        List<String> collect = list.stream().distinct().collect(Collectors.toList());
-        System.out.println(collect.size());
-    }
+//        List<String> list = Arrays.asList("87K5hY8BdwlBaY8vibM3","DLK3hY8BdwlBaY8vfLLP","FLK3hY8BdwlBaY8vibLp","G7K5hY8BdwlBaY8vkrR7","I7K5hY8BdwlBaY8vnbTN",
+//                "K7K5hY8BdwlBaY8vqLSM","K7LEhY8BdwlBaY8vP72K","M7K5hY8BdwlBaY8vsbRD","ObK3hY8BdwlBaY8vk7Ko","TbIWhY8BdwlBaY8vhS1O",
+//                "XrK2hY8BdwlBaY8v37E8","Bt6xvo8BdwlBaY8vQe2a","Y7K3hY8BdwlBaY8vwLL8","ZrK2hY8BdwlBaY8v7LEH","i7K2hY8BdwlBaY8v9bHY",
+//                "k7LJhY8BdwlBaY8vq8Fi","lLK3hY8BdwlBaY8vAbFG","m7LJhY8BdwlBaY8vtcGx","nLK3hY8BdwlBaY8vGLFD","q7K5hY8BdwlBaY8vUrOz","s7K5hY8BdwlBaY8vX7MV",
+//                "u7LBhY8BdwlBaY8vn7qI","wbLJhY8BdwlBaY8vvcEH","xLK3hY8BdwlBaY8vIrH6","y7LEhY8BdwlBaY8vE7wT","y7LJhY8BdwlBaY8vxsG6");
+//        list.forEach(System.out::println);
+//        List<String> collect = list.stream().distinct().collect(Collectors.toList());
+//        System.out.println(collect.size());
+        List<BigDecimal> list = new ArrayList<>();
+        list.add(new BigDecimal(2.3));
+        list.add(new BigDecimal(3));
+        list.add(new BigDecimal(45));
+        list.add(new BigDecimal(13));
+        list.add(new BigDecimal(1));
+        BigDecimal init = new BigDecimal(0);
+        for (BigDecimal bigDecimal : list) {
+            init = init.compareTo(bigDecimal) >= 0 ? init : bigDecimal;
+        }
+        System.out.println(init);
 
+    }
 
 }