chendayu 2 年之前
父节点
当前提交
f455f41527

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

@@ -1,28 +0,0 @@
-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;
-}

+ 3 - 1
PAS/src/main/java/cn/cslg/pas/service/TaskService.java

@@ -328,7 +328,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         }
 
         //5.将生产者生产专利类中的公共任务状态改为暂停
-        excutePatentDataExcel.setTaskStatus(4);
+        excutePatentDataExcel.setTaskStatus(taskId, 4);
         try {
             Thread.sleep(2000);
         } catch (InterruptedException e) {
@@ -375,6 +375,8 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
 
         //4.将当前任务添加进生产者任务队列进行排队,并唤醒生产者线程
         pantentQueueService.taskQueueAddTask(new ArrayList<>(Arrays.asList(taskId)));
+        //5.将生产者生产专利类中的公共任务状态改为暂停
+        excutePatentDataExcel.setTaskStatus(taskId, 0);
         pantentQueueService.awakeTasktch();
 
         log.info("继续任务成功");

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

@@ -6,14 +6,12 @@ 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;
@@ -49,55 +47,51 @@ public class PatentStarApiService {
     @Value("${PASUrl}")
     private String PASUrl;
 
-    public static String formatQuery(String query) {
-        query = query
-                .replace(" AND ", "*")
-                .replace(" OR ", "+")
-                .replace(" NOT ", "-");
-        StringBuilder sb = new StringBuilder(query);
-        String regex = "(?<=[\\(\\)\\+\\-=\\*])[\\w\\W]+?(?=[\\(\\+\\-=\\)\\*])";
+    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]+?(?=[\\(\\+\\-=\\)])";
         Pattern pattern = Pattern.compile(regex);
-        Matcher matcher = pattern.matcher(query);
-        Map<Integer, Integer> map = new LinkedHashMap<>();
+        Matcher matcher = pattern.matcher(str);
+        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);
-            Integer start = matcher.start();
-            if (matcher2.find()) {
-                start += matcher2.start();
+            System.out.println(matcher.start() + "->" + matcher.end()+matcher.group());
+            Integer start =matcher.start();
+            if(matcher2.find()){
+                start +=matcher2.start();
             }
-            map.put(start, matcher.end());
+            map.put(start,matcher.end());
         }
-        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;
+        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 "";
     }
-
     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;
@@ -121,13 +115,13 @@ public class PatentStarApiService {
             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",starPatentVOS);
+                reMap.put("records",Data.get("List"));
                 reMap.put("total",Data.get("HitCount"));
                 return reMap;
             }
@@ -509,7 +503,7 @@ public class PatentStarApiService {
     }
 
     public static void main(String[] args) {
-        String str ="(AB=电子 OR TI=电子)";
+        String str ="D=ABC";
     String aa=   PatentStarApiService.formatQuery(str);
     System.out.println(aa);
     }

+ 6 - 5
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataExcel.java

@@ -28,7 +28,8 @@ public class ExcutePatentDataExcel implements IExcutePatentData {
     private final ExcuteUploadSettingService excuteUploadSettingService;
     private final ExcuteDataToVOService excuteDataToVOService;
     private final PantentQueueService pantentQueueService;
-    private Integer taskStatus;
+    private Integer pTaskId = 0;
+    private Integer pTaskStatus = 0;
 
     /**
      * 解析获取专利数据
@@ -51,10 +52,9 @@ public class ExcutePatentDataExcel implements IExcutePatentData {
         //解析Excel文件获得工作簿
         Sheet sheet = ReadExcelUtils.readExcel(filePath);
         //遍历专利总数量,在循环中将专利一个一个存入消费者专利队列
-        taskStatus = 0;
         for (int i = lastIndex; i < total; i++) {
             //判断若任务状态为暂停(4),则不再生产该任务的专利
-            if (taskStatus == 4) {
+            if (pTaskId.equals(task.getId()) && pTaskStatus == 4) {
                 return;
             }
             PatentData patentData = ReadExcelUtils.readExcelOneRow(filePath, sheet, i + 1);
@@ -66,8 +66,9 @@ public class ExcutePatentDataExcel implements IExcutePatentData {
         }
     }
 
-    public void setTaskStatus(Integer taskStatus) {
-        this.taskStatus = taskStatus;
+    public void setTaskStatus(Integer taskId, Integer taskStatus) {
+        this.pTaskId = taskId;
+        this.pTaskStatus = taskStatus;
     }
 
 }

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

@@ -326,11 +326,21 @@ public class PantentQueueService {
      * @param taskId 任务id
      */
     public void consumerQueueDeleteTasks(Integer taskId) {
+        //清除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));
-        this.patentIdMap.clear();
+        //清除 patentIdMap(将任务id + "|" + 专利id,拼接成专利的标识(作为当前某一个消费者消费完的这个专利的数量标识))中该任务的专利的数量标识
+        Iterator<String> iterator = this.patentIdMap.keySet().iterator();
+        while (iterator.hasNext()) {
+            String key = iterator.next();
+            if (key.contains(taskId + "")) {
+                iterator.remove();
+                this.patentIdMap.remove(key);
+            }
+        }
+
     }
 
     /**