Преглед на файлове

2023/6/5 task表字段添加

lwhhszx преди 2 години
родител
ревизия
e6c4bf2ce5

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

@@ -0,0 +1,28 @@
+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  {
+    @JSONField(name = "PN")
+  private String patentNo;
+    @JSONField(name = "AB")
+   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;
+    @JSONField(name = "IC")
+    private String ipcListStr;
+    @JSONField(name = "PD")
+    private String publicDate;
+    @JSONField(name = "PNO")
+    private String publicNo;
+}

+ 44 - 38
PAS/src/main/java/cn/cslg/pas/service/outApi/PatentStarApiService.java

@@ -6,12 +6,14 @@ import cn.cslg.pas.common.model.dto.GetDescriptionInfoParamsDTO;
 import cn.cslg.pas.common.model.dto.GetFuTuParamsDTO;
 import cn.cslg.pas.common.model.dto.GetSearchBiblioParamsDTO;
 import cn.cslg.pas.common.model.outApi.PatentStarListDto;
+import cn.cslg.pas.common.model.vo.outApi.StarPatentVO;
 import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.JsonUtils;
 import cn.cslg.pas.common.utils.SecurityUtils.SecurityUtils;
 import cn.cslg.pas.domain.PubNo;
 import cn.hutool.crypto.SecureUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.JsonObject;
@@ -47,51 +49,55 @@ public class PatentStarApiService {
     @Value("${PASUrl}")
     private String PASUrl;
 
-    public static String formatQuery(String query){
-        String str = "((abc=13+ac=232)+ad=33+(ad=2))";
-        StringBuilder sb =new StringBuilder(str);
-        String regex = "(?<=[\\(\\)\\+\\-=])[\\w\\W]+?(?=[\\(\\+\\-=\\)])";
+    public static String formatQuery(String query) {
+        query = query
+                .replace(" AND ", "*")
+                .replace(" OR ", "+")
+                .replace(" NOT ", "-");
+        StringBuilder sb = new StringBuilder(query);
+        String regex = "(?<=[\\(\\)\\+\\-=\\*])[\\w\\W]+?(?=[\\(\\+\\-=\\)\\*])";
         Pattern pattern = Pattern.compile(regex);
-        Matcher matcher = pattern.matcher(str);
-        Map<Integer,Integer> map =new LinkedHashMap<>();
+        Matcher matcher = pattern.matcher(query);
+        Map<Integer, Integer> map = new LinkedHashMap<>();
         while (matcher.find()) {
-            String  a=   matcher.group();
+            String a = matcher.group();
             String regex2 = "[^\\(^\\)^\\+^-^=^*]";
             Pattern pattern2 = Pattern.compile(regex2);
             Matcher matcher2 = pattern2.matcher(a);
-            System.out.println(matcher.start() + "->" + matcher.end()+matcher.group());
-            Integer start =matcher.start();
-            if(matcher2.find()){
-                start +=matcher2.start();
+            Integer start = matcher.start();
+            if (matcher2.find()) {
+                start += matcher2.start();
             }
-            map.put(start,matcher.end());
+            map.put(start, matcher.end());
         }
-        List <Integer> list = new ArrayList<Integer>(map.keySet());
-for(int i=0;i<list.size();i+=2){
- int start1 = list.get(i);
- int end1 = map.get(list.get(i));
- int len1 =end1-start1;
- int start2 = list.get(i+1);
- int end2 = map.get(list.get(i+1));
-    int len2 =end2-start2;
- int diff =len2 -len1;
- if(diff>0){
-     sb.replace(start1,end1,str.substring(start2,end2));
-     sb.replace(start2+diff,end2+diff,str.substring(start1,end1));
- }
- else {
-     sb.replace(start2,end2,str.substring(start1,end1));
-     sb.replace(start1,end1,str.substring(start2,end2));
- }
-    System.out.println(sb);
-}
-String aa =sb.toString();
-aa.replace("\\","=");
-        System.out.println(aa);
-return "";
+        if (map.size() == 0) {
+            return "";
+        }
+        List<Integer> list = new ArrayList<Integer>(map.keySet());
+        for (int i = 0; i < list.size(); i += 2) {
+            int start1 = list.get(i);
+            int end1 = map.get(list.get(i));
+            int len1 = end1 - start1;
+            int start2 = list.get(i + 1);
+            int end2 = map.get(list.get(i + 1));
+            int len2 = end2 - start2;
+            int diff = len2 - len1;
+            if (diff > 0) {
+                sb.replace(start1, end1, query.substring(start2, end2));
+                sb.replace(start2 + diff, end2 + diff, query.substring(start1, end1));
+            } else {
+                sb.replace(start2, end2, query.substring(start1, end1));
+                sb.replace(start1, end1, query.substring(start2, end2));
+            }
+        }
+        String reStr = sb.toString();
+        reStr ="FXX"+reStr.replace("=", "/");
+        return reStr;
     }
+
     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";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -115,13 +121,13 @@ return "";
             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);
                 // 打印服务端返回结果
               //  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",Data.get("List"));
+                reMap.put("records",starPatentVOS);
                 reMap.put("total",Data.get("HitCount"));
                 return reMap;
             }
@@ -503,7 +509,7 @@ return "";
     }
 
     public static void main(String[] args) {
-        String str ="D=ABC";
+        String str ="(AB=电子 OR TI=电子)";
     String aa=   PatentStarApiService.formatQuery(str);
     System.out.println(aa);
     }