فهرست منبع

监听专利之星接口异常发送邮件

chendayu 2 سال پیش
والد
کامیت
0afa41d06e
21فایلهای تغییر یافته به همراه692 افزوده شده و 95 حذف شده
  1. 4 4
      src/main/java/com/example/demo/config/QuartzConfig.java
  2. 2 1
      src/main/java/com/example/demo/controller/QuartzTaskController.java
  3. 26 0
      src/main/java/com/example/demo/domain/PublicOrAppNo.java
  4. 2 2
      src/main/java/com/example/demo/domain/entity/QrtzTask.java
  5. 46 21
      src/main/java/com/example/demo/job/DetectInterfacesJob.java
  6. 19 0
      src/main/java/com/example/demo/service/DetectInterface.java
  7. 62 30
      src/main/java/com/example/demo/service/OutInterfaceService.java
  8. 33 34
      src/main/java/com/example/demo/service/QrTaskService.java
  9. 2 2
      src/main/java/com/example/demo/service/WebLoginConfigService.java
  10. 46 0
      src/main/java/com/example/demo/service/detectInterface/GetCitedNumByPubNoService.java
  11. 45 0
      src/main/java/com/example/demo/service/detectInterface/GetCnBibApiService.java
  12. 46 0
      src/main/java/com/example/demo/service/detectInterface/GetCnFullXmlService.java
  13. 46 0
      src/main/java/com/example/demo/service/detectInterface/GetCnLegalService.java
  14. 46 0
      src/main/java/com/example/demo/service/detectInterface/GetCnPdfService.java
  15. 46 0
      src/main/java/com/example/demo/service/detectInterface/GetEnBibService.java
  16. 46 0
      src/main/java/com/example/demo/service/detectInterface/GetEnPdfService.java
  17. 46 0
      src/main/java/com/example/demo/service/detectInterface/GetFamilyByPubNoService.java
  18. 44 0
      src/main/java/com/example/demo/service/detectInterface/GetPictureService.java
  19. 46 0
      src/main/java/com/example/demo/service/detectInterface/GetWGPictureService.java
  20. 37 0
      src/main/java/com/example/demo/util/PatentStarEmail.java
  21. 2 1
      src/main/resources/application-dev.yml

+ 4 - 4
src/main/java/com/example/demo/config/QuartzConfig.java

@@ -1,6 +1,6 @@
 package com.example.demo.config;
 
-import com.example.demo.service.WebUploadJob;
+import com.example.demo.job.DetectInterfacesJob;
 import org.quartz.*;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -13,7 +13,7 @@ public class QuartzConfig {
     @Bean
     public JobDetail jobDetail() {
         //指定任务描述具体的实现类
-        return JobBuilder.newJob(WebUploadJob.class)
+        return JobBuilder.newJob(DetectInterfacesJob.class)
                 // 指定任务的名称
                 .withIdentity("webUploadJob", "Default")
                 // 每次任务执行后进行存储
@@ -27,8 +27,8 @@ public class QuartzConfig {
         return TriggerBuilder.newTrigger()
                 // 绑定工作任务
                 .forJob(jobDetail())
-                // 每隔 5 秒执行一次 job
-                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(5))
+                // 每隔一小时执行一次 job
+                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(3600))
                 .withIdentity("webUploadTrigger", "Default")
                 .build();
     }

+ 2 - 1
src/main/java/com/example/demo/controller/QuartzTaskController.java

@@ -35,7 +35,7 @@ public class QuartzTaskController {
     public String addTask(@RequestBody QrtzTaskAddNewDTO qrtzTaskAddNewDTO) throws SchedulerException {
         //添加任务
         QrtzTask qrtzTask = qrTaskService.addQuartzTask(qrtzTaskAddNewDTO);
-        if(qrtzTask==null){
+        if (qrtzTask == null) {
             return Response.error("未配置网站登录信息");
         }
         //任务添加完,判断是定时任务则任务调度添加该定时任务
@@ -69,6 +69,7 @@ public class QuartzTaskController {
         QrtzTask qrtzTask = qrTaskService.updateQuartzTask(qrtzTaskUpdateDTO);
         if (qrtzTask.getTaskType() == 1) {
             jobService.updateJob(qrtzTask);
+
         }
         return Response.success();
     }

+ 26 - 0
src/main/java/com/example/demo/domain/PublicOrAppNo.java

@@ -0,0 +1,26 @@
+package com.example.demo.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 封装公开号或申请号类
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Accessors(chain = true)
+@Data
+public class PublicOrAppNo implements Serializable {
+    /**
+     * 公开号
+     */
+    private String publicNo;
+    /**
+     * 申请号
+     */
+    private String appNo;
+
+}

+ 2 - 2
src/main/java/com/example/demo/domain/entity/QrtzTask.java

@@ -12,7 +12,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 import java.util.Date;
 
 /**
- * 任务执行情况表的实体类
+ * 任务条件表的实体类
  *
  * @Author chenyu
  * @Date 2023/3/27
@@ -20,7 +20,7 @@ import java.util.Date;
 @TableName(value = "qrtz_task")
 @Accessors(chain = true)
 @Data
-public class QrtzTask extends BaseEntity<QrtzTask>{
+public class QrtzTask extends BaseEntity<QrtzTask> {
     /**
      * 专题库id
      */

+ 46 - 21
src/main/java/com/example/demo/job/DetectInterfacesJob.java

@@ -1,37 +1,62 @@
 package com.example.demo.job;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.example.demo.domain.entity.QrtzTask;
-import com.example.demo.domain.entity.QrtzTaskDetail;
-import com.example.demo.exception.XiaoShiException;
-import com.example.demo.model.dto.TaskWebSocketDTO;
-import com.example.demo.model.dto.WebQueryDTO;
-import com.example.demo.util.MathUtils;
-import com.example.demo.util.Response;
-import com.example.demo.util.ResponseEnum;
-import com.example.demo.util.WebSocketServer;
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.detectInterface.*;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.quartz.QuartzJobBean;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
 /**
- * 检测接口任务
+ * 检测监听接口任务
  */
 @Slf4j
+@RequiredArgsConstructor
 @DisallowConcurrentExecution
 public class DetectInterfacesJob extends QuartzJobBean {
+    private static final String publicNo = "CN102727071A";
+    private static final String appNo = "CN201210110452";
+    private final GetCnBibApiService getCnBibApiService;
+    private final GetPictureService getPictureService;
+    private final GetWGPictureService getWGPictureService;
+    private final GetCnLegalService getCnLegalService;
+    private final GetCnPdfService getCnPdfService;
+    private final GetCnFullXmlService getCnFullXmlService;
+    private final GetEnPdfService getEnPdfService;
+    private final GetEnBibService getEnBibService;
+    private final GetFamilyByPubNoService getFamilyByPubNoService;
+    private final GetCitedNumByPubNoService getCitedNumByPubNoService;
+
     @Override
-    public void executeInternal(JobExecutionContext context) throws JobExecutionException {
+    public void executeInternal(JobExecutionContext context) {
+        //当前使用专利 "电饭锅"   公开号:CN102727071A | 申请号:CN201210110452.6
+        PublicOrAppNo publicOrAppNo = new PublicOrAppNo()
+                .setPublicNo(publicNo)
+                .setAppNo(appNo);
+
+        //执行监听专利之星各接口异常发送邮件通知
+        startExcute(publicOrAppNo);
+
+
+    }
+
+    /**
+     * 执行监听专利之星各接口异常发送邮件通知
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    private void startExcute(PublicOrAppNo publicOrAppNo) {
+        getCnBibApiService.executeDetectInterface(publicOrAppNo);         //中国专利著录接口
+        getPictureService.executeDetectInterface(publicOrAppNo);          //中国专利摘要附图接口
+        getWGPictureService.executeDetectInterface(publicOrAppNo);        //中国专利外观图接口
+        getCnLegalService.executeDetectInterface(publicOrAppNo);          //中国专利法律状态接口
+        getCnPdfService.executeDetectInterface(publicOrAppNo);            //中国专利pdf全文接口
+        getCnFullXmlService.executeDetectInterface(publicOrAppNo);        //中国专利全文文本接口
+        getEnPdfService.executeDetectInterface(publicOrAppNo);            //世界专利pdf接口
+        getEnBibService.executeDetectInterface(publicOrAppNo);            //世界专利著录信息接口
+        getFamilyByPubNoService.executeDetectInterface(publicOrAppNo);    //同族专利接口
+        getCitedNumByPubNoService.executeDetectInterface(publicOrAppNo);  //被引用次数接口
 
     }
 

+ 19 - 0
src/main/java/com/example/demo/service/DetectInterface.java

@@ -0,0 +1,19 @@
+package com.example.demo.service;
+
+import com.example.demo.domain.PublicOrAppNo;
+
+/**
+ * 监听监测专利之星外部接口工厂
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+public interface DetectInterface {
+    /**
+     * 执行调用专利之星外部接口抽象方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    void executeDetectInterface(PublicOrAppNo publicOrAppNo);
+
+}

+ 62 - 30
src/main/java/com/example/demo/service/OutInterfaceService.java

@@ -160,6 +160,7 @@ public class OutInterfaceService {
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
      * @title 根据ID查询人员
      * @description 接口来源:PCS
@@ -180,10 +181,14 @@ public class OutInterfaceService {
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
+
     //分析系统检索接口
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索中国专利著录接口
+     *
+     * @param appNo 申请号
+     * @return 返回接口返回的json数据
      */
     public String getCnBibApi(String appNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -192,14 +197,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getCnBib?appNo=" +appNo)
+                .url(PASUrl + "/api/v2/patentStar/getCnBib?appNo=" + appNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索中国专利摘要附图接口
+     *
+     * @param appNo 申请号
+     * @return 返回接口返回的json数据
      */
     public String getPicture(String appNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -208,14 +216,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getPicture?appNo=" +appNo)
+                .url(PASUrl + "/api/v2/patentStar/getPicture?appNo=" + appNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索中国专利外观图接口
+     *
+     * @param appNo 申请号
+     * @return 返回接口返回的json数据
      */
     public String getWGPicture(String appNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -224,14 +235,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getWGPicture?appNo=" +appNo)
+                .url(PASUrl + "/api/v2/patentStar/getWGPicture?appNo=" + appNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索中国专利法律状态接口
+     *
+     * @param appNo 申请号
+     * @return 返回接口返回的json数据
      */
     public String getCnLegal(String appNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -240,14 +254,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getCnLegal?appNo=" +appNo)
+                .url(PASUrl + "/api/v2/patentStar/getCnLegal?appNo=" + appNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索中国专利pdf全文接口
+     *
+     * @param appNo 申请号
+     * @return 返回接口返回的json数据
      */
     public String getCnPdf(String appNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -256,14 +273,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getCnPdf?appNo=" +appNo)
+                .url(PASUrl + "/api/v2/patentStar/getCnPdf?appNo=" + appNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索中国专利全文文本接口
+     *
+     * @param appNo 申请号
+     * @return 返回接口返回的json数据
      */
     public String getCnFullXml(String appNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -272,14 +292,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getCnFullXml?appNo=" +appNo)
+                .url(PASUrl + "/api/v2/patentStar/getCnFullXml?appNo=" + appNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索世界专利pdf接口
+     *
+     * @param patentNo 公开号
+     * @return 返回接口返回的json数据
      */
     public String getEnPdf(String patentNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -288,14 +311,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getEnPdf?patentNo=" +patentNo)
+                .url(PASUrl + "/api/v2/patentStar/getEnPdf?patentNo=" + patentNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索世界专利著录信息接口
+     *
+     * @param patentNo 公开号
+     * @return 返回接口返回的json数据
      */
     public String getENBib(String patentNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -304,14 +330,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getENBib?patentNo=" +patentNo)
+                .url(PASUrl + "/api/v2/patentStar/getENBib?patentNo=" + patentNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索同族专利接口
+     *
+     * @param patentNo 公开号
+     * @return 返回接口返回的json数据
      */
     public String getFamilyByPubNo(String patentNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -320,14 +349,17 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getFamilyByPubNo?patentNo=" +patentNo)
+                .url(PASUrl + "/api/v2/patentStar/getFamilyByPubNo?patentNo=" + patentNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
     /**
-     * @title 获得
-     * @description 接口来源:PAS
+     * 检索被引用次数接口
+     *
+     * @param patentNo 公开号
+     * @return 返回接口返回的json数据
      */
     public String getCitedNumByPubNo(String patentNo) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
@@ -336,7 +368,7 @@ public class OutInterfaceService {
                 .readTimeout(60, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/patentStar/getCitedNumByPubNo?patentNo=" +patentNo)
+                .url(PASUrl + "/api/v2/patentStar/getCitedNumByPubNo?patentNo=" + patentNo)
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();

+ 33 - 34
src/main/java/com/example/demo/service/QrTaskService.java

@@ -51,8 +51,9 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
     private final QrTaskDetailService qrTaskDetailService;
     private final LoginUtils loginUtils;
     private final WebLoginConfigService webLoginConfigService;
-    private  final CacheUtils cacheUtils;
+    private final CacheUtils cacheUtils;
     private final OutInterfaceService outInterfaceService;
+
     /**
      * 新增任务
      *
@@ -60,13 +61,13 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
      */
     public QrtzTask addQuartzTask(QrtzTaskAddNewDTO qrtzTaskAddNewDTO) {
         log.info("开始处理【新增任务条件】的业务,参数为:{}", qrtzTaskAddNewDTO);
-         Integer webId =   qrtzTaskAddNewDTO.getConfigId();
+        Integer webId = qrtzTaskAddNewDTO.getConfigId();
         PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
-         //根据网站id获得配置
-       WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId,personnelVO.getTenantId());
-       if(webLoginConfig==null){
-           return  null;
-       }
+        //根据网站id获得配置
+        WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());
+        if (webLoginConfig == null) {
+            return null;
+        }
         //DTO数据赋值给任务条件实体类
         QrtzTask qrtzTask = new QrtzTask();
         BeanUtils.copyProperties(qrtzTaskAddNewDTO, qrtzTask);
@@ -82,7 +83,7 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
 
         log.info("数据入任务条件表");
         qrtzTask.insert();
-        //若是普通任务则新增一条任务执行情况
+        //若是定时任务则新增一条任务执行情况
         if (qrtzTask.getTaskType() != 1) {
             QrtzTaskDetail qrtzTaskDetail = new QrtzTaskDetail()
                     .setTaskId(qrtzTask.getId())
@@ -131,14 +132,14 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
         List<QrtzTask> qrtzTaskList = this.list(wrapper);
         for (QrtzTask qrtzTask : qrtzTaskList) {
             //根据任务条件id查找是否有正在进行的任务
-            LambdaQueryWrapper<QrtzTaskDetail> queryWrapper =new LambdaQueryWrapper<>();
-            queryWrapper.eq(QrtzTaskDetail::getTaskId,qrtzTask.getId())
-                    .in(QrtzTaskDetail::getTaskDetailState, Arrays.asList(1,7,8));
-            List<QrtzTaskDetail> qrtzTaskDetails =qrTaskDetailService.list(queryWrapper);
-            if(qrtzTaskDetails.size()==0){
+            LambdaQueryWrapper<QrtzTaskDetail> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(QrtzTaskDetail::getTaskId, qrtzTask.getId())
+                    .in(QrtzTaskDetail::getTaskDetailState, Arrays.asList(1, 7, 8));
+            List<QrtzTaskDetail> qrtzTaskDetails = qrTaskDetailService.list(queryWrapper);
+            if (qrtzTaskDetails.size() == 0) {
                 Boolean flag = this.removeById(qrtzTask.getId());
-                LambdaQueryWrapper<QrtzTaskDetail> deleteWrapper =new LambdaQueryWrapper<>();
-                deleteWrapper.eq(QrtzTaskDetail::getTaskId,qrtzTask.getId());
+                LambdaQueryWrapper<QrtzTaskDetail> deleteWrapper = new LambdaQueryWrapper<>();
+                deleteWrapper.eq(QrtzTaskDetail::getTaskId, qrtzTask.getId());
                 qrTaskDetailService.remove(deleteWrapper);
                 if (!flag) {
                     reIds.add(qrtzTask.getId());
@@ -146,8 +147,7 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
                 if (qrtzTask.getTaskType().equals(1)) {
                     jobService.deleteJob(qrtzTask.getId());
                 }
-            }
-            else {
+            } else {
                 reIds.add(qrtzTask.getId());
             }
 
@@ -177,14 +177,14 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
             queryWrapper.orderByDesc("modified_time");
         }
         Page<QrtzTask> page = this.page(new Page<>(queryPageDTO.getCurrent(), queryPageDTO.getSize()), queryWrapper.orderByDesc("modified_time"));
-       this.setDataList(page.getRecords()) ;
+        this.setDataList(page.getRecords());
         return page;
     }
 
 
     private void setDataList(List<QrtzTask> qrtzTasks) throws IOException {
         //获得创建人的id集合
-        List<Integer> createIds =qrtzTasks.stream().map(QrtzTask::getCreatePersonId).collect(Collectors.toList());
+        List<Integer> createIds = qrtzTasks.stream().map(QrtzTask::getCreatePersonId).collect(Collectors.toList());
         //根据人员Id获得人员信息
         String res1 = outInterfaceService.getPersonnelByIdsFromPCS(createIds);
         JSONObject jsonObject1 = JSONObject.parseObject(res1);
@@ -193,9 +193,9 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
         for (QrtzTask project : qrtzTasks) {
             //装载负责人名
             List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(project.getCreatePersonId())).collect(Collectors.toList());
-                if(mapCre.size()>0){
-                    project.setCreateName(mapCre.get(0).getPersonnelName());
-                }
+            if (mapCre.size() > 0) {
+                project.setCreateName(mapCre.get(0).getPersonnelName());
+            }
         }
 
     }
@@ -212,15 +212,14 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
         if (queryTaskDetailsDTO.getTaskDetailStates() != null && queryTaskDetailsDTO.getTaskDetailStates().size() != 0) {
             queryWrapper.in(QrtzTaskDetail::getTaskDetailState, queryTaskDetailsDTO.getTaskDetailStates());
         }
-        if(queryTaskDetailsDTO.getOrderBy()!=null){
+        if (queryTaskDetailsDTO.getOrderBy() != null) {
             queryTaskDetailsDTO.setOrderBy(this.formatOrder(queryTaskDetailsDTO.getOrderBy()));
-            if(queryTaskDetailsDTO.getOrderBy().equals("state")){
+            if (queryTaskDetailsDTO.getOrderBy().equals("state")) {
                 queryWrapper.last(" order by  FIELD(task_detail_state,1,7,8,0,2,3,4,5,6)");
-            }
-            else {
+            } else {
                 queryWrapper.last(" order by " + queryTaskDetailsDTO.getOrderBy());
-                if(queryTaskDetailsDTO.getOrderType()!=null){
-                    queryWrapper.last(" order by " + queryTaskDetailsDTO.getOrderBy()+" "+queryTaskDetailsDTO.getOrderType());
+                if (queryTaskDetailsDTO.getOrderType() != null) {
+                    queryWrapper.last(" order by " + queryTaskDetailsDTO.getOrderBy() + " " + queryTaskDetailsDTO.getOrderType());
                 }
             }
         }
@@ -229,15 +228,15 @@ public class QrTaskService extends ServiceImpl<QrtzTaskMapper, QrtzTask> {
         return page;
     }
 
-public  String formatOrder(String order){
-        switch (order)
-        { case "createTime":
-            order ="create_time";
-            break;
+    public String formatOrder(String order) {
+        switch (order) {
+            case "createTime":
+                order = "create_time";
+                break;
 
         }
         return order;
-}
+    }
 }
 
 

+ 2 - 2
src/main/java/com/example/demo/service/WebLoginConfigService.java

@@ -50,10 +50,10 @@ public class WebLoginConfigService extends ServiceImpl<WebLoginConfigMapper, Web
         this.saveOrUpdate(config);
     }
 
-    public WebLoginConfig getLoginConfig(Integer webId,Integer tenantId) {
+    public WebLoginConfig getLoginConfig(Integer webId, Integer tenantId) {
         LambdaQueryWrapper<WebLoginConfig> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(WebLoginConfig::getWebId, webId)
-                .eq(WebLoginConfig::getTenantId,tenantId);
+                .eq(WebLoginConfig::getTenantId, tenantId);
         List<WebLoginConfig> configs = this.list(wrapper);
         WebLoginConfig config = new WebLoginConfig();
         if (configs.size() > 0) {

+ 46 - 0
src/main/java/com/example/demo/service/detectInterface/GetCitedNumByPubNoService.java

@@ -0,0 +1,46 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * 监听检索被引用次数接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetCitedNumByPubNoService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索被引用次数接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getCitedNumByPubNo(publicOrAppNo.getPublicNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("被引用次数", json);
+            }
+
+
+        } catch (IOException e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("被引用次数", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 45 - 0
src/main/java/com/example/demo/service/detectInterface/GetCnBibApiService.java

@@ -0,0 +1,45 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 监听检索中国专利著录接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetCnBibApiService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索中国专利著录接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            //调用pas 检索中国专利著录接口
+            String json = outInterfaceService.getCnBibApi(publicOrAppNo.getAppNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("中国专利著录", json);
+            }
+
+
+        } catch (Exception e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("中国专利著录", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 46 - 0
src/main/java/com/example/demo/service/detectInterface/GetCnFullXmlService.java

@@ -0,0 +1,46 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * 监听检索中国专利全文文本接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetCnFullXmlService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索中国专利全文文本接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getCnFullXml(publicOrAppNo.getAppNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("中国专利全文文本", json);
+            }
+
+
+        } catch (IOException e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("中国专利全文文本", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 46 - 0
src/main/java/com/example/demo/service/detectInterface/GetCnLegalService.java

@@ -0,0 +1,46 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * 监听检索中国专利法律状态接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetCnLegalService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索中国专利法律状态接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getCnLegal(publicOrAppNo.getAppNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("中国专利法律状态", json);
+            }
+
+
+        } catch (IOException e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("中国专利法律状态", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 46 - 0
src/main/java/com/example/demo/service/detectInterface/GetCnPdfService.java

@@ -0,0 +1,46 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * 监听检索中国专利pdf全文接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetCnPdfService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索中国专利pdf全文接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getCnPdf(publicOrAppNo.getAppNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("中国专利pdf全文", json);
+            }
+
+
+        } catch (IOException e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("中国专利pdf全文", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 46 - 0
src/main/java/com/example/demo/service/detectInterface/GetEnBibService.java

@@ -0,0 +1,46 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * 监听检索世界专利著录信息接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetEnBibService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索世界专利著录信息接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getENBib(publicOrAppNo.getPublicNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("世界专利著录信息", json);
+            }
+
+
+        } catch (IOException e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("世界专利著录信息", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 46 - 0
src/main/java/com/example/demo/service/detectInterface/GetEnPdfService.java

@@ -0,0 +1,46 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * 监听检索世界专利pdf接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetEnPdfService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索世界专利pdf接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getEnPdf(publicOrAppNo.getPublicNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("世界专利pdf", json);
+            }
+
+
+        } catch (IOException e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("世界专利pdf", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 46 - 0
src/main/java/com/example/demo/service/detectInterface/GetFamilyByPubNoService.java

@@ -0,0 +1,46 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * 监听检索同族专利接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetFamilyByPubNoService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索同族专利接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getFamilyByPubNo(publicOrAppNo.getPublicNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("同族专利", json);
+            }
+
+
+        } catch (IOException e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("同族专利", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 44 - 0
src/main/java/com/example/demo/service/detectInterface/GetPictureService.java

@@ -0,0 +1,44 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 监听检索中国专利摘要附图接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetPictureService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索中国专利摘要附图接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getPicture(publicOrAppNo.getAppNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("中国专利摘要附图", json);
+            }
+
+
+        } catch (Exception e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("中国专利摘要附图", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 46 - 0
src/main/java/com/example/demo/service/detectInterface/GetWGPictureService.java

@@ -0,0 +1,46 @@
+package com.example.demo.service.detectInterface;
+
+import com.example.demo.domain.PublicOrAppNo;
+import com.example.demo.service.DetectInterface;
+import com.example.demo.service.OutInterfaceService;
+import com.example.demo.util.PatentStarEmail;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+
+/**
+ * 监听检索中国专利外观图接口异常发送邮件
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@Service
+@RequiredArgsConstructor
+public class GetWGPictureService implements DetectInterface {
+    private final OutInterfaceService outInterfaceService;
+    private final PatentStarEmail patentStarEmail;
+
+    /**
+     * 调用检索中国专利外观图接口方法
+     *
+     * @param publicOrAppNo 公开号或申请号对象
+     */
+    @Override
+    public void executeDetectInterface(PublicOrAppNo publicOrAppNo) {
+        try {
+            String json = outInterfaceService.getWGPicture(publicOrAppNo.getAppNo());
+            if (json.contains("请求参数") && json.contains("不合法") || json.equals("{}") || json.trim().equals("")) {
+                //发送邮件通知
+                patentStarEmail.sendEmail("中国专利外观图", json);
+            }
+
+
+        } catch (IOException e) {
+            //发送邮件通知
+            patentStarEmail.sendEmail("中国专利外观图", "调用接口失败,抛出异常");
+        }
+
+    }
+
+}

+ 37 - 0
src/main/java/com/example/demo/util/PatentStarEmail.java

@@ -0,0 +1,37 @@
+package com.example.demo.util;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 监听检索专利之星接口异常发送邮件类
+ *
+ * @Author chenyu
+ * @Date 2023/7/24
+ */
+@RequiredArgsConstructor
+@Component
+public class PatentStarEmail implements Serializable {
+    private final MessageUtils mailUtils;
+
+    /**
+     * 发送邮件通知
+     */
+    public void sendEmail(String jieKouName, String json) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("title", "专利之星接口调用异常通知");
+        map.put("template", "mail/emailPatentStarException.html");
+        map.put("value1", jieKouName + "接口异常获取到的信息为:" + json);
+        map.put("img", "/logo.png");
+        map.put("email", "chendayuya@163.com");
+        map.put("value2", "陈宇");
+
+        mailUtils.sendEmailMessage(map);
+    }
+
+}

+ 2 - 1
src/main/resources/application-dev.yml

@@ -67,4 +67,5 @@ mybatis-plus:
 logging:
   level:
     com.example.demo: debug
-driverUrl: /opt/google/chrome/chromedriver
+driverUrl: /opt/google/chrome/chromedriver
+queueName: emailProd.queue