Browse Source

检索表达式修改

lwhhszx 2 năm trước cách đây
mục cha
commit
8bf28a4478

+ 90 - 90
PAS/src/main/java/cn/cslg/pas/common/core/CreateTaskThread.java

@@ -31,96 +31,96 @@ public class CreateTaskThread implements InitializingBean {
 
     @Override
     public void afterPropertiesSet() throws Exception {
-        //初始化任务队列
-        //查找任务状态为0(队列中)和1(进行中)的任务
-        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getStatus, new ArrayList<>(Arrays.asList(0, 1))));
-        if (tasks.size() > 0) {
-            //过滤出任务ids
-            List<Integer> taskIds = tasks.stream().map(Task::getId).collect(Collectors.toList());
-            //过滤出进行中的任务的id
-            List<Task> doingTasks = tasks.stream().filter(item -> item.getStatus() == 1).collect(Collectors.toList());
-            List<Integer> doingTaskIds = doingTasks.stream().map(Task::getId).collect(Collectors.toList());
-            if (doingTaskIds.size() > 0) {
-                //先将进行中的任务(项目重启后进行中的任务仅会有1个)的id先存入任务队列,再将其余存入
-                pantentQueueService.taskQueueAddTask(Arrays.asList(doingTaskIds.get(0)));
-                taskIds.removeAll(doingTaskIds);
-            }
-            pantentQueueService.taskQueueAddTask(taskIds);
-        }
-
-        //生产者线程
-        Thread threadProducer = new Thread(pantentQueueService::addPatnetToQueue);
-        threadProducer.start();
-
-        //装载专利著录线程
-        Thread threadSetPatentZhuLu = new Thread(pantentQueueService::setPatentZhuLu);
-        threadSetPatentZhuLu.start();
-        //装载权要线程
-        Thread threadSetPatentClaim = new Thread(pantentQueueService::setPatentRight);
-        threadSetPatentClaim.start();
-        //装载说明书文本线程
-        Thread threadSetPatentInstructionText = new Thread(pantentQueueService::setPatentInstructionText);
-        threadSetPatentInstructionText.start();
-        //装载说明书pdf线程
-        Thread threadSetPatentInstructionPDF = new Thread(pantentQueueService::setPatentInstructionPDF);
-        threadSetPatentInstructionPDF.start();
-        //装载摘要附图线程
-        Thread threadSetPatentPicture = new Thread(pantentQueueService::setPatentImage);
-        threadSetPatentPicture.start();
-
-
-        //消费者1线程(摘要附图)
-        Thread threadConsumer1 = new Thread(() -> {
-            try {
-                pantentQueueService.pushPatentImageToDB();
-            } catch (InterruptedException | IOException e) {
-                e.printStackTrace();
-            }
-        });
-        threadConsumer1.start();
-
-
-        //消费者2线程(著录项目)
-        Thread threadConsumer2 = new Thread(() -> {
-            try {
-                pantentQueueService.pushPatentZhuLuToDB();
-            } catch (InterruptedException | IOException e) {
-                e.printStackTrace();
-            }
-        });
-        threadConsumer2.start();
-
-
-        //消费者3线程(权利要求)
-        Thread threadConsumer3 = new Thread(() -> {
-            try {
-                pantentQueueService.pushPatentRightToDB();
-            } catch (InterruptedException | IOException e) {
-                e.printStackTrace();
-            }
-        });
-        threadConsumer3.start();
-
-
-        //消费者4线程(说明书文本消费者)
-        Thread threadConsumer4 = new Thread(() -> {
-            try {
-                pantentQueueService.pushPatentInstructionTextToDB();
-            } catch (InterruptedException | IOException e) {
-                e.printStackTrace();
-            }
-        });
-        threadConsumer4.start();
-
-        //消费者5线程(说明书pdf消费者)
-        Thread threadConsumer5 = new Thread(() -> {
-            try {
-                pantentQueueService.pushPatentInstructionPDFToDB();
-            } catch (InterruptedException | IOException e) {
-                e.printStackTrace();
-            }
-        });
-        threadConsumer5.start();
+//        //初始化任务队列
+//        //查找任务状态为0(队列中)和1(进行中)的任务
+//        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getStatus, new ArrayList<>(Arrays.asList(0, 1))));
+//        if (tasks.size() > 0) {
+//            //过滤出任务ids
+//            List<Integer> taskIds = tasks.stream().map(Task::getId).collect(Collectors.toList());
+//            //过滤出进行中的任务的id
+//            List<Task> doingTasks = tasks.stream().filter(item -> item.getStatus() == 1).collect(Collectors.toList());
+//            List<Integer> doingTaskIds = doingTasks.stream().map(Task::getId).collect(Collectors.toList());
+//            if (doingTaskIds.size() > 0) {
+//                //先将进行中的任务(项目重启后进行中的任务仅会有1个)的id先存入任务队列,再将其余存入
+//                pantentQueueService.taskQueueAddTask(Arrays.asList(doingTaskIds.get(0)));
+//                taskIds.removeAll(doingTaskIds);
+//            }
+//            pantentQueueService.taskQueueAddTask(taskIds);
+//        }
+//
+//        //生产者线程
+//        Thread threadProducer = new Thread(pantentQueueService::addPatnetToQueue);
+//        threadProducer.start();
+//
+//        //装载专利著录线程
+//        Thread threadSetPatentZhuLu = new Thread(pantentQueueService::setPatentZhuLu);
+//        threadSetPatentZhuLu.start();
+//        //装载权要线程
+//        Thread threadSetPatentClaim = new Thread(pantentQueueService::setPatentRight);
+//        threadSetPatentClaim.start();
+//        //装载说明书文本线程
+//        Thread threadSetPatentInstructionText = new Thread(pantentQueueService::setPatentInstructionText);
+//        threadSetPatentInstructionText.start();
+//        //装载说明书pdf线程
+//        Thread threadSetPatentInstructionPDF = new Thread(pantentQueueService::setPatentInstructionPDF);
+//        threadSetPatentInstructionPDF.start();
+//        //装载摘要附图线程
+//        Thread threadSetPatentPicture = new Thread(pantentQueueService::setPatentImage);
+//        threadSetPatentPicture.start();
+//
+//
+//        //消费者1线程(摘要附图)
+//        Thread threadConsumer1 = new Thread(() -> {
+//            try {
+//                pantentQueueService.pushPatentImageToDB();
+//            } catch (InterruptedException | IOException e) {
+//                e.printStackTrace();
+//            }
+//        });
+//        threadConsumer1.start();
+//
+//
+//        //消费者2线程(著录项目)
+//        Thread threadConsumer2 = new Thread(() -> {
+//            try {
+//                pantentQueueService.pushPatentZhuLuToDB();
+//            } catch (InterruptedException | IOException e) {
+//                e.printStackTrace();
+//            }
+//        });
+//        threadConsumer2.start();
+//
+//
+//        //消费者3线程(权利要求)
+//        Thread threadConsumer3 = new Thread(() -> {
+//            try {
+//                pantentQueueService.pushPatentRightToDB();
+//            } catch (InterruptedException | IOException e) {
+//                e.printStackTrace();
+//            }
+//        });
+//        threadConsumer3.start();
+//
+//
+//        //消费者4线程(说明书文本消费者)
+//        Thread threadConsumer4 = new Thread(() -> {
+//            try {
+//                pantentQueueService.pushPatentInstructionTextToDB();
+//            } catch (InterruptedException | IOException e) {
+//                e.printStackTrace();
+//            }
+//        });
+//        threadConsumer4.start();
+//
+//        //消费者5线程(说明书pdf消费者)
+//        Thread threadConsumer5 = new Thread(() -> {
+//            try {
+//                pantentQueueService.pushPatentInstructionPDFToDB();
+//            } catch (InterruptedException | IOException e) {
+//                e.printStackTrace();
+//            }
+//        });
+//        threadConsumer5.start();
 
     }
 

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

@@ -30,7 +30,7 @@ public class PatentStarController {
     public String getAreaList(@RequestBody @Validated PatentStarListDto patentStarListDto) throws IOException {
           Map<String,Object> map =  patentStarApiService.patentStarSearchApi(patentStarListDto);
         if(map==null){
-            return Response.error("检索失败");
+            return Response.error("检索失败,请检查检索式");
         }
         return Response.success(map);
     }

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

@@ -49,13 +49,46 @@ public class PatentStarApiService {
    public static String formatValue(String value){
        return  value.replace("~",">");
    }
+
+   public static String formQuery(String query){
+       //记录偏移量
+       int t =0;
+      StringBuilder query2 =new StringBuilder(query);
+      //匹配形如ab=(cd OR ef);
+       String regexOrg = "([^=^\\sOR\\s^\\(^\\)]+=\\([^=^\\)]+\\))+?";
+       Pattern patternOrg = Pattern.compile(regexOrg);
+       Matcher matcherOrg = patternOrg.matcher(query);
+       while (matcherOrg.find()){
+           String a = matcherOrg.group();
+         String[] bc =a.split("=");
+         String b =bc[0];
+         b.length();
+         query2.delete(matcherOrg.start()+t,matcherOrg.start()+b.length()+1+t);
+         t=t-b.length()-1;
+         String c= bc[1];
+           String regexOrg1 = "([^\\sOR\\s^\\sAND\\s^\\sNOT\\s^\\(^\\)])+";
+           Pattern patternOrg1 = Pattern.compile(regexOrg1);
+           Matcher matcherOrg1 = patternOrg1.matcher(c);
+           while (matcherOrg1.find()){
+               String r =matcherOrg1.group();
+               System.out.println(r);
+        query2.insert(matcherOrg.start()+b.length()+1+matcherOrg1.start()+t,b+"=");
+           t=t+b.length()+1;
+           }
+       }
+       System.out.println(query2);
+       return query2.toString();
+   }
+
     public static String formatQuery(String query) {
+       query= PatentStarApiService.formQuery(query);
         query = query
                 .replace(" AND ", "*")
                 .replace(" OR ", "+")
                 .replace(" NOT ", "-");
+
         StringBuilder sb = new StringBuilder(query);
-        String regex = "(?<=[\\(\\)\\+\\-=\\*])[^\\*^\\-^\\+]+?(?=[\\(\\+\\-=\\)\\*])";
+        String regex = "(?<=[\\(\\)\\+\\-=\\*])[^\\*^\\-^\\+^\\(^\\)]+?(?=[\\(\\+\\-=\\)\\*])";
         Pattern pattern = Pattern.compile(regex);
         Matcher matcher = pattern.matcher(query);
         Map<Integer, Integer> map = new LinkedHashMap<>();
@@ -94,6 +127,7 @@ public class PatentStarApiService {
         reStr = "FXX" + reStr.replace("=", "/");
         return reStr;
     }
+
     //装载专利信息
     public void loadStarPatentVOS(List<StarPatentVO> starPatentVOS){
         starPatentVOS.forEach(item->{
@@ -165,13 +199,18 @@ public class PatentStarApiService {
              }
             }
             //法律状态
-
         });
     }
 
     public Map<String, Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
-        String formQuery = patentStarListDto.getCurrentQuery();
-        patentStarListDto.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
+       try {
+           String formQuery = patentStarListDto.getCurrentQuery();
+           patentStarListDto.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
+       }
+catch (Exception e){
+           return null;
+}
+
         String json = JSONObject.toJSONString(patentStarListDto);
         String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
@@ -216,6 +255,7 @@ public class PatentStarApiService {
         }
         catch (IOException e) {
             e.printStackTrace();
+            return  null;
         }
         return null;
     }
@@ -633,9 +673,4 @@ public class PatentStarApiService {
         return "{}";
     }
 
-    public static void main(String[] args) {
-        String str = "(AB=电子 OR TI=电子)";
-        String aa = formatQuery(str);
-        System.out.println(aa);
-    }
 }