瀏覽代碼

推与导入专利接口相关部分代码

chendayu 2 年之前
父節點
當前提交
b0bb7270f4

+ 20 - 1
PAS/src/main/java/cn/cslg/pas/common/model/outApi/PatentStarListDto.java

@@ -3,6 +3,9 @@ package cn.cslg.pas.common.model.outApi;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
+import reactor.util.annotation.NonNull;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 专利之星检索dto类
@@ -16,15 +19,31 @@ public class PatentStarListDto {
      * 检索式
      */
     @JsonProperty(value = "CurrentQuery")
-   private String CurrentQuery;
+    private String CurrentQuery;
+    /**
+     * 表示检索中文库或世界库(CN中文专利库 WD世界专利库)
+     */
     @JsonProperty(value = "DBType")
     private String DBType;
+    /**
+     * 检索的页码,最多 200 页
+     */
     @JsonProperty(value = "PageNum")
     private Integer PageNum;
+    /**
+     * 每页返回条数,最多 50 条
+     */
     @JsonProperty(value = "RowCount")
     private Integer RowCount;
+    /**
+     * 排序字段:“AD”,“PD”,“GD”, “ID”
+     */
     @JsonProperty(value = "OrderBy")
     private String OrderBy;
+    /**
+     * 排序方式:“ASC”,“DESC”
+     */
     @JsonProperty(value = "OrderByType")
     private String OrderByType;
+
 }

+ 30 - 5
PAS/src/main/java/cn/cslg/pas/common/model/vo/outApi/StarPatentVO.java

@@ -1,28 +1,53 @@
 package cn.cslg.pas.common.model.vo.outApi;
 
-import cn.cslg.pas.common.model.vo.BaseVO;
 import com.alibaba.fastjson.annotation.JSONField;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 
 @Data
-public class StarPatentVO  {
+public class StarPatentVO {
+    /**
+     * 专利号
+     */
     @JSONField(name = "PN")
-  private String patentNo;
+    private String patentNo;
+    /**
+     * 摘要
+     */
     @JSONField(name = "AB")
-   private String abstractStr;
+    private String abstractStr;
+    /**
+     * 申请号
+     */
     @JSONField(name = "ANO")
     private String applicationNo;
+    /**
+     * 标题
+     */
     @JSONField(name = "TI")
     private String name;
+    /**
+     * 申请日
+     */
     @JSONField(name = "AD")
     private String applicationDate;
+    /**
+     * 申请人
+     */
     @JSONField(name = "PA")
     private String applicantStr;
+    /**
+     * IPC分类号
+     */
     @JSONField(name = "IC")
     private String ipcListStr;
+    /**
+     * 公开日
+     */
     @JSONField(name = "PD")
     private String publicDate;
+    /**
+     * 公开号
+     */
     @JSONField(name = "PNO")
     private String publicNo;
 }

+ 9 - 8
PAS/src/main/java/cn/cslg/pas/common/utils/FormatUtil.java

@@ -7,20 +7,21 @@ public class FormatUtil {
     public static String toString(Object o) {
         return o == null ? "" : o.toString();
     }
-    public static String MD5(String src){
+
+    public static String MD5(String src) {
         // 需要加密的字符串
         try {
-// 加密对象,指定加密方式
+            // 加密对象,指定加密方式
             MessageDigest md5 = MessageDigest.getInstance("md5");
-// 准备要加密的数据
+            // 准备要加密的数据
             byte[] b = src.getBytes();
-// 加密
+            // 加密
             byte[] digest = md5.digest(b);
-// 十六进制的字符
-            char[] chars = new char[] { '0', '1', '2', '3', '4', '5',
-                    '6', '7' , '8', '9', 'A', 'B', 'C', 'D', 'E','F' };
+            // 十六进制的字符
+            char[] chars = new char[]{'0', '1', '2', '3', '4', '5',
+                    '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
             StringBuffer sb = new StringBuffer();
-// 处理成十六进制的字符串(通常)
+            // 处理成十六进制的字符串(通常)
             for (byte bb : digest) {
                 sb.append(chars[(bb >> 4) & 15]);
                 sb.append(chars[bb & 15]);

+ 15 - 3
PAS/src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java

@@ -10,6 +10,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -22,56 +23,67 @@ import java.io.IOException;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class PatentStarController {
     private final PatentStarApiService patentStarApiService;
+
     @PostMapping("/select")
-    @Operation(summary = "检索接口")
-    public String getAreaList(@RequestBody PatentStarListDto patentStarListDto) throws IOException {
-        return Response.success(patentStarApiService.patentStarSearchApi(patentStarListDto)) ;
+    @Operation(summary = "一般检索接口")
+    public String getAreaList(@RequestBody @Validated PatentStarListDto patentStarListDto) throws IOException {
+        return Response.success(patentStarApiService.patentStarSearchApi(patentStarListDto));
     }
+
     @GetMapping("/getCnBib")
     @Operation(summary = "获得中国专利著录")
     public String getCnBib(String appNo) throws IOException {
         return patentStarApiService.getCnBibApi(appNo);
     }
+
     @GetMapping("/getPicture")
     @Operation(summary = "获得中国专利摘要附图")
     public String getPicture(String appNo) throws IOException {
         return patentStarApiService.getPictureApi(appNo);
     }
+
     @GetMapping("/getWGPicture")
     @Operation(summary = "获得中国专利外观图")
     public String getWGPicture(String appNo) throws IOException {
         return patentStarApiService.getWGPictureApi(appNo);
     }
+
     @GetMapping("/getCnLegal")
     @Operation(summary = "获得中国专利法律状态")
     public String getCnLegal(String appNo) throws IOException {
         return patentStarApiService.getCnLegalApi(appNo);
     }
+
     @GetMapping("/getCnPdf")
     @Operation(summary = "获得中国专利pdf全文")
     public String getCnPdf(String appNo) throws IOException {
         return patentStarApiService.getCnPdfApi(appNo);
     }
+
     @GetMapping("/getCnFullXml")
     @Operation(summary = "获得中国专利全文文本")
     public String getCnFullXml(String appNo) throws IOException {
         return patentStarApiService.getCnFullXmlApi(appNo);
     }
+
     @GetMapping("/getEnPdf")
     @Operation(summary = "获得世界专利pdf")
     public String getEnPdf(String patentNo) throws IOException {
         return patentStarApiService.getEnPdfApi(patentNo);
     }
+
     @GetMapping("/getENBib")
     @Operation(summary = "获得世界专利著录信息")
     public String getENBib(String patentNo) throws IOException {
         return Response.success(patentStarApiService.getENBibApi(patentNo));
     }
+
     @GetMapping("/getFamilyByPubNo")
     @Operation(summary = "获得同住专利")
     public String getFamilyByPubNo(String patentNo) throws IOException {
         return patentStarApiService.getFamilyByPubNoApi(patentNo);
     }
+
     @GetMapping("/getCitedNumByPubNo")
     @Operation(summary = "获得被引用次数")
     public String getCitedNumByPubNo(String patentNo) throws IOException {

+ 33 - 31
PAS/src/main/java/cn/cslg/pas/service/outApi/PatentStarApiService.java

@@ -91,12 +91,12 @@ public class PatentStarApiService {
             }
         }
         String reStr = sb.toString();
-        reStr ="FXX"+reStr.replace("=", "/");
+        reStr = "FXX" + reStr.replace("=", "/");
         return reStr;
     }
 
-    public Map<String,Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
-        String formQuery=patentStarListDto.getCurrentQuery();
+    public Map<String, Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
+        String formQuery = patentStarListDto.getCurrentQuery();
         patentStarListDto.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
         String json = JSONObject.toJSONString(patentStarListDto);
         String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
@@ -119,16 +119,16 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             if (response.isSuccessful()) {
-                JSONObject jsonObject  =JSONObject.parseObject(Objects.requireNonNull(response.body()).string());
-                JSONObject Data= (JSONObject)jsonObject.get("Data");
-            List<StarPatentVO> starPatentVOS  = JSONArray.parseArray(Data.get("List").toString(),StarPatentVO.class);
+                JSONObject jsonObject = JSONObject.parseObject(Objects.requireNonNull(response.body()).string());
+                JSONObject Data = (JSONObject) jsonObject.get("Data");
+                List<StarPatentVO> starPatentVOS = JSONArray.parseArray(Data.get("List").toString(), StarPatentVO.class);
                 // 打印服务端返回结果
-              //  return Objects.requireNonNull(response.body()).string();
-                Map<String,Object> reMap =new HashMap<>();
-                reMap.put("size",patentStarListDto.getRowCount());
-                reMap.put("current",patentStarListDto.getPageNum());
-                reMap.put("records",starPatentVOS);
-                reMap.put("total",Data.get("HitCount"));
+                //  return Objects.requireNonNull(response.body()).string();
+                Map<String, Object> reMap = new HashMap<>();
+                reMap.put("size", patentStarListDto.getRowCount());
+                reMap.put("current", patentStarListDto.getPageNum());
+                reMap.put("records", starPatentVOS);
+                reMap.put("total", Data.get("HitCount"));
                 return reMap;
             }
         } catch (IOException e) {
@@ -136,12 +136,13 @@ public class PatentStarApiService {
         }
         return null;
     }
+
     /**
      * @param appNo
      * @return
      * @throws IOException
      * @author 李仁杰
-     * 从专利之星获取摘要附图
+     * 从专利之星获取中国专利著录
      */
     public String getCnBibApi(String appNo) throws IOException {
         String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
@@ -178,7 +179,7 @@ public class PatentStarApiService {
      * @return
      * @throws IOException
      * @author 李仁杰
-     * 从专利之星获取摘要附图
+     * 从专利之星获取中国专利摘要附图
      */
     public String getPictureApi(String patentNo) throws IOException {
         String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + patentNo;
@@ -256,7 +257,7 @@ public class PatentStarApiService {
      * 从专利之星获取中国专利法律状态
      */
     public String getCnLegalApi(String appNo) throws IOException {
-        String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/"+appNo;
+        String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/" + appNo;
         String appId = "2000041";
         String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -293,8 +294,8 @@ public class PatentStarApiService {
      * 从专利之星获取中国专利全文图片
      */
 
-    public String  getCnPdfApi(String appNo) throws IOException {
-        String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/"+appNo;
+    public String getCnPdfApi(String appNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/" + appNo;
         String appId = "2000041";
         String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -322,6 +323,7 @@ public class PatentStarApiService {
         }
         return "{}";
     }
+
     /**
      * @param appNo
      * @return
@@ -330,8 +332,8 @@ public class PatentStarApiService {
      * 从专利之星获取中国专利全文文本
      */
 
-    public String  getCnFullXmlApi(String appNo) throws IOException {
-        String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/"+appNo;
+    public String getCnFullXmlApi(String appNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/" + appNo;
         String appId = "2000041";
         String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -367,8 +369,8 @@ public class PatentStarApiService {
      * @author 李仁杰
      * 从专利之星获取世界专利pdf
      */
-    public String  getEnPdfApi(String patentNo) throws IOException {
-        String url = "  https://api.patentstar.com.cn/api/Patent/EnPdf/"+patentNo;
+    public String getEnPdfApi(String patentNo) throws IOException {
+        String url = "  https://api.patentstar.com.cn/api/Patent/EnPdf/" + patentNo;
         String appId = "2000041";
         String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -404,8 +406,8 @@ public class PatentStarApiService {
      * @author 李仁杰
      * 从专利之星获取世界专利著录信息
      */
-    public String  getENBibApi(String patentNo) throws IOException {
-        String url = "https://api.patentstar.com.cn/api/Patent/ENBib/"+patentNo;
+    public String getENBibApi(String patentNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/ENBib/" + patentNo;
         String appId = "2000041";
         String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -441,8 +443,8 @@ public class PatentStarApiService {
      * @author 李仁杰
      * 从专利之星获取同族专利
      */
-    public String  getFamilyByPubNoApi(String patentNo) throws IOException {
-        String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/"+patentNo;
+    public String getFamilyByPubNoApi(String patentNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/" + patentNo;
         String appId = "2000041";
         String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -478,11 +480,11 @@ public class PatentStarApiService {
      * @author 李仁杰
      * 获得专利被引用次数api
      */
-    public String  getCitedNumByPubNoApi(String patentNo) throws IOException {
-        String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/"+patentNo;
+    public String getCitedNumByPubNoApi(String patentNo) throws IOException {
+        String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/" + patentNo;
         String appId = "2000041";
         String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
-        Long currentTimeMillis = System.currentTimeMillis()/ 1000;
+        Long currentTimeMillis = System.currentTimeMillis() / 1000;
         String Sign = appId + appkey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
@@ -509,8 +511,8 @@ public class PatentStarApiService {
     }
 
     public static void main(String[] args) {
-        String str ="(AB=电子 OR TI=电子)";
-    String aa=   PatentStarApiService.formatQuery(str);
-    System.out.println(aa);
+        String str = "(AB=电子 OR TI=电子)";
+        String aa = formatQuery(str);
+        System.out.println(aa);
     }
 }

+ 2 - 2
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java

@@ -326,12 +326,12 @@ public class PantentQueueService {
      * @param taskId 任务id
      */
     public void consumerQueueDeleteTasks(Integer taskId) {
-        //清除4个消费者专利队列中该任务的专利
+        //任务暂停时清除4个消费者专利队列中该任务的专利
         this.patentImageQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         this.patentZhuluQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         this.patentRightQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         this.patentInstructionTextQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
-        //清除 patentIdMap(任务id + "|" + 专利id,拼接成专利的标识(作为当前某一个消费者消费完的这个专利的数量标识))中该任务的专利的数量标识
+        //任务暂停时清除 patentIdMap(任务id + "|" + 专利id,拼接专利的数量标识(作为当前某一个消费者消费完的这个专利的数量标识))中该任务的专利的数量标识
         Iterator<String> iterator = this.patentIdMap.keySet().iterator();
         while (iterator.hasNext()) {
             String key = iterator.next();