Browse Source

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

# Conflicts:
#	src/main/resources/application.yml
lwhhszx 1 year ago
parent
commit
81a57ccf83
53 changed files with 1449 additions and 280 deletions
  1. 29 0
      src/main/java/cn/cslg/pas/common/dto/ClaimCompareDescriptionDTO.java
  2. 11 0
      src/main/java/cn/cslg/pas/common/dto/ClaimMessageDTO.java
  3. 30 0
      src/main/java/cn/cslg/pas/common/dto/OPS/GetClaimsInfoParamsDTO.java
  4. 30 0
      src/main/java/cn/cslg/pas/common/dto/OPS/GetDescriptionInfoParamsDTO.java
  5. 30 0
      src/main/java/cn/cslg/pas/common/dto/OPS/GetFuTuParamsDTO.java
  6. 30 0
      src/main/java/cn/cslg/pas/common/dto/OPS/GetSearchBiblioParamsDTO.java
  7. 38 0
      src/main/java/cn/cslg/pas/common/dto/OPS/PubNo.java
  8. 13 0
      src/main/java/cn/cslg/pas/common/dto/PatentClaimDTO.java
  9. 11 0
      src/main/java/cn/cslg/pas/common/dto/QueryPatentClaimDTO.java
  10. 15 0
      src/main/java/cn/cslg/pas/common/dto/business/ClaimManageDTO.java
  11. 6 0
      src/main/java/cn/cslg/pas/common/dto/business/TortCompareRecordDTO.java
  12. 0 127
      src/main/java/cn/cslg/pas/common/utils/BackupUtils.java
  13. 0 2
      src/main/java/cn/cslg/pas/common/utils/LoginUtils.java
  14. 28 0
      src/main/java/cn/cslg/pas/common/utils/PatentNoUtil.java
  15. 44 0
      src/main/java/cn/cslg/pas/common/utils/esUtils/GetPatentNoUtils.java
  16. 15 0
      src/main/java/cn/cslg/pas/common/vo/OPS/GetImagesInfoVO.java
  17. 19 0
      src/main/java/cn/cslg/pas/common/vo/OPS/ImagesInfoVO.java
  18. 15 0
      src/main/java/cn/cslg/pas/common/vo/OPS/PatentNoDetailVO.java
  19. 18 0
      src/main/java/cn/cslg/pas/common/vo/OPS/PubReference.java
  20. 13 0
      src/main/java/cn/cslg/pas/common/vo/OPS/Section.java
  21. 31 33
      src/main/java/cn/cslg/pas/common/vo/RePatentClaim.java
  22. 133 0
      src/main/java/cn/cslg/pas/controller/ClaimsManageController.java
  23. 1 2
      src/main/java/cn/cslg/pas/controller/CompareLiteratureController.java
  24. 16 4
      src/main/java/cn/cslg/pas/controller/FeatureController.java
  25. 11 0
      src/main/java/cn/cslg/pas/controller/PatentController.java
  26. 29 0
      src/main/java/cn/cslg/pas/domain/business/AssoClaimCompareDescription.java
  27. 37 0
      src/main/java/cn/cslg/pas/domain/business/AssoLiteratureCompareDescription.java
  28. 41 0
      src/main/java/cn/cslg/pas/domain/business/ClaimMessage.java
  29. 2 1
      src/main/java/cn/cslg/pas/domain/business/PatentClaim.java
  30. 6 8
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/WildcardQueryBuilder.java
  31. 16 0
      src/main/java/cn/cslg/pas/mapper/AssoClaimCompareMapper.java
  32. 16 0
      src/main/java/cn/cslg/pas/mapper/AssoLiteratureCompareDescriptionMapper.java
  33. 15 0
      src/main/java/cn/cslg/pas/mapper/ClaimMessageMapper.java
  34. 14 0
      src/main/java/cn/cslg/pas/mapper/ftoReport/AssoClaimCompareDescriptionMapper.java
  35. 107 0
      src/main/java/cn/cslg/pas/service/ClaimMessageService.java
  36. 18 1
      src/main/java/cn/cslg/pas/service/business/CompareLiteratureService.java
  37. 21 9
      src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java
  38. 44 0
      src/main/java/cn/cslg/pas/service/business/FeatureService.java
  39. 46 18
      src/main/java/cn/cslg/pas/service/business/PatentProjectService.java
  40. 3 1
      src/main/java/cn/cslg/pas/service/business/ProjectService.java
  41. 69 0
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  42. 40 0
      src/main/java/cn/cslg/pas/service/business/ftoReport/AssoClaimCompareDescriptionService.java
  43. 60 0
      src/main/java/cn/cslg/pas/service/business/ftoReport/AssoLiteratureCompareDescriptionService.java
  44. 8 0
      src/main/java/cn/cslg/pas/service/business/ftoReport/ClaimManageService.java
  45. 38 2
      src/main/java/cn/cslg/pas/service/business/invalidReport/PatentClaimService.java
  46. 118 0
      src/main/java/cn/cslg/pas/service/common/OPSService.java
  47. 5 6
      src/main/java/cn/cslg/pas/service/exportProject/ExportProjectService.java
  48. 6 2
      src/main/java/cn/cslg/pas/service/exportProject/ImportProjectService.java
  49. 6 7
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromWebThread.java
  50. 0 53
      src/main/java/cn/cslg/pas/service/importPatent/GetRightAndFullTextFromWebThread.java
  51. 96 2
      src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java
  52. 1 1
      src/main/resources/application-prodNetOut.yml
  53. 0 1
      src/test/java/cn/cslg/pas/service/CommonServiceTests.java

+ 29 - 0
src/main/java/cn/cslg/pas/common/dto/ClaimCompareDescriptionDTO.java

@@ -0,0 +1,29 @@
+package cn.cslg.pas.common.dto;
+
+
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+/**
+ * <p>
+ * 委托方表
+ * </p>
+ *
+ * @author 王岩
+ * @since 2022-02-17
+ */
+@Data
+public class ClaimCompareDescriptionDTO {
+    /**
+     * 对应特征
+     */
+    private Integer id;
+    private Integer rightSort;
+
+    private String compareDescription;
+
+    private Boolean ifChange;
+
+}

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

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class ClaimMessageDTO {
+    private Integer id;
+    private String patentNo;
+    private Integer projectId;
+    private Integer taskId;
+}

+ 30 - 0
src/main/java/cn/cslg/pas/common/dto/OPS/GetClaimsInfoParamsDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.dto.OPS;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取获取权要信息的接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class GetClaimsInfoParamsDTO implements Serializable {
+    /**
+     * 国家前2位首字母
+     */
+    private String cc;
+    /**
+     * 专利号数字
+     */
+    private String number;
+    /**
+     * 专利种类
+     */
+    private String kind;
+
+}

+ 30 - 0
src/main/java/cn/cslg/pas/common/dto/OPS/GetDescriptionInfoParamsDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.dto.OPS;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取说明书信息的接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class GetDescriptionInfoParamsDTO implements Serializable {
+    /**
+     * 国家前2位首字母
+     */
+    private String cc;
+    /**
+     * 专利号数字
+     */
+    private String number;
+    /**
+     * 专利种类
+     */
+    private String kind;
+
+}

+ 30 - 0
src/main/java/cn/cslg/pas/common/dto/OPS/GetFuTuParamsDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.dto.OPS;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取附件的接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class GetFuTuParamsDTO implements Serializable {
+    /**
+     * 附件链接
+     */
+    private String link;
+    /**
+     * 附件页数
+     */
+    private Integer page;
+    /**
+     * 附件类型
+     */
+    private String type;
+
+}

+ 30 - 0
src/main/java/cn/cslg/pas/common/dto/OPS/GetSearchBiblioParamsDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.dto.OPS;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取一批专利著录接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class GetSearchBiblioParamsDTO implements Serializable {
+    /**
+     * 检索信息条件
+     */
+    private String query;
+    /**
+     * 起始专利数(1代表从第1个专利开始,注意不是页数)
+     */
+    private Integer start;
+    /**
+     * 最后专利数(10代表到第10个专利为止,注意不是页数)
+     */
+    private Integer end;
+
+}

+ 38 - 0
src/main/java/cn/cslg/pas/common/dto/OPS/PubNo.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.common.dto.OPS;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 公开号
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class PubNo implements Serializable {
+    /**
+     * 公开号类型(如:docdb、epodoc)
+     */
+    private String type;
+    /**
+     * 公开号国家(如:AU)
+     */
+    private String country;
+    /**
+     * 公开号数字(如:2021229172)
+     */
+    private String number;
+    /**
+     * 申请号类型格式(如:A1)
+     */
+    private String kind;
+    /**
+     * 申请号日期(如:2023-04-06T00:00:00)
+     */
+    private String date;
+
+}

+ 13 - 0
src/main/java/cn/cslg/pas/common/dto/PatentClaimDTO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class PatentClaimDTO {
+   private Integer id;
+    private String content;
+    private Integer type;
+    private Integer sort;
+    private String parentSort;
+    private Integer ifUpdate;
+}

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

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class QueryPatentClaimDTO {
+    private Integer literatureId;
+    private String patentNo;
+    private Integer projectId;
+    private Integer taskId;
+}

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

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.dto.business;
+
+import cn.cslg.pas.common.dto.PatentClaimDTO;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ClaimManageDTO {
+   private Integer taskId;
+   private Integer literatureId;
+   private String literatureNo;
+   private Integer projectId;
+   private List<PatentClaimDTO> claims;
+}

+ 6 - 0
src/main/java/cn/cslg/pas/common/dto/business/TortCompareRecordDTO.java

@@ -1,11 +1,13 @@
 package cn.cslg.pas.common.dto.business;
 
+import cn.cslg.pas.common.dto.ClaimCompareDescriptionDTO;
 import lombok.Data;
 
 import java.util.List;
 
 /**
  * 侵权分析对比结果保存DTO
+ *
  * @Author xiexiang
  * @Date 2023/12/8
  */
@@ -26,8 +28,12 @@ public class TortCompareRecordDTO {
      */
     private String patentNo;
 
+    private Integer literatureId;
     /**
      * 特征与侵权分析对比结果DTO
      */
     private List<TortDTO> tortDTOS;
+    private List<ClaimCompareDescriptionDTO> claimCompareDescriptionDTOS;
+    private String literatureCompareDescription;
+
 }

+ 0 - 127
src/main/java/cn/cslg/pas/common/utils/BackupUtils.java

@@ -14,132 +14,5 @@ import java.io.InputStream;
 @Slf4j
 public class BackupUtils {
 
-    private final static String BACKUP_CONFIG = "backup-config.yml";
-
-    private static Backup getBackupConfig() {
-        try {
-            ApplicationHome ah = new ApplicationHome(BackupUtils.class);
-            File file = ah.getSource();
-            String rootPath = file.getParentFile().toString() + FileUtils.FILE_SEPARATOR + BACKUP_CONFIG;
-            Yaml yaml = new Yaml();
-            InputStream in = FileUtil.getInputStream(rootPath);
-            Backup backup = yaml.loadAs(in, Backup.class);
-            if (in != null) {
-                in.close();
-            }
-            return backup;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-
-
-    public void run() {
-        Backup backup = getBackupConfig();
-        if (backup == null) {
-            log.info("数据库备份配置文件不存在");
-            return;
-        }
-        log.info("数据库备份配置文件:{}", backup);
-        if (backup.isEnable()) {
-            String path = FileUtils.getStaticPath(FileUtils.BACKUP_FILE);
-            String fileName = DateUtils.getNowTimeFormat(DateUtils.YYYYMMDDHHMMSS) + ".sql";
-            try {
-                String cmd = String.format("mysqldump --skip-opt -h%s -P%s -u%s -p%s %s > %s", backup.getHost(), backup.getPort(), backup.getUsername(), backup.getPassword(), backup.getDb(), path + FileUtils.FILE_SEPARATOR + fileName);
-                String[] command;
-                if (backup.getOs() == 0) {
-                    command = new String[]{"cmd", "/c", String.valueOf(cmd)};
-                } else {
-                    command = new String[]{"/bin/sh", "-c", String.valueOf(cmd)};
-                }
-                Runtime.getRuntime().exec(command);
-                log.info("备份数据库成功");
-            } catch (Exception e) {
-                e.printStackTrace();
-                log.error("备份数据库失败");
-            }
-        }
-    }
-
-    public static class Backup {
-        private String host;
-        private String port;
-        private String db;
-        private String username;
-        private String password;
-        private int os;
-        private boolean enable;
-
-        @Override
-        public String toString() {
-            return "Backup{" +
-                    "host='" + host + '\'' +
-                    ", port='" + port + '\'' +
-                    ", db='" + db + '\'' +
-                    ", username='" + username + '\'' +
-                    ", password='" + password + '\'' +
-                    ", os=" + os +
-                    ", enable=" + enable +
-                    '}';
-        }
-
-        public boolean isEnable() {
-            return enable;
-        }
-
-        public void setEnable(boolean enable) {
-            this.enable = enable;
-        }
-
-        public String getHost() {
-            return host;
-        }
-
-        public void setHost(String host) {
-            this.host = host;
-        }
-
-        public String getPort() {
-            return port;
-        }
-
-        public void setPort(String port) {
-            this.port = port;
-        }
-
-        public String getDb() {
-            return db;
-        }
-
-        public void setDb(String db) {
-            this.db = db;
-        }
-
-        public String getUsername() {
-            return username;
-        }
-
-        public void setUsername(String username) {
-            this.username = username;
-        }
-
-        public String getPassword() {
-            return password;
-        }
-
-        public void setPassword(String password) {
-            this.password = password;
-        }
-
-        public int getOs() {
-            return os;
-        }
-
-        public void setOs(int os) {
-            this.os = os;
-        }
-    }
 
 }

+ 0 - 2
src/main/java/cn/cslg/pas/common/utils/LoginUtils.java

@@ -6,8 +6,6 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
-
-
 import java.util.List;
 
 @Component

+ 28 - 0
src/main/java/cn/cslg/pas/common/utils/PatentNoUtil.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.utils;
+
+import cn.cslg.pas.common.vo.OPS.PatentNoDetailVO;
+import org.springframework.stereotype.Component;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Component
+public class PatentNoUtil {
+
+    public static PatentNoDetailVO getPatentNoDetail(String patentNo){
+        PatentNoDetailVO patentNoDetailVO = new PatentNoDetailVO();
+        Pattern PATENT_PATTERN = Pattern.compile("^([A-Za-z]{2})(\\d+)([A-Za-z\\d]+)$");
+        Matcher matcher = PATENT_PATTERN.matcher(patentNo);
+        if (matcher.find()) {
+            String country = matcher.group(1);
+            String num = matcher.group(2);
+            String cc = matcher.group(3);
+            patentNoDetailVO.setKind(cc);
+            patentNoDetailVO.setNumber(num);
+            patentNoDetailVO.setCc(country);
+            return patentNoDetailVO;
+        } else {
+            throw new IllegalArgumentException("Invalid patent number format: " + patentNo);
+        }
+    }
+}

+ 44 - 0
src/main/java/cn/cslg/pas/common/utils/esUtils/GetPatentNoUtils.java

@@ -0,0 +1,44 @@
+package cn.cslg.pas.common.utils.esUtils;
+
+import org.springframework.stereotype.Component;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 获取专利号
+ */
+@Component
+public class GetPatentNoUtils {
+    /**
+     * 返回专利号
+     * @param var
+     * @return
+     */
+    public String getPatentNo(String var) {
+        int fixedLength = 13;
+        int fixedLength1 = 15;
+        String fixedSymbol = ".";
+
+        String s = "";
+        if (var == null) {
+            return s;
+        }
+
+        if (var.length() == fixedLength || var.length() == fixedLength1) {
+            String frontPart = var.substring(0, var.length() - 1);
+            String afterPart = var.substring(var.length() - 1);
+            var = frontPart + fixedSymbol + afterPart;
+        }
+        //使用正则表达式匹配前两位是否为字母
+        Pattern pattern = Pattern.compile("^[a-zA-Z]{2}");
+        Matcher matcher = pattern.matcher(var);
+        boolean flag = matcher.find();
+        if (!flag) {
+            s = "CN" + var;
+        } else {
+            s = var;
+        }
+        return s;
+    }
+}

+ 15 - 0
src/main/java/cn/cslg/pas/common/vo/OPS/GetImagesInfoVO.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.vo.OPS;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/3/27
+ */
+@Data
+public class GetImagesInfoVO {
+    private PubReference pubReference;
+    private List<ImagesInfoVO> images;
+}

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

@@ -0,0 +1,19 @@
+package cn.cslg.pas.common.vo.OPS;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * OPS获取图片信息VO
+ * @Author xiexiang
+ * @Date 2024/3/27
+ */
+@Data
+public class ImagesInfoVO {
+    private String imageType;
+    private Integer numberOfPages;
+    private String urlLink;
+    private List<String> formatOptions;
+    private List<Section> sections;
+}

+ 15 - 0
src/main/java/cn/cslg/pas/common/vo/OPS/PatentNoDetailVO.java

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

+ 18 - 0
src/main/java/cn/cslg/pas/common/vo/OPS/PubReference.java

@@ -0,0 +1,18 @@
+package cn.cslg.pas.common.vo.OPS;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/3/27
+ */
+@Data
+public class PubReference {
+    private String type;
+    private String country;
+    private String number;
+    private String kind;
+    private Date date;
+}

+ 13 - 0
src/main/java/cn/cslg/pas/common/vo/OPS/Section.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.vo.OPS;
+
+import lombok.Data;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/3/27
+ */
+@Data
+public class Section {
+    private String name;
+    private Integer startPage;
+}

+ 31 - 33
src/main/java/cn/cslg/pas/common/vo/RePatentClaim.java

@@ -2,45 +2,43 @@ package cn.cslg.pas.common.vo;
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+
 /**
  * 专利权利要求
+ *
  * @TableName os_patent_right
  */
 @Accessors(chain = true)
 @Data
-
 public class RePatentClaim {
-
-
-
-        private Integer id;
-
-        /**
-         * 专利ID
-         */
-        private String patentNo;
-
-        /**
-         * 内容
-         */
-        private String contentOut;
-
-        /**
-         * 内容
-         */
-        private String content;
-
-        /**
-         * 类型
-         */
-        private Integer type;
-
-        private Integer sort;
-
-        private String rightName;
-        /**
-         * 父权要的排序号
-         */
-        private String parentSort;
+    private Integer id;
+
+    /**
+     * 专利ID
+     */
+    private String patentNo;
+
+    /**
+     * 内容
+     */
+    private String contentOut;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 类型
+     */
+    private Integer type;
+
+    private Integer sort;
+
+    private String rightName;
+    /**
+     * 父权要的排序号
+     */
+    private String parentSort;
 
 }

+ 133 - 0
src/main/java/cn/cslg/pas/controller/ClaimsManageController.java

@@ -0,0 +1,133 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
+import cn.cslg.pas.common.dto.business.ProductMessageDTO;
+import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
+import cn.cslg.pas.common.dto.business.TortTaskDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.ProductMessageVO;
+import cn.cslg.pas.common.vo.business.TortCompareRecordVO;
+import cn.cslg.pas.exception.ConditionException;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.business.ProductMessageService;
+import cn.cslg.pas.service.business.ProjectTaskService;
+import cn.cslg.pas.service.business.TortCompareRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 权利要求管理
+ * @Author lrj
+ * @Date 2024/3/25
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/claimManage")
+@RestController
+public class ClaimsManageController {
+    @Autowired
+    private ProductMessageService productMessageService;
+    @Autowired
+    private TortCompareRecordService tortCompareRecordService;
+    @Autowired
+    private ProjectTaskService projectTaskService;
+
+    @Operation(summary = "编辑/保存标的产品信息")
+    @PostMapping("/addProductMessage")
+    public Response addProductMessage(@RequestBody ProductMessageDTO productMessageDTO){
+        Integer id = productMessageService.addOrUpdateProductMessage(productMessageDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询标的产品信息")
+    @GetMapping("/getProductMessage")
+    public Response getProductMessage(Integer projectId){
+        Records records = new Records();
+        ProductMessageVO productMessageVO = productMessageService.getProductMessage(projectId);
+        records.setData(productMessageVO);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "保存侵权分析对比结果")
+    @PostMapping("/addTortCompareRecord")
+    public Response addTortCompareRecord(@RequestBody TortCompareRecordDTO tortCompareRecordDTO){
+        if (tortCompareRecordDTO != null) {
+            List<Integer> ids = new ArrayList<>();
+            try {
+                ids = tortCompareRecordService.addTortCompareRecord(tortCompareRecordDTO);
+            } catch (Exception e) {
+                if (e instanceof XiaoShiException) {
+                    return Response.error(e.getMessage());
+                } else if (e instanceof UnLoginException) {
+                    return Response.unLogin(e.getMessage());
+                } else if (e instanceof ConditionException) {
+                    return Response.conditionError(e.getMessage());
+                }
+            }
+            Records records = new Records();
+            records.setData(ids);
+            return Response.success(records);
+        } else {
+            return Response.error("入参为null");
+        }
+    }
+
+    @Operation(summary = "查询侵权分析对比结果(包含拆分特征)")
+    @PostMapping("/getTortCompareRecord")
+    public Response getTortCompareRecord(@RequestBody GetFeatureSplitDTO getFeatureSplitDTO) throws Exception {
+        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getTortCompareRecord(getFeatureSplitDTO);
+        return Response.success(tortCompareRecordVO);
+    }
+
+    @Operation(summary = "添加侵权分析协同任务")
+    @PostMapping("/addTortTask")
+    public Response addTortTask(@RequestBody TortTaskDTO tortTaskDTO) throws Exception {
+        Integer id = projectTaskService.addTortTask(tortTaskDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "保存协同任务对比结果")
+    @PostMapping("/addTortTaskResult")
+    public Response addTortTaskResult(@RequestBody TortCompareRecordDTO tortCompareRecordDTO){
+        List<Integer> ids = tortCompareRecordService.addTortTaskResult(tortCompareRecordDTO);
+        Records records = new Records();
+        records.setData(ids);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询侵权分析协同前后对比结果")
+    @GetMapping("/getAllTortTaskResult")
+    public Response getAllTortTaskResult(Integer taskId){
+        Integer type = 1;
+        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getAllTortTaskResult(null, taskId, type);
+        return Response.success(tortCompareRecordVO);
+    }
+
+    @Operation(summary = "保存最终对比结果")
+    @PostMapping("/addFinalTortResult")
+    public Response addFinalTortResult(@RequestBody TortCompareRecordDTO tortCompareRecordDTO){
+        List<Integer> ids = tortCompareRecordService.addFinalTortResult(tortCompareRecordDTO);
+        Records records = new Records();
+        records.setData(ids);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询最终结果")
+    @GetMapping("/getTortFinalResult")
+    public Response getTortFinalResult(Integer projectId, Integer taskId){
+        Integer type = 2;
+        TortCompareRecordVO tortCompareRecordVO = tortCompareRecordService.getAllTortTaskResult(projectId, taskId, type);
+        return Response.success(tortCompareRecordVO);
+    }
+}

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

@@ -84,7 +84,7 @@ public class CompareLiteratureController {
     }
 
 
-    @Operation(summary = "批量添加或编辑")
+    @Operation(summary = "批量删除对比文献")
     @PostMapping("/deleteCompareLiterature")
     public Response deleteCompareLiterature(@RequestBody List<Integer> ids) throws Exception {
         try {
@@ -92,7 +92,6 @@ public class CompareLiteratureController {
             return Response.success("删除成功");
         } catch (Exception e) {
             return Response.error("删除失败");
-
         }
     }
 }

+ 16 - 4
src/main/java/cn/cslg/pas/controller/FeatureController.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.QueryPatentClaimDTO;
 import cn.cslg.pas.common.dto.QuerySplitDTO;
 import cn.cslg.pas.common.dto.invalidDTO.QueryClaimSplitHistoryDTO;
 import cn.cslg.pas.common.dto.invalidDTO.UpdateFeatureDTO;
@@ -31,6 +32,7 @@ import java.util.List;
 @RequestMapping(Constants.API_XiaoSHI + "/feature")
 @RestController
 public class FeatureController {
+
     @Autowired
     private FeatureService featureService;
 
@@ -63,10 +65,9 @@ public class FeatureController {
 
     }
 
-
     @Operation(summary = "查询权要")
     @GetMapping("/getPatentRight")
-    public Response queryCustomField(String patentNo) throws Exception {
+    public Response getPatentRight(String patentNo) throws Exception {
         try {
             Records records = new Records();
             records.setData(featureService.getPatentRight(patentNo));
@@ -77,6 +78,19 @@ public class FeatureController {
 
     }
 
+    @Operation(summary = "查询权要")
+    @PostMapping("/getPatentRight")
+    public Response getPatentRight(QueryPatentClaimDTO queryPatentClaimDTO) throws Exception {
+        try {
+            Records records = new Records();
+            records.setData(featureService.getPatentRight(queryPatentClaimDTO));
+            return Response.success(records);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+
+    }
+
     @Operation(summary = "查询权要树")
     @GetMapping("/getPatentRightTree")
     public Response getPatentRightTree(String patentNo,String appNo) throws Exception {
@@ -113,7 +127,6 @@ public class FeatureController {
         }
     }
 
-
     @Operation(summary = "查询权要拆分历史")
     @PostMapping("/queryClaimSplitHistory")
     public Response queryClaimSplitHistory(@RequestBody QueryClaimSplitHistoryDTO queryClaimSplitHistoryDTO) throws Exception {
@@ -126,7 +139,6 @@ public class FeatureController {
 
     }
 
-
     @Operation(summary = "批量添加特征")
     @PostMapping("/saveBatchFeature")
     public Response saveBatchFeature(@RequestBody UpdateFeatureDTO updateFeatureDTO) throws Exception {

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

@@ -362,4 +362,15 @@ public class PatentController {
         }
           return Response.success("刷新成功");
     }
+
+    @Operation(summary = "批量删除专利")
+    @PostMapping("/deletePatents")
+    public Response deletePatents(@RequestBody EsCustomFieldBatchVO vo) throws Exception {
+        try {
+            esService.deletePatents(vo);
+            return Response.success("删除成功");
+        } catch (Exception e) {
+            return Response.error("删除失败");
+        }
+    }
 }

+ 29 - 0
src/main/java/cn/cslg/pas/domain/business/AssoClaimCompareDescription.java

@@ -0,0 +1,29 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("asso_claim_compare_description")
+public class AssoClaimCompareDescription extends BaseEntity<AssoClaimCompareDescription> {
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 0专题库/1报告类型
+     */
+    @TableField(value = "task_id")
+    private Integer taskId;
+
+    @TableField(value = "literature_id")
+    private Integer literatureId;
+    @TableField(value = "literature_no")
+    private String literatureNo;
+    /**
+     * 0专题库/1报告类型
+     */
+    @TableField(value = "compare_description")
+    private String compareDescription;
+}

+ 37 - 0
src/main/java/cn/cslg/pas/domain/business/AssoLiteratureCompareDescription.java

@@ -0,0 +1,37 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * <p>
+ * 专题库或报告关联表
+ * </p>
+ *
+ * @author xx
+ * @since 2024-03-25
+ */
+@Data
+@TableName("asso_literature_compare_description")
+public class AssoLiteratureCompareDescription extends BaseEntity<AssoLiteratureCompareDescription> {
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 0专题库/1报告类型
+     */
+    @TableField(value = "task_id")
+    private Integer taskId;
+
+    @TableField(value = "literature_id")
+    private Integer literatureId;
+
+
+    @TableField(value = "compare_description")
+    private String compareDescription;
+    @TableField(value = "literature_no")
+    private String literatureNo;
+
+}

+ 41 - 0
src/main/java/cn/cslg/pas/domain/business/ClaimMessage.java

@@ -0,0 +1,41 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import org.joda.time.DateTime;
+
+/**
+ * <p>
+ * 权要信息表
+ * </p>
+ *
+ * @author lrj
+ * @since 2024-03-26
+ */
+@Data
+@TableName("claim_message")
+/*数据库中的表对应的类
+ */
+public class ClaimMessage extends BaseEntity<ClaimMessage> {
+    @TableField(value = "project_id")
+    private Integer projectId;
+    /**
+     * 0专题库/1报告类型
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    @TableField(value = "task_id")
+    private Integer taskId;
+    /**
+     * 0专题库/1报告类型
+     */
+    @TableField(value = "literature_id")
+    private Integer literatureId;
+    @TableField(value = "create_id")
+    private String createId;
+    @TableField(value = "create_time")
+    private DateTime createTime;
+}

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

@@ -29,5 +29,6 @@ public class PatentClaim extends BaseEntity<PatentClaim> {
     private String courtDecision1;
     @TableField(value = "court_decision2")
     private String courtDecision2;
-
+    @TableField(value = "claim_message_id")
+    private Integer claimMessageId;
 }

+ 6 - 8
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/WildcardQueryBuilder.java

@@ -23,15 +23,13 @@ public class WildcardQueryBuilder implements IQueryBuilder{
         String str = "*";
         String s = "";
         if (list.contains(field)) {
-            if (value.contains(".")) {
-                s = str.concat(value.toUpperCase(Locale.ROOT)).concat("*");
+            if (value.length() == 13 || value.length() == 15) {
+                String frontPart = value.substring(0, value.length() - 1);
+                String afterPart = value.substring(value.length() - 1);
+                String s1 = frontPart + "." + afterPart;
+                s = str.concat(s1.toUpperCase(Locale.ROOT)).concat("*");
             } else {
-                if (value.length() > 10) {
-                    String substring = value.substring(0, value.length() - 1);
-                    s = str.concat(substring.toUpperCase(Locale.ROOT)).concat("*");
-                } else {
-                    s = str.concat(value.toUpperCase(Locale.ROOT)).concat("*");
-                }
+                s = str.concat(value.toUpperCase(Locale.ROOT)).concat("*");
             }
         } else {
             s = str.concat(value).concat("*");

+ 16 - 0
src/main/java/cn/cslg/pas/mapper/AssoClaimCompareMapper.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.ClaimMessage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author lrj
+ * @Date 2024/03/25
+ */
+@Repository
+public interface AssoClaimCompareMapper extends BaseMapper<ClaimMessage> {
+
+
+
+}

+ 16 - 0
src/main/java/cn/cslg/pas/mapper/AssoLiteratureCompareDescriptionMapper.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AssoLiteratureCompareDescription;
+import cn.cslg.pas.domain.business.ClaimMessage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author lrj
+ * @Date 2024/03/25
+ */
+@Repository
+public interface AssoLiteratureCompareDescriptionMapper extends BaseMapper<AssoLiteratureCompareDescription> {
+
+
+}

+ 15 - 0
src/main/java/cn/cslg/pas/mapper/ClaimMessageMapper.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.ClaimMessage;
+import cn.cslg.pas.domain.business.Scenario;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author lrj
+ * @Date 2024/03/25
+ */
+@Repository
+public interface ClaimMessageMapper extends BaseMapper<ClaimMessage> {
+
+}

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/ftoReport/AssoClaimCompareDescriptionMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper.ftoReport;
+
+import cn.cslg.pas.domain.business.AdminProceed;
+import cn.cslg.pas.domain.business.AssoClaimCompareDescription;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author lrj
+ * @Date 2024/03/26
+ */
+@Repository
+public interface AssoClaimCompareDescriptionMapper extends BaseMapper<AssoClaimCompareDescription> {
+}

+ 107 - 0
src/main/java/cn/cslg/pas/service/ClaimMessageService.java

@@ -0,0 +1,107 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.ClaimMessageDTO;
+import cn.cslg.pas.common.dto.PatentClaimDTO;
+import cn.cslg.pas.common.dto.business.ClaimManageDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.domain.business.ClaimMessage;
+import cn.cslg.pas.domain.business.CompareLiterature;
+import cn.cslg.pas.domain.business.Matter;
+import cn.cslg.pas.mapper.ClaimMessageMapper;
+import cn.cslg.pas.mapper.MatterMapper;
+import cn.cslg.pas.service.business.CompareLiteratureService;
+import cn.cslg.pas.service.business.invalidReport.PatentClaimService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author lrj
+ * @Date 2024/3/25
+ */
+@Slf4j
+@Service
+public class ClaimMessageService extends ServiceImpl<ClaimMessageMapper, ClaimMessage> {
+    @Autowired
+    private CompareLiteratureService compareLiteratureService;
+    @Autowired
+    private CacheUtils cacheUtils;
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private PatentClaimService patentClaimService;
+
+    public void addClaimMessage(ClaimMessageDTO claimMessageDTO) {
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void addOrUpdateClaimMessage(ClaimManageDTO claimManageDTO) {
+        Integer projectId = claimManageDTO.getProjectId();
+        Integer taskId = claimManageDTO.getTaskId();
+        String patentNo = claimManageDTO.getLiteratureNo();
+        Integer literatureId = claimManageDTO.getLiteratureId();
+        List<PatentClaimDTO> claimDTOS = new ArrayList<>();
+        if (patentNo == null && literatureId == null) {
+            return;
+        }
+
+        if (projectId == null && taskId == null) {
+            return;
+        }
+
+        ClaimMessage claimMessage = this.getClaimMessage(taskId, projectId, patentNo, literatureId);
+
+        if (claimMessage == null) {
+            claimMessage = this.addClaimMessage(taskId, projectId, patentNo, literatureId);
+        }
+
+        if (claimDTOS != null && claimDTOS.size() > 0) {
+            patentClaimService.addOrUpdate(claimDTOS, claimMessage.getId());
+        }
+
+    }
+
+
+    public ClaimMessage getClaimMessage(Integer taskId, Integer projectId, String patentNo, Integer literatureId) {
+        LambdaQueryWrapper<ClaimMessage> queryWrapper = new LambdaQueryWrapper<>();
+        if (patentNo != null) {
+            queryWrapper.eq(ClaimMessage::getPatentNo, patentNo);
+        }
+        if (taskId != null) {
+            queryWrapper.eq(ClaimMessage::getTaskId, taskId);
+        }
+        if (projectId != null) {
+            queryWrapper.eq(ClaimMessage::getProjectId, projectId);
+        }
+        if (literatureId != null) {
+            queryWrapper.eq(ClaimMessage::getLiteratureId, literatureId);
+        }
+        ClaimMessage claimMessage = this.getOne(queryWrapper, false);
+        return claimMessage;
+    }
+
+    public ClaimMessage addClaimMessage(Integer taskId, Integer projectId, String patentNo, Integer literatureId) {
+        ClaimMessage claimMessage = new ClaimMessage();
+        claimMessage.setPatentNo(patentNo);
+        claimMessage.setTaskId(taskId);
+        claimMessage.setProjectId(projectId);
+        claimMessage.setLiteratureId(literatureId);
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        claimMessage.setCreateId(personnelVO.getId());
+        claimMessage.insert();
+        return claimMessage;
+    }
+
+
+
+}

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

@@ -34,7 +34,11 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
+import java.io.IOException;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Date;
@@ -70,6 +74,8 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
     private EsService esService;
     @Autowired
     private MessageService messageService;
+    @Autowired
+    private CompareLiteratureMapper compareLiteratureMapper;
 
     //添加专利对比文献
     public Integer addPatentCompareLiterature(Patent patent, Integer projectId, String createId) {
@@ -520,10 +526,21 @@ public class CompareLiteratureService extends ServiceImpl<CompareLiteratureMappe
         return null;
     }
 
-    public Boolean deleteCompareLiterature(List<Integer> ids) {
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public Boolean deleteCompareLiterature(List<Integer> ids) throws IOException {
         if (ids == null || ids.size() <= 0) {
             throw new XiaoShiException("请选择对比文献");
         }
+        List<CompareLiterature> literatures = compareLiteratureMapper.selectBatchIds(ids);
+        if (!CollectionUtils.isEmpty(literatures)) {
+            List<CompareLiterature> literatureList = literatures.stream().filter(i -> i.getType().equals(0)).collect(Collectors.toList());
+            for (CompareLiterature literature : literatureList) {
+                Integer number = esService.getPatent(literature.getLiteratureNo(), literature.getProjectId());
+                if (number < 1) {
+                    throw new XiaoShiException("删除失败");
+                }
+            }
+        }
         return this.removeBatchByIds(ids);
 
     }

+ 21 - 9
src/main/java/cn/cslg/pas/service/business/FTOCompareRecordService.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.ClaimCompareDescriptionDTO;
 import cn.cslg.pas.common.dto.ComparedPatentDTO;
 import cn.cslg.pas.common.dto.ComparedPatentVO;
 import cn.cslg.pas.common.dto.business.GetFeatureSplitDTO;
@@ -21,6 +22,8 @@ import cn.cslg.pas.mapper.FTOCompareRecordMapper;
 import cn.cslg.pas.service.business.es.EsFamilyService;
 import cn.cslg.pas.service.business.es.EsPatentService;
 import cn.cslg.pas.service.business.es.EsService;
+import cn.cslg.pas.service.business.ftoReport.AssoClaimCompareDescriptionService;
+import cn.cslg.pas.service.business.ftoReport.AssoLiteratureCompareDescriptionService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
@@ -76,6 +79,11 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     @Autowired
     private PatentSplitMessageService patentSplitMessageService;
 
+    @Autowired
+    private AssoLiteratureCompareDescriptionService assoLiteratureCompareDescriptionService;
+    @Autowired
+    private AssoClaimCompareDescriptionService assoClaimCompareDescriptionService;
+
     /**
      * 查询FTO对比结果VO
      *
@@ -244,6 +252,9 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
     @Transactional(rollbackFor = Exception.class)
     public List<Integer> addFTOCompareRecord(TortCompareRecordDTO tortCompareRecordDTO) {
         Integer taskId = tortCompareRecordDTO.getTaskId();
+        Integer projectId = tortCompareRecordDTO.getProjectId();
+        Integer literatureId = tortCompareRecordDTO.getLiteratureId();
+        List<ClaimCompareDescriptionDTO> claimCompareDescriptionDTOS = tortCompareRecordDTO.getClaimCompareDescriptionDTOS();
         if (taskId == null) {
             throw new XiaoShiException("taskId不能为空");
         }
@@ -276,6 +287,8 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
             // 更新剩余特征和对比结果
             ids = this.updateFeatures(patentNo, taskId, featureIds, tortDTOS);
         }
+        assoClaimCompareDescriptionService.addOrUpdate(claimCompareDescriptionDTOS, taskId, projectId, literatureId, patentNo);
+        assoLiteratureCompareDescriptionService.addOrUpdate(tortCompareRecordDTO);
         return ids;
     }
 
@@ -877,18 +890,17 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
         Long current = comparedPatentDTO.getCurrent();
         Long size = comparedPatentDTO.getSize();
         //根据projectId 查询出对比过的专利号
-        List<String> patentNos =new ArrayList<>();
+        List<String> patentNos = new ArrayList<>();
         //根据projectId 查询报告
-        LambdaQueryWrapper<ReportProject> queryWrapper =new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReportProject::getProjectId,projectId);
-        ReportProject reportProject =reportProjectService.getOne(queryWrapper,false);
-        if(reportProject==null){
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
+        if (reportProject == null) {
             throw new XiaoShiException("报告不存在");
         }
-        if(reportProject.getReportType().equals(4)){
+        if (reportProject.getReportType().equals(4)) {
             patentNos.add(reportProject.getSignPatentNo());
-        }
-        else {
+        } else {
             patentNos = this.getBaseMapper().getComparedPatents(projectId, compareResult);
         }
         List<ComparedPatentVO> comparedPatentVOS = new ArrayList<>();
@@ -903,7 +915,7 @@ public class FTOCompareRecordService extends ServiceImpl<FTOCompareRecordMapper,
                 patents.forEach(item -> {
                     ComparedPatentVO comparedPatentVO = new ComparedPatentVO();
                     BeanUtils.copyProperties(item, comparedPatentVO);
-                    if(comparedPatentVO.getGrantNo()==null){
+                    if (comparedPatentVO.getGrantNo() == null) {
                         comparedPatentVO.setGrantNo(item.getPublicNo());
                         comparedPatentVO.setGrantDate(item.getPublicDate());
                     }

+ 44 - 0
src/main/java/cn/cslg/pas/service/business/FeatureService.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.TreeBuild;
+import cn.cslg.pas.common.dto.QueryPatentClaimDTO;
 import cn.cslg.pas.common.dto.QuerySplitDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
 import cn.cslg.pas.common.dto.invalidDTO.QueryClaimSplitHistoryDTO;
@@ -16,8 +17,10 @@ import cn.cslg.pas.common.vo.invalidVO.QueryClaimSplitHistoryVO;
 import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.FeatureMapper;
+import cn.cslg.pas.service.ClaimMessageService;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.business.invalidReport.AssoGroupFeatureService;
+import cn.cslg.pas.service.business.invalidReport.PatentClaimService;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -58,6 +61,10 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
 
     @Autowired
     private PatentStarApiService patentStarApiService;
+    @Autowired
+    private ClaimMessageService claimMessageService;
+    @Autowired
+    private PatentClaimService patentClaimService;
 
     @Transactional(rollbackFor = Exception.class)
     public List<PatentRightVo> splitPatentFeature(SplitVO splitVO) throws IOException {
@@ -599,4 +606,41 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
         }
         return addIds;
     }
+
+
+    public List<RePatentClaim> getPatentRight(QueryPatentClaimDTO queryPatentClaimDTO) {
+        try {
+            List<RePatentClaim> patentRights = new ArrayList<>();
+            Integer taskId = queryPatentClaimDTO.getTaskId();
+            Integer projectId = queryPatentClaimDTO.getProjectId();
+            String patentNo = queryPatentClaimDTO.getPatentNo();
+            Integer literatureId = queryPatentClaimDTO.getLiteratureId();
+            ClaimMessage claimMessage = claimMessageService.getClaimMessage(taskId, projectId, patentNo, literatureId);
+            if (claimMessage == null) {
+                patentRights = this.getRightListByNo(patentNo);
+            } else {
+                Integer claimMessageId = claimMessage.getId();
+                LambdaQueryWrapper<PatentClaim> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(PatentClaim::getClaimMessageId, claimMessageId);
+                List<PatentClaim> patentClaimList =patentClaimService.list(queryWrapper);
+                for (PatentClaim item: patentClaimList){
+                    RePatentClaim rePatentClaim =this.domainToRe(item);
+                    patentRights.add(rePatentClaim);
+                }
+            }
+            return patentRights;
+        } catch (Exception e) {
+            throw new XiaoShiException("系统错误");
+        }
+    }
+
+     private  RePatentClaim  domainToRe(PatentClaim patentClaim){
+         RePatentClaim rePatentClaim =new RePatentClaim();
+         rePatentClaim.setContent(patentClaim.getContent());
+         rePatentClaim.setId(patentClaim.getId());
+         rePatentClaim.setSort(patentClaim.getSysOrder());
+         rePatentClaim.setParentSort(patentClaim.getParentOrder());
+         rePatentClaim.setType(patentClaim.getClaimType());
+         return  rePatentClaim;
+     }
 }

+ 46 - 18
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -105,7 +105,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
 
         List<String> sqls = formatQueryService.reSqls(queryRequest, "patentProject");
-        sqls =this.loadSearchSql(sqls);
+        sqls = this.loadSearchSql(sqls);
         //根据sql查询专题库信息
         List<PatentProjectVO> patentProjectVOS = patentProjectMapper.getPatentProject(sqls.get(0), sqls.get(1), sqls.get(2));
         Long total = patentProjectMapper.getPatentProjectCount(sqls.get(0));
@@ -194,7 +194,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         StringRequest stringRequest = new StringRequest();
         BeanUtils.copyProperties(groupRequest, stringRequest);
         List<String> sqls = formatQueryService.reSqls(stringRequest, tableName);
-        sqls=this.loadSearchSql(sqls);
+        sqls = this.loadSearchSql(sqls);
         //格式化 分组
         GroupConfig groupConfig = null;
         if (groupRequest.getGroupBy() != null) {
@@ -207,13 +207,13 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         }
 
         tableName = "patent_project as pp left join project as p on pp.project_id = p.id ";
-      tableName+=  "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
+        tableName += "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 " +
                 "left join (select * from asso_project_event where matter_id is not null ) as aspm on p.id = aspm.project_id";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        String countFiled="distinct p.id";
-        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(),countFiled);
+        String countFiled = "distinct p.id";
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(), countFiled);
 
         //装载数据
         GroupVO groupVO = new GroupVO();
@@ -322,7 +322,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         if (events != null && events.size() != 0) {
             //遍历传入的事件集合
             if (events != null && events.size() != 0) {
-                assoProjectEventService.addAssoEventProject(events,project.getId(),0);
+                assoProjectEventService.addAssoEventProject(events, project.getId(), 0);
             }
         }
 
@@ -374,7 +374,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             //遍历传入的树
             for (ProjectTreesDTO projectTreesDTO : trees) {
                 List<Integer> valueIds = projectTreesDTO.getValueIds();
-                if(valueIds==null||valueIds.size()==0){
+                if (valueIds == null || valueIds.size() == 0) {
                     valueIds = Arrays.asList(0);
                 }
                 //遍历值id集合
@@ -497,7 +497,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         List<ProjectEventDTO> events = updatePatentProjectDTO.getEvents();
         if (events != null && events.size() != 0) {
             if (events != null && events.size() != 0) {
-                assoProjectEventService.addAssoEventProject(events,project.getId(),0);
+                assoProjectEventService.addAssoEventProject(events, project.getId(), 0);
             }
         }
 
@@ -553,7 +553,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             //遍历传入的树
             for (ProjectTreesDTO projectTreesDTO : trees) {
                 List<Integer> valueIds = projectTreesDTO.getValueIds();
-                if(valueIds==null||valueIds.size()==0){
+                if (valueIds == null || valueIds.size() == 0) {
                     valueIds = Arrays.asList(0);
                 }
                 //遍历值id集合
@@ -879,20 +879,19 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         }
 
     }
+
     //装载查询语句
-    private List<String> loadSearchSql(List<String> sqls){
-        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
-        String id =personnelVO.getId();
-        Integer tenantId= personnelVO.getTenantId();
+    private List<String> loadSearchSql(List<String> sqls) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        String id = personnelVO.getId();
+        Integer tenantId = personnelVO.getTenantId();
         Integer roleType = personnelVO.getRoleType();
         String rootSql = "";
         if (roleType == null || roleType.equals(0)) {
-           rootSql ="(p.create_id ="+id+" or p.head_id="+id+" or p.id in (select project_id from asso_project_person where person_id ="+id+"))";
+            rootSql = "(p.create_id =" + id + " or p.head_id=" + id + " or p.id in (select project_id from asso_project_person where person_id =" + id + "))";
 
-        }
-        else if(roleType.equals(2))
-        {
-            rootSql="(p.tenant_id="+tenantId+" or p.id in (select project_id from asso_project_person where person_id ="+id+"))";
+        } else if (roleType.equals(2)) {
+            rootSql = "(p.tenant_id=" + tenantId + " or p.id in (select project_id from asso_project_person where person_id =" + id + "))";
         }
 
         if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
@@ -905,4 +904,33 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
 
     }
 
+    private Boolean IfNameExist(String name) {
+        Integer tenantId = 1;
+        LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Project::getTenantId, tenantId)
+                .eq(Project::getName, name);
+        Project project = projectService.getOne(queryWrapper, false);
+        if (project != null) {
+            return false;
+        }
+
+        return true;
+    }
+
+    public PatentProjectVO getPatentProjectVOById(Integer projectId) {
+        List<String> sqls = new ArrayList<>();
+        String sql1 = "p.id =" + projectId;
+        sqls.add(sql1);
+        sqls.add(null);
+        sqls.add(null);
+        List<PatentProjectVO> patentProjectVOS = patentProjectMapper.getPatentProject(sqls.get(0), sqls.get(1), sqls.get(2));
+       try {
+           this.loadPatentProject(patentProjectVOS);
+       }
+    catch (Exception e){}
+       if(patentProjectVOS!=null&&patentProjectVOS.size()>0){
+           return  patentProjectVOS.get(0);
+       }
+       return null;
+    }
 }

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

@@ -72,7 +72,9 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
         assoProjectPersonList.forEach(item->{
             Integer projectId =item.getProjectId();
             List<String> roles =map.get(projectId);
-            roles.add("2");
+            if(!roles.contains(item.getRole()+"")) {
+                roles.add(item.getRole()+"");
+            }
         });
 
 return map;

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

@@ -9,6 +9,7 @@ import cn.cslg.pas.common.dto.PatentStarListDTO;
 import cn.cslg.pas.common.dto.business.ContentDetailDTO;
 import cn.cslg.pas.common.dto.business.EsPatentFamilyDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
+import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
 import cn.cslg.pas.common.dto.es.EsCustomFieldValueDTO;
 import cn.cslg.pas.common.model.request.MapRequest;
 import cn.cslg.pas.common.model.request.OrderDTO;
@@ -19,6 +20,7 @@ import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
 import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
 import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
 import cn.cslg.pas.common.vo.*;
+import cn.cslg.pas.common.vo.es.EsCustomFieldBatchVO;
 import cn.cslg.pas.common.vo.es.PatentFamilyMessageWithId;
 import cn.cslg.pas.domain.es.*;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -43,6 +45,8 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.io.IOException;
@@ -66,6 +70,8 @@ public class EsService {
     @Lazy
     @Autowired
     private EsCountService esCountService;
+    @Autowired
+    private EsCustomFieldService esCustomFieldService;
 
 
     /**
@@ -1338,6 +1344,69 @@ public class EsService {
         return list;
     }
 
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public Boolean deletePatents(EsCustomFieldBatchVO vo) throws Exception {
+        Integer projectId = vo.getProjectId();
+        Integer startNum = vo.getStartNumber();
+        Integer endNum = vo.getEndNumber();
+        List<String> isAdd = vo.getIsAdd();
+        List<String> isDel = vo.getIsDelete();
+        if (!CollectionUtils.isEmpty(isAdd) && startNum <= 1 && endNum < 1) {
+            isAdd.removeAll(isDel);
+            for (String patentNo : isAdd) {
+                Integer number = this.getPatent(patentNo, projectId);
+                if (number < 1) {
+                    throw new XiaoShiException("删除失败");
+                } else {
+                    return false;
+                }
+            }
+        } else if (startNum >= 1 && endNum > 0) {
+            List<String> patentNos = esCustomFieldService.getPatentNos(vo);
+            for (String patentNo : patentNos) {
+                Integer number = this.getPatent(patentNo, projectId);
+                if (number < 1) {
+                    throw new XiaoShiException("删除失败");
+                } else {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    public Integer getPatent(String patentNo, Integer projectId) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query query = QueryBuilders.term(i -> i.field("project_id").value(projectId));
+        Query q = QueryBuilders.term(i -> i.field("patent_no.keyword").value(patentNo));
+        Query query1 = QueryBuilders.hasParent(i -> i.parentType("patent").query(q));
+        Query bool = QueryBuilders.bool(i -> i.must(query, query1));
+        builder.query(bool);
+        //解除最大条数限制
+        builder.trackTotalHits(i -> i.enabled(true));
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        List<String> list = new ArrayList<>();
+        for (Hit<Patent> hit : hits) {
+            String id = hit.id();
+            list.add(id);
+        }
+        return this.deleteByIds(list);
+    }
+
+    public Integer deleteByIds(List<String> ids) {
+        Query query = QueryBuilders.ids(n -> n.values(ids));
+        DeleteByQueryRequest request = DeleteByQueryRequest.of(i -> i.index("patent").query(query));
+        try {
+            client.deleteByQuery(request);
+            return 1;
+        } catch (IOException e) {
+            throw new XiaoShiException("删除失败");
+        }
+    }
+
 }
 
 

+ 40 - 0
src/main/java/cn/cslg/pas/service/business/ftoReport/AssoClaimCompareDescriptionService.java

@@ -0,0 +1,40 @@
+package cn.cslg.pas.service.business.ftoReport;
+
+import cn.cslg.pas.common.dto.ClaimCompareDescriptionDTO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.domain.business.AssoClaimCompareDescription;
+import cn.cslg.pas.mapper.ftoReport.AssoClaimCompareDescriptionMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class AssoClaimCompareDescriptionService extends ServiceImpl<AssoClaimCompareDescriptionMapper, AssoClaimCompareDescription> {
+    @Autowired
+    private CacheUtils cacheUtils;
+    @Autowired
+    private LoginUtils loginUtils;
+
+    public void addOrUpdate(List<ClaimCompareDescriptionDTO> claimCompareDescriptionDTOS, Integer taskId, Integer projectId, Integer literatureId, String literatureNo) {
+
+        List<AssoClaimCompareDescription> assoClaimCompareDescriptions = new ArrayList<>();
+        for (ClaimCompareDescriptionDTO claimCompareDescriptionDTO : claimCompareDescriptionDTOS) {
+            if (claimCompareDescriptionDTO.getIfChange() != null && claimCompareDescriptionDTO.getIfChange()) {
+                AssoClaimCompareDescription assoClaimCompareDescription = new AssoClaimCompareDescription();
+                assoClaimCompareDescription.setCompareDescription(claimCompareDescriptionDTO.getCompareDescription());
+                assoClaimCompareDescription.setId(claimCompareDescriptionDTO.getId());
+                assoClaimCompareDescription.setLiteratureId(literatureId);
+                assoClaimCompareDescription.setLiteratureNo(literatureNo);
+                assoClaimCompareDescription.setTaskId(taskId);
+                assoClaimCompareDescriptions.add(assoClaimCompareDescription);
+            }
+        }
+        if (assoClaimCompareDescriptions.size() > 0) {
+            this.saveOrUpdateBatch(assoClaimCompareDescriptions);
+        }
+    }
+}

+ 60 - 0
src/main/java/cn/cslg/pas/service/business/ftoReport/AssoLiteratureCompareDescriptionService.java

@@ -0,0 +1,60 @@
+package cn.cslg.pas.service.business.ftoReport;
+
+import cn.cslg.pas.common.dto.business.TortCompareRecordDTO;
+import cn.cslg.pas.domain.business.AssoLiteratureCompareDescription;
+import cn.cslg.pas.mapper.AssoLiteratureCompareDescriptionMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AssoLiteratureCompareDescriptionService extends ServiceImpl<AssoLiteratureCompareDescriptionMapper, AssoLiteratureCompareDescription> {
+
+    public Integer addOrUpdate(TortCompareRecordDTO tortCompareRecordDTO) {
+        Integer projectId = tortCompareRecordDTO.getProjectId();
+        Integer taskId = tortCompareRecordDTO.getTaskId();
+        String patentNo = tortCompareRecordDTO.getPatentNo();
+        Integer literatureId = tortCompareRecordDTO.getLiteratureId();
+        String literatureCompareDescription = tortCompareRecordDTO.getLiteratureCompareDescription();
+        AssoLiteratureCompareDescription assoLiteratureCompareDescription = this.getAssoLiteratureCompareDescription(projectId, taskId, patentNo, literatureId);
+
+        if (assoLiteratureCompareDescription == null) {
+            assoLiteratureCompareDescription = new AssoLiteratureCompareDescription();
+            assoLiteratureCompareDescription.setProjectId(projectId);
+            assoLiteratureCompareDescription.setTaskId(taskId);
+            assoLiteratureCompareDescription.setLiteratureId(literatureId);
+            assoLiteratureCompareDescription.setLiteratureNo(patentNo);
+            assoLiteratureCompareDescription.setCompareDescription(literatureCompareDescription);
+            assoLiteratureCompareDescription.insert();
+        }
+
+        else {
+            assoLiteratureCompareDescription.setCompareDescription(literatureCompareDescription);
+            assoLiteratureCompareDescription.updateById();
+        }
+
+        return assoLiteratureCompareDescription.getLiteratureId();
+    }
+
+    private AssoLiteratureCompareDescription getAssoLiteratureCompareDescription(Integer projectId, Integer taskId, String patentNo, Integer literatureId) {
+        AssoLiteratureCompareDescription assoLiteratureCompareDescription = null;
+        if ((projectId == null && taskId == null) || (patentNo == null && literatureId == null)) {
+            return assoLiteratureCompareDescription;
+        }
+        LambdaQueryWrapper<AssoLiteratureCompareDescription> queryWrapper = new LambdaQueryWrapper<>();
+        if (projectId != null) {
+            queryWrapper.eq(AssoLiteratureCompareDescription::getProjectId, projectId);
+        }
+        if (taskId != null) {
+            queryWrapper.eq(AssoLiteratureCompareDescription::getTaskId, taskId);
+        }
+        if (patentNo != null) {
+            queryWrapper.eq(AssoLiteratureCompareDescription::getLiteratureNo, patentNo);
+        }
+        if (literatureId != null) {
+            queryWrapper.eq(AssoLiteratureCompareDescription::getLiteratureId, literatureId);
+        }
+        assoLiteratureCompareDescription = this.getOne(queryWrapper, false);
+        return assoLiteratureCompareDescription;
+    }
+}

+ 8 - 0
src/main/java/cn/cslg/pas/service/business/ftoReport/ClaimManageService.java

@@ -0,0 +1,8 @@
+package cn.cslg.pas.service.business.ftoReport;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class ClaimManageService {
+
+}

+ 38 - 2
src/main/java/cn/cslg/pas/service/business/invalidReport/PatentClaimService.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.service.business.invalidReport;
 
 
 import cn.cslg.pas.common.dto.DomainFieldDTO;
+import cn.cslg.pas.common.dto.PatentClaimDTO;
 import cn.cslg.pas.common.dto.invalidDTO.*;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.utils.CacheUtils;
@@ -55,7 +56,9 @@ public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentCla
         if (patentClaimVOS.size() != 0) {
             return patentClaimVOS;
         }
+
         patentClaimVOS = new ArrayList<>();
+
         //根据projectId 获得标的专利号
         LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ReportProject::getProjectId, projectId);
@@ -111,7 +114,7 @@ public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentCla
         //根据报告id 查询是否有拆分权要
         LambdaQueryWrapper<PatentClaim> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(PatentClaim::getProjectId, projectId).
-               eq(PatentClaim::getContentType, 0).orderByAsc(PatentClaim::getSysOrder);
+                eq(PatentClaim::getContentType, 0).orderByAsc(PatentClaim::getSysOrder);
         List<PatentClaim> patentClaims = this.list(queryWrapper);
         List<PatentClaimVO> patentClaimVOS = new ArrayList<>();
         patentClaims.forEach(item -> {
@@ -134,7 +137,7 @@ public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentCla
             LambdaQueryWrapper<PatentClaimHistory> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(PatentClaimHistory::getClaimId, item.getId());
             List<PatentClaimHistory> histories = patentClaimHistoryService.list(queryWrapper);
-           item.setPatentClaimHistoryList(histories);
+            item.setPatentClaimHistoryList(histories);
         });
         return patentClaimVOS;
 
@@ -249,4 +252,37 @@ public class PatentClaimService extends ServiceImpl<PatentClaimMapper, PatentCla
         }
         return true;
     }
+
+
+    public void addOrUpdate(List<PatentClaimDTO> patentClaims, Integer claimMessageId) {
+        List<PatentClaim> patentClaimList = new ArrayList<>();
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        for (PatentClaimDTO patentClaimDTO : patentClaims) {
+            if (patentClaimDTO.getIfUpdate() != null && patentClaimDTO.getIfUpdate().equals(0)) {
+                continue;
+            }
+            else {
+                PatentClaim patentClaim = this.dtoToDomain(patentClaimDTO);
+                patentClaim.setCreateId(personnelVO.getId());
+                patentClaim.setClaimMessageId(claimMessageId);
+                patentClaimList.add(patentClaim);
+            }
+        }
+        if (patentClaimList.size() != 0) {
+            this.saveOrUpdateBatch(patentClaimList);
+        }
+    }
+
+
+    private PatentClaim dtoToDomain(PatentClaimDTO patentClaimDTO) {
+        PatentClaim patentClaim = new PatentClaim();
+        patentClaim.setContentType(0);
+        patentClaim.setClaimType(patentClaimDTO.getType());
+        patentClaim.setContent(patentClaimDTO.getContent());
+        patentClaim.setSysOrder(patentClaimDTO.getSort());
+        patentClaim.setParentOrder(patentClaimDTO.getParentSort());
+        patentClaim.setId(patentClaimDTO.getId());
+        return patentClaim;
+    }
+
 }

+ 118 - 0
src/main/java/cn/cslg/pas/service/common/OPSService.java

@@ -0,0 +1,118 @@
+package cn.cslg.pas.service.common;
+
+import cn.cslg.pas.common.dto.OPS.*;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+@Service
+public class OPSService {
+    /**
+     * 远程调用获取一批专利著录的接口
+     *
+     * @return
+     */
+    @Value("${OPSUrl}")
+    private String OPSUrl;
+    public String getSearchBiblio(GetSearchBiblioParamsDTO getSearchBiblioParamsDTO) throws IOException {
+        //String param = new Gson().toJson(getSearchBiblioParamsDTO);
+        //RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(OPSUrl + "/api/OPSQuery/SearchBiblio?query=" + getSearchBiblioParamsDTO.getQuery() + "&start=" + getSearchBiblioParamsDTO.getStart() + "&end=" + getSearchBiblioParamsDTO.getEnd())
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 远程调用获取权要信息的接口
+     *
+     * @return
+     */
+    public String getClaimsInfo(GetClaimsInfoParamsDTO getClaimsInfoParamsDTO) throws IOException {
+        //String param = new Gson().toJson(getClaimsInfoParamsDTO);
+        //RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(OPSUrl + "/api/OPSQuery/GetClaimsInfo?cc=" + getClaimsInfoParamsDTO.getCc() + "&number=" + getClaimsInfoParamsDTO.getNumber() + "&kind=" + getClaimsInfoParamsDTO.getKind())
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 远程调用获取说明书的接口
+     *
+     * @return
+     */
+    public String getDescriptionInfo(GetDescriptionInfoParamsDTO getDescriptionInfoParamsDTO) throws IOException {
+        //String param = new Gson().toJson(getDescriptionInfoParamsDTO);
+        //RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(OPSUrl + "/api/OPSQuery/GetDescriptionInfo?cc=" + getDescriptionInfoParamsDTO.getCc() + "&number=" + getDescriptionInfoParamsDTO.getNumber() + "&kind=" + getDescriptionInfoParamsDTO.getKind())
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 远程调用获取Image信息的接口
+     *
+     * @return
+     */
+    public String getImagesInfo(PubNo pubNo) throws IOException {
+        String pn = pubNo.getCountry() + pubNo.getNumber() + "." + pubNo.getKind();
+        //String param = new Gson().toJson(pn);
+        //RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(OPSUrl + "/api/OPSQuery/GetImagesInfo?Pn=" + pn)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    /**
+     * 远程调用获取附件文件流的接口
+     *
+     * @return
+     */
+    public byte[] getPatentFile(GetFuTuParamsDTO getFuTuParamsDTO) throws IOException {
+        //String param = new Gson().toJson(getFuTuParamsDTO);
+        //RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(OPSUrl + "/api/OPSQuery/GetPatentFile?link=" + getFuTuParamsDTO .getLink() + "&page=" + getFuTuParamsDTO.getPage() + "&type=" + getFuTuParamsDTO.getType())
+                .get()
+                .build();
+        byte[] buffer = okHttpClient.newCall(request).execute().body().bytes();
+        return buffer;
+    }
+
+}

+ 5 - 6
src/main/java/cn/cslg/pas/service/exportProject/ExportProjectService.java

@@ -11,6 +11,7 @@ import cn.cslg.pas.common.vo.PatentData;
 import cn.cslg.pas.common.vo.PatentWithIdVO;
 import cn.cslg.pas.common.vo.UploadParamsVO;
 import cn.cslg.pas.common.vo.UploadSettingVO;
+import cn.cslg.pas.common.vo.business.PatentProjectVO;
 import cn.cslg.pas.common.vo.exportProject.CustomFiledExportVO;
 import cn.cslg.pas.common.vo.exportProject.CustomFiledRecord;
 import cn.cslg.pas.domain.business.*;
@@ -59,7 +60,8 @@ public class ExportProjectService {
     private TreeNodeService treeNodeService;
     @Autowired
     private EsCustomFieldService esCustomFieldService;
-
+     @Autowired
+     private PatentProjectService patentProjectService;
     public void exportProject(Integer projectId) {
         String directoryName = IdUtil.simpleUUID();
         String url = FileUtils.getStaticPath(directoryName);
@@ -78,10 +80,10 @@ public class ExportProjectService {
     public void writeProjectToFile(Integer projectId, String url) {
         //根据projectId查询对象
         try {
-            Project project = projectService.getById(projectId);
+            PatentProjectVO patentProjectVO=patentProjectService.getPatentProjectVOById(projectId);
             String projectUrl = url + "\\project.json";
             ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(projectUrl));
-            oos.writeObject(project);
+            oos.writeObject(patentProjectVO);
 
         } catch (Exception e) {
             e.printStackTrace();
@@ -143,10 +145,7 @@ public class ExportProjectService {
             }
         } catch (Exception e) {
             e.printStackTrace();
-
         }
-
-
     }
 
 

+ 6 - 2
src/main/java/cn/cslg/pas/service/exportProject/ImportProjectService.java

@@ -1,8 +1,11 @@
 package cn.cslg.pas.service.exportProject;
 
+import cn.cslg.pas.common.dto.business.PatentProjectDTO;
 import cn.cslg.pas.common.utils.FileUtils;
+import cn.cslg.pas.common.vo.business.PatentProjectVO;
 import cn.cslg.pas.domain.business.Project;
 import cn.hutool.core.util.ZipUtil;
+import com.alibaba.fastjson2.util.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
@@ -20,8 +23,9 @@ public class ImportProjectService {
             ZipFile zipFile = new ZipFile(file);
             InputStream inputStream = ZipUtil.get(zipFile,"project.json");
             ObjectInputStream ois = new ObjectInputStream(inputStream);
-            Project project = (Project) ois.readObject();
-            System.out.println(project);
+            PatentProjectVO patentProjectVO = (PatentProjectVO) ois.readObject();
+            PatentProjectDTO patentProjectDTO =new PatentProjectDTO();
+
         } catch (Exception e) {
         }
 

+ 6 - 7
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromWebThread.java

@@ -45,7 +45,6 @@ public class GetPatentPictureFromWebThread extends Thread {
 
     @Override
     public void run() {
-
         while ((!ifProductAll || uploadPatentWebDTOs.size() > 0) && importTaskAMVO.getState().equals(1)) {
 
             try {
@@ -53,9 +52,9 @@ public class GetPatentPictureFromWebThread extends Thread {
                     taskLock.lock();
                     taskCondition.await();
                 }
-            }catch (Exception e){
+            } catch (Exception e) {
             }
-            UploadPatentWebDTO  uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
+            UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
             try {
 
                 PatentStarApiService patentStarApiService = applicationContext.getBean(PatentStarApiService.class);
@@ -67,9 +66,9 @@ public class GetPatentPictureFromWebThread extends Thread {
                     String guid = FormatUtil.getPictureFormat(uploadPatentWebDTO.getStarPatentVO().getApplicationNo());
                     fileManagerService.uploadFileWithGuid(file, guid);
                 }
-                taskThread.updateProcess(false,2,"");
+                taskThread.updateProcess(false, 2, "");
             } catch (Exception e) {
-                taskThread.updateProcess(true,2,"");
+                taskThread.updateProcess(true, 2, "");
                 e.printStackTrace();
             }
 
@@ -86,8 +85,8 @@ public class GetPatentPictureFromWebThread extends Thread {
     }
 
     public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
-        UploadPatentWebDTO uploadPatentWebDTO1=new UploadPatentWebDTO();
-        BeanUtils.copyProperties(uploadPatentWebDTO,uploadPatentWebDTO1);
+        UploadPatentWebDTO uploadPatentWebDTO1 = new UploadPatentWebDTO();
+        BeanUtils.copyProperties(uploadPatentWebDTO, uploadPatentWebDTO1);
         uploadPatentWebDTOs.add(uploadPatentWebDTO1);
         if (taskLock.tryLock()) {
             taskCondition.signalAll();

+ 0 - 53
src/main/java/cn/cslg/pas/service/importPatent/GetRightAndFullTextFromWebThread.java

@@ -140,59 +140,6 @@ public class GetRightAndFullTextFromWebThread extends Thread {
 
     }
 
-    //装载说明书文档
-    private void loadFullText(UploadPatentWebDTO uploadPatentWebDTO, String cnFullXmlStr) {
-        Patent patent = uploadPatentWebDTO.getPatent();
-        try {
-            //若没有取到全文文本,即取不到说明书文本,则将当前申请号或专利号和备注信息记录到问题记录表
-            if (cnFullXmlStr.equals("")) {
-                return;
-            }
-
-            SAXReader reader = new SAXReader();
-            reader.setEntityResolver(new IgnoreDTDEntityResolver());
-            Reader stringReader = new StringReader(cnFullXmlStr);
-            Document document = reader.read(stringReader);
-            XPath xpath = document.createXPath("//description//p");
-            List<Element> elements = (List<Element>) xpath.selectNodes(document);
-            if (elements.size() == 0) {
-                xpath = document.createXPath("//business:Description//base:Paragraphs");
-                elements = (List<Element>) xpath.selectNodes(document);
-            }
-            List<String> fullTexts = new ArrayList<>();
-            Integer count = 1;
-            for (Element item : elements) {
-                String fullText = item.getText().replaceAll("<br/>", "");
-                if (!fullText.trim().equals("技术领域")
-                        && !fullText.trim().equals("发明内容")
-                        && !fullText.trim().equals("附图说明")
-                        && !fullText.trim().equals("具体实施方式")
-                        && !fullText.trim().equals("背景技术")
-                        && !fullText.trim().equals("实用新型内容")) {
-                    String formattedNum = String.format("%04d", count);
-                    fullText = "[" + formattedNum + "]" + fullText;
-                    count++;
-                }
-                fullText = fullText.replaceAll("\r\n|\r|\n| ", "");
-                fullTexts.add(fullText);
-            }
-            String fullText = "";
-            if (fullTexts.size() != 0) {
-                fullText = cn.cslg.pas.common.utils.StringUtils.join(fullTexts, "\r");
-            }
-            Text text = new Text();
-            text.setIfOrigin(true);
-            text.setTextContent(fullText);
-            text.setLanguage(patent.getAppCountry());
-            patent.setPublicFullText(Arrays.asList(text));
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-
-    }
-
     public void setIfProductAll(Boolean ifProductAll) {
         this.ifProductAll = ifProductAll;
         if (taskLock.tryLock()) {

+ 96 - 2
src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java

@@ -1,14 +1,23 @@
 package cn.cslg.pas.service.importPatent;
 
 import cn.cslg.pas.common.core.IgnoreDTDEntityResolver;
+import cn.cslg.pas.common.dto.OPS.GetFuTuParamsDTO;
+import cn.cslg.pas.common.dto.OPS.PubNo;
 import cn.cslg.pas.common.dto.PatentStarListDTO;
 import cn.cslg.pas.common.dto.UploadPatentWebDTO;
 import cn.cslg.pas.common.dto.es.RefreshPatentDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.esDataForm.AddressSplitter;
 import cn.cslg.pas.common.utils.esDataForm.PatentClassifySplitter;
 import cn.cslg.pas.common.vo.*;
+import cn.cslg.pas.common.dto.OPS.GetClaimsInfoParamsDTO;
+import cn.cslg.pas.common.dto.OPS.GetDescriptionInfoParamsDTO;
+import cn.cslg.pas.common.vo.OPS.GetImagesInfoVO;
+import cn.cslg.pas.common.vo.OPS.ImagesInfoVO;
+import cn.cslg.pas.common.vo.OPS.PatentNoDetailVO;
 import cn.cslg.pas.domain.business.PatentClaim;
 import cn.cslg.pas.domain.business.ReportProject;
 import cn.cslg.pas.domain.es.*;
@@ -17,21 +26,23 @@ import cn.cslg.pas.service.business.ReportProjectService;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.business.invalidReport.PatentClaimService;
 import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.common.OPSService;
 import cn.cslg.pas.service.common.PatentStarApiService;
-import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
-import lombok.experimental.Accessors;
 import org.dom4j.Document;
 import org.dom4j.Element;
 import org.dom4j.XPath;
 import org.dom4j.io.SAXReader;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
 import java.io.File;
+import java.io.IOException;
 import java.io.Reader;
 import java.io.StringReader;
 import java.util.*;
@@ -58,6 +69,10 @@ public class ImportSinglePatentService {
     private CacheUtils cacheUtils;
     @Autowired
     private LoginUtils loginUtils;
+    @Autowired
+    private OPSService opsService;
+    @Autowired
+    private PatentNoUtil patentNoUtil;
 
     public StarPatentVO getPatentFromWeb(String patentNo) {
         StarPatentVO starPatentVO = null;
@@ -860,4 +875,83 @@ public class ImportSinglePatentService {
         return ts;
 
     }
+
+    /**
+     * 从OPS装载权利要求
+     * @param uploadPatentWebDTO
+     * @throws Exception
+     */
+    public void loadClaimFromOPS(UploadPatentWebDTO uploadPatentWebDTO) throws Exception {
+        Patent patent = uploadPatentWebDTO.getPatent();
+        //从ops获取权利要求
+        GetClaimsInfoParamsDTO getClaimsInfoParamsDTO = new GetClaimsInfoParamsDTO();
+        PatentNoDetailVO patentNoDetailVO = patentNoUtil.getPatentNoDetail(patent.getPatentNo());
+        BeanUtils.copyProperties(patentNoDetailVO, getClaimsInfoParamsDTO);
+        String res = opsService.getClaimsInfo(getClaimsInfoParamsDTO);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        Text text = new Text();
+        text.setLanguage(getClaimsInfoParamsDTO.getCc());
+        text.setTextContent(jsonObject.getString("data"));
+        text.setIfOrigin(true);
+        patent.setClaim(Arrays.asList(text));
+    }
+
+    /**
+     * 从OPS装载说明书
+     * @throws Exception
+     */
+    private void loadFullTextFromOPS(UploadPatentWebDTO uploadPatentWebDTO) throws Exception{
+        Patent patent = uploadPatentWebDTO.getPatent();
+        GetDescriptionInfoParamsDTO getDescriptionInfoParamsDTO = new GetDescriptionInfoParamsDTO();
+        PatentNoDetailVO patentNoDetailVO = patentNoUtil.getPatentNoDetail(patent.getPatentNo());
+        BeanUtils.copyProperties(patentNoDetailVO, getDescriptionInfoParamsDTO);
+        String res = opsService.getDescriptionInfo(getDescriptionInfoParamsDTO);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        Text text = new Text();
+        text.setIfOrigin(true);
+        text.setTextContent(jsonObject.getString("data"));
+        text.setLanguage(getDescriptionInfoParamsDTO.getCc());
+        patent.setPublicFullText(Arrays.asList(text));
+    }
+
+    public byte[] getImages(String publicNo) throws IOException {
+        PatentNoDetailVO patentNoDetailVO = patentNoUtil.getPatentNoDetail(publicNo);
+        PubNo pubNo = new PubNo();
+        pubNo.setCountry(patentNoDetailVO.getCc());
+        pubNo.setNumber(patentNoDetailVO.getNumber());
+        pubNo.setKind(patentNoDetailVO.getKind());
+        String res = opsService.getImagesInfo(pubNo);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        String imageInfo = jsonObject.getString("data");
+        // 删除第一个 `[`
+        if (imageInfo.startsWith("[")) {
+            imageInfo = imageInfo.substring(1);
+        }
+        // 删除最后一个 `]`
+        if (imageInfo.endsWith("]")) {
+            imageInfo = imageInfo.substring(0, imageInfo.length() - 1);
+        }
+        GetImagesInfoVO getImagesInfoVO = JSONObject.parseObject(imageInfo, GetImagesInfoVO.class);
+        List<ImagesInfoVO> images = getImagesInfoVO.getImages();
+        if (!images.isEmpty()) {
+            ImagesInfoVO infoVO = images.stream().filter(item -> item.getImageType().equals("FirstPageClipping")).findFirst().orElse(null);
+            if (infoVO != null) {
+                GetFuTuParamsDTO getFuTuParamsDTO = new GetFuTuParamsDTO();
+                getFuTuParamsDTO.setPage(1);
+                getFuTuParamsDTO.setType("image/png");
+                getFuTuParamsDTO.setLink(infoVO.getUrlLink());
+                byte[] buffer = opsService.getPatentFile(getFuTuParamsDTO);
+                if (buffer != null) {
+                    return buffer;
+                } else {
+                    return null;
+                }
+            } else {
+                return null;
+            }
+        } else {
+            return null;
+        }
+    }
+
 }

+ 1 - 1
src/main/resources/application-prodNetOut.yml

@@ -12,7 +12,7 @@ spring:
         max-wait: -1ms
     timeout: 2000ms
   datasource:
-    url: jdbc:mysql://47.101.137.223:3306/pas-prod?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    url: jdbc:mysql://47.101.137.223:3306/pas_prod2?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
     username: root
     password: TU5x6IeBi7rl
     driver-class-name: com.mysql.cj.jdbc.Driver

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

@@ -26,7 +26,6 @@ import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import com.alibaba.druid.sql.visitor.functions.Char;
 import com.alibaba.fastjson.JSON;
-import org.assertj.core.internal.Arrays;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;