chendayu 2 years ago
parent
commit
678c89b936

+ 4 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectImportVO.java

@@ -13,4 +13,8 @@ public class ProjectImportVO extends BaseVO {
     private String patentNo;
     private List<Integer> createIds;
     private Integer tenantId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
 }

+ 6 - 4
PAS/src/main/java/cn/cslg/pas/common/model/vo/QueryTaskVO.java

@@ -85,10 +85,6 @@ public class QueryTaskVO implements Serializable {
      */
     private Integer taskConditionId;
     /**
-     * 任务名称
-     */
-    private String taskName;
-    /**
      * 任务类型1 (0普通任务 1定时任务)
      */
     private Integer taskType;
@@ -143,4 +139,10 @@ public class QueryTaskVO implements Serializable {
      */
     private String createName;
 
+    //以下属性是两张表都没有的(值为:任务表使用的oldName、任务条件表由手动装载生成)
+    /**
+     * 任务名称
+     */
+    private String taskName;
+
 }

+ 15 - 8
PAS/src/main/java/cn/cslg/pas/controller/ProjectImportController.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.controller;
 import cn.cslg.pas.common.core.annotation.Permission;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.model.PersonnelVO;
+import cn.cslg.pas.common.model.dto.TaskAddNewDTO;
 import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
 import cn.cslg.pas.common.model.vo.ProjectImportVO;
 import cn.cslg.pas.common.model.vo.TaskParams;
@@ -118,13 +119,19 @@ public class ProjectImportController {
         return Response.success(false);
     }
 
-    @PostMapping("importByNos")
-    @Operation(summary = "根据专利号导入专利到专题库")
-    public String importByNos(@RequestBody ProjectImportVO patentDTO) {
-        List<String> notQuery = projectImportService.importByNos(patentDTO);
-        if (notQuery.size() > 0) {
-            return Response.successBut(notQuery);
-        }
-        return Response.success(true);
+    @PostMapping("/importByNos")
+    @Operation(summary = "根据专利号导入专利到专题库或报告")
+    public String importByNos(@RequestBody ProjectImportVO patentDTO) throws IOException {
+//        List<String> notQuery = projectImportService.importByNos(patentDTO);
+//        if (notQuery.size() > 0) {
+//            return Response.successBut(notQuery);
+//        }
+//        return Response.success(true);
+        TaskAddNewDTO taskAddNewDTO = new TaskAddNewDTO()
+                .setProjectId(patentDTO.getProjectId())
+                .setReportId(patentDTO.getReportId())
+                .setConditions(patentDTO.getPatentNo());
+        uploadTaskService.addPatentNoTask(taskAddNewDTO);
+        return Response.success();
     }
 }

+ 6 - 6
PAS/src/main/java/cn/cslg/pas/controller/TaskController.java

@@ -61,12 +61,12 @@ public class TaskController {
         return Response.success("添加任务完成");
     }
 
-    @PostMapping("/addPatentNoTask")
-    @Operation(summary = "根据专利号导入专利任务")
-    public String addPatentNoTask(@RequestBody TaskAddNewDTO taskAddNewDTO) throws IOException {
-        uploadTaskService.addPatentNoTask(taskAddNewDTO);
-        return Response.success();
-    }
+//    @PostMapping("/addPatentNoTask")
+//    @Operation(summary = "根据专利号导入专利任务")
+//    public String addPatentNoTask(@RequestBody TaskAddNewDTO taskAddNewDTO) throws IOException {
+//        uploadTaskService.addPatentNoTask(taskAddNewDTO);
+//        return Response.success();
+//    }
 
     @PostMapping("/queryTasks")
     @Operation(summary = "查询任务列表")

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

@@ -208,7 +208,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         task.setTaskType(taskAddNewDTO.getTaskType());
 
         //数据入任务表
-        log.info("任务表(os_task)新增数据");
+        log.info("任务表新增数据");
         task.insert();
         return task.getId();
     }
@@ -368,15 +368,15 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
             return;
         }
 
-        //检查任务状态是否为已完成(非定时任务),若是则提示用户"取消任务失败,已完成的任务无法取消"
-        if (task.getStatus().equals(2) && !task.getTaskType().equals(1)) {
+        //检查任务状态是否为已完成(普通任务),若是则提示用户"取消任务失败,已完成的任务无法取消"
+        if (task.getStatus().equals(2) && task.getTaskType().equals(0)) {
             ThrowException.throwXiaoShiException("取消任务失败,已完成的任务无法取消");
         }
 
-        //若该任务是定时任务(即本次请求目的是取消该定时任务),则要删除job中的该定时任务条件
-        if (task.getType().equals(3) || task.getType().equals(4) && task.getTaskType().equals(1)) {
+        //若是定时任务(即本次请求目的是取消该定时任务),删除job中的该定时任务条件
+        if (task.getTaskType().equals(1)) {
             //删除job中的该定时任务条件
-            jobService.deleteJob(task.getId());
+            jobService.deleteJob(task.getTaskConditionId());
         }
 
         //若该任务处于进行中

+ 30 - 4
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataStar.java

@@ -25,6 +25,10 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
 import java.io.*;
 import java.net.URL;
+import java.sql.Timestamp;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -227,13 +231,16 @@ public class ExcutePatentDataStar implements IExcutePatentData {
         uploadParamsVO.getPatent().setApplicationNo(starPatent.getApplicationNo());
         //装载申请日
         if (starPatent.getApplicationDate() != null && !starPatent.getApplicationDate().equals("")) {
-            uploadParamsVO.getPatent().setApplicationDate(Integer.parseInt(starPatent.getApplicationDate()));
+            int timeStamp = stringDateToTimeStamp(starPatent.getApplicationDate());
+            uploadParamsVO.getPatent().setApplicationDate(timeStamp);
         }
         //装载公开号
         uploadParamsVO.getPatent().setPublicNo(starPatent.getPublicNo());
         //装载公开日
-        if (starPatent.getPublicDate() != null && !starPatent.getPublicDate().equals(""))
-            uploadParamsVO.getPatent().setPublicDate(Integer.parseInt(starPatent.getPublicDate()));
+        if (starPatent.getPublicDate() != null && !starPatent.getPublicDate().equals("")) {
+            int timeStamp = stringDateToTimeStamp(starPatent.getPublicDate());
+            uploadParamsVO.getPatent().setPublicDate(timeStamp);
+        }
         //装载申请人
         if (starPatent.getApplicantStr() != null && !starPatent.getApplicantStr().equals("")) {
             uploadParamsVO.setPatentApplicantOriginalName(Arrays.asList(starPatent.getApplicantStr().split(";")));
@@ -276,7 +283,7 @@ public class ExcutePatentDataStar implements IExcutePatentData {
         }
         //调用中国专利著录接口返回的专利相关数据最外层是一个集合"[]",但是集合中只有一个对象"{}",以下方式处理
         String chinaPatentZhuLuStr = patentStarApiService.getCnBibApi(appNo);
-        if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("")) {
+        if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}")) {
             List<ChinaPatentZhuLu> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, ChinaPatentZhuLu.class);
             ChinaPatentZhuLu chinaPatentZhuLu = chinaPatentZhuLus.get(0);
 
@@ -647,6 +654,25 @@ public class ExcutePatentDataStar implements IExcutePatentData {
 
     }
 
+    /**
+     * 专利之星返回日期格式为字符串 yyyyMMdd,如 "20230713",本方法将其转成10位数字时间戳
+     *
+     * @param dateStr yyyyMMdd格式字符串日期
+     * @return 返回10位数字时间戳
+     */
+    public int stringDateToTimeStamp(String dateStr) {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+        Date date;
+        try {
+            date = dateFormat.parse(dateStr);
+        } catch (ParseException e) {
+            //日期格式转换异常
+            e.printStackTrace();
+            return Integer.parseInt(dateStr);
+        }
+        long timeStamp = date.getTime() / 1000;
+        return (int) timeStamp;
+    }
 
     public void setTaskStatus(Integer taskId, Integer taskStatus) {
         this.pTaskId = taskId;

+ 14 - 17
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadTaskService.java

@@ -125,7 +125,7 @@ public class UploadTaskService {
     public TaskCondition addPatentStarTask(TaskAddNewDTO taskAddNewDTO) throws IOException {
         log.info("开始处理【新增专利之星下载接口导入专利】的业务,参数为:{}", taskAddNewDTO);
 
-        //检查任务合法性1(判断要导入的专题库或报告是否存在)
+        //检查任务合法性1(检查要导入的专题库或报告是否存在)
         if (taskAddNewDTO.getProjectId() != null) {
             Project project = projectService.getById(taskAddNewDTO.getProjectId());
             if (project == null) {
@@ -158,7 +158,7 @@ public class UploadTaskService {
                 .setDBType(taskAddNewDTO.getDBType());
         Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
         if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-            ThrowException.throwXiaoShiException("未检索到相关专利,请尝试更改检索式或检索条件信息");
+            ThrowException.throwXiaoShiException("未检索到相关专利");
         }
 
 
@@ -226,8 +226,9 @@ public class UploadTaskService {
         log.info("开始处理【根据专利号导入专利任务】的业务,参数为:{}", taskAddNewDTO);
 
         //检查合法性
-        if (taskAddNewDTO == null || taskAddNewDTO.getConditions() == null) {
+        if (taskAddNewDTO == null || taskAddNewDTO.getConditions() == null || taskAddNewDTO.getConditions().trim().equals("")) {
             ThrowException.throwXiaoShiException("请输入专利号");
+            return;
         }
 
         String isAddPatentNosStr = taskAddNewDTO.getConditions();
@@ -235,10 +236,12 @@ public class UploadTaskService {
         //根据专利号生成检索式
         String condition = this.setPatentNosToCondition(taskAddNewDTO.getConditions());
         if (condition == null) {
-            ThrowException.throwXiaoShiException("本批专利都已存在");
+            ThrowException.throwXiaoShiException("尝试导入的专利号在本系统中均已存在");
         }
 
         taskAddNewDTO
+                .setProjectId(taskAddNewDTO.getProjectId())
+                .setReportId(taskAddNewDTO.getReportId())
                 .setConditions(condition)
                 .setEndNumber(0)
                 .setIsAddPatentNos(Arrays.asList(isAddPatentNosStr.split("[,|,]")))
@@ -247,12 +250,11 @@ public class UploadTaskService {
                 .setOrderByType("DESC")
                 .setConfigCells(Arrays.asList("1", "2", "3", "4", "6"))
                 .setConfigId(2)
-                .setReportId(taskAddNewDTO.getReportId())
                 .setTaskName("多个专利号导入方式任务")
                 .setTaskType(0)
                 .setTaskType2(4);
 
-        //判断网站类型
+        //根据下载的网站类型新增任务
         if (taskAddNewDTO.getTaskType2().equals(3)) {
             this.addEpoTask(taskAddNewDTO);
         } else if (taskAddNewDTO.getTaskType2().equals(4)) {
@@ -265,29 +267,24 @@ public class UploadTaskService {
     public String setPatentNosToCondition(String patentNosStr) {
         String[] patentNo = patentNosStr.split("[,|,]");
         List<String> patentNos = Arrays.asList(patentNo);
-        if (patentNos.size() == 0) {
-            ThrowException.throwXiaoShiException("请按照格式要求正确输入专利号");
+        //判断若用户输入的多个专利号字符长度超过了一个专利号长度,而拆分后专利号集合只有一个元素,则定义为用户输入的格式不正确
+        if (patentNosStr.length() > 24 && patentNos.size() == 1) {
+            ThrowException.throwXiaoShiException("请按照格式要求正确输入专利号(注意:不允许出现空格)");
         }
         //根据专利号从本数据库中查找专利
         LambdaQueryWrapper<Patent> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.in(Patent::getPatentNo, patentNos);
         Function<Object, String> f = (o -> o.toString());
         List<String> dbPatentNos = patentService.listObjs(queryWrapper, f);
-        //去除掉所有查询到的专利,若去除后没有专利了则表示所有这批专利都已存在数据库中
+        //去除所有查到的专利,若没有剩余则表示要检索的这批专利在本系统数据库中都已存在
         patentNos.removeAll(dbPatentNos);
         if (patentNos.size() == 0) {
             return null;
         }
         //将本系统不包含的专利拼接成条件
         String patentNoCondition = StringUtils.join(patentNos, " OR ");
-        StringBuilder builder = new StringBuilder();
-        builder.append("(PN=(")
-                .append(patentNoCondition)
-                .append(")")
-                .append(" OR GN=(")
-                .append(patentNoCondition)
-                .append("))");
-        return builder + "";
+        String conditions = "PN=(" + patentNoCondition + ") OR GN=(" + patentNoCondition + ")";
+        return conditions;
     }
 
 }