Forráskód Böngészése

修改bug,专利号导入还有导入时与产品关联

chendayu 2 éve
szülő
commit
50cdd13378

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

@@ -19,6 +19,10 @@ public class ProjectImportPatentVO {
      * 报告id
      */
     private Integer reportId;
+    /**
+     * 产品id
+     */
+    private Integer productId;
 
     private Integer asCompare;
     /**

+ 1 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java

@@ -13,6 +13,7 @@ import java.util.List;
  * @date 2022/7/1
  * @description 用于批量导入数据的工具类
  */
+@Accessors(chain = true)
 @Data
 public class UploadParamsVO {
     /**

+ 12 - 16
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataStar.java

@@ -1,6 +1,5 @@
 package cn.cslg.pas.service.upLoadPatent;
 
-import cn.cslg.pas.common.model.dto.PatentDTO;
 import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.common.model.outApi.PatentStarListDto;
 import cn.cslg.pas.common.model.vo.KeyValueVO;
@@ -10,11 +9,11 @@ import cn.cslg.pas.common.utils.FileUtils;
 import cn.cslg.pas.common.utils.RemoveHtmlTagsUtils;
 import cn.cslg.pas.common.utils.ThrowException;
 import cn.cslg.pas.domain.*;
-import cn.cslg.pas.domain.asso.TaskCondition;
+import cn.cslg.pas.service.OutInterfaceService;
+import cn.cslg.pas.service.PatentService;
 import cn.cslg.pas.service.TaskService;
 import cn.cslg.pas.service.UploadPatentBatchService;
 import cn.cslg.pas.service.asso.TaskConditionService;
-import cn.cslg.pas.service.getPatentStarPart.GetPatentStarPartService;
 import cn.cslg.pas.service.outApi.PatentStarApiService;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson2.JSONObject;
@@ -29,14 +28,12 @@ import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
 import java.io.*;
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.stream.Collectors;
 
 /**
  * 专利之星类型任务解析获取专利类
@@ -55,6 +52,9 @@ public class ExcutePatentDataStar implements IExcutePatentData {
     private final TaskService taskService;
     private final TaskConditionService taskConditionService;
     private final QuestionRecordService questionRecordService;
+    private final PatentService patentService;
+    private final UploadPatentToDBService uploadPatentToDBService;
+    private final OutInterfaceService outInterfaceService;
     private Integer pTaskId = 0;
     private Integer pTaskStatus = 0;
 
@@ -313,17 +313,17 @@ public class ExcutePatentDataStar implements IExcutePatentData {
                 }
             }
 
-            //下载isAdd中的专利 / 下载多个专利号导入接口的专利
+            //下载 isAdd中的专利/多个专利号导入的专利
             if (isAddPatentNos != null && isAddPatentNos.size() > 0) {
-                //判断isAdd中的多个专利号或申请号,即判断是检索页面手动勾选的多个专利下载/还是多个专利号导入的下载任务
+                String patentNoCondition = StringUtils.join(isAddPatentNos, " OR ");
+                //若是多个专利号导入的下载
                 if (task.getIsAddType() != null && task.getIsAddType().equals(2)) {
-                    //若是多个专利号导入的下载
-                    String patentNoCondition = StringUtils.join(isAddPatentNos, " OR ");
                     conditions = "AN=(" + patentNoCondition + ") OR PN=(" + patentNoCondition + ") OR GN=(" + patentNoCondition + ")";
                     downLoadIsAddPatentNos(isAddPatentNos, task, orderBy, orderByType, dbType, cells, conditions);
-                } else {
                     //若是检索页面手动勾选的多个专利的下载
-                    downLoadIsAddPatentNos(isAddPatentNos, task, orderBy, orderByType, dbType, cells, null);
+                } else {
+                    conditions = "AN=(" + patentNoCondition + ")";
+                    downLoadIsAddPatentNos(isAddPatentNos, task, orderBy, orderByType, dbType, cells, conditions);
                 }
             }
 
@@ -632,7 +632,7 @@ public class ExcutePatentDataStar implements IExcutePatentData {
         try {
             if (starPatent.getPatentNo() != null && !starPatent.getPatentNo().equals("")) {
                 String familyPatentNoStr = patentStarApiService.getFamilyByPubNoApi(usedPatentNo);
-                if (!familyPatentNoStr.equals("no data") && !familyPatentNoStr.equals("{}")) {
+                if (!familyPatentNoStr.equals("no data") && !familyPatentNoStr.equals("{}") && !familyPatentNoStr.trim().equals("")) {
                     FamilyPatentNo familyPatentNo = JSON.parseObject(familyPatentNoStr, FamilyPatentNo.class);
                     List<String> familyPatentNos = Arrays.asList(familyPatentNo.getFamilyinfo().split(";"));
                     uploadParamsVO.setSimpleFamily(familyPatentNos);
@@ -927,10 +927,6 @@ public class ExcutePatentDataStar implements IExcutePatentData {
      * @param isAddPatentNos 起止条数以外,用户手动勾选的多个专利号
      */
     public void downLoadIsAddPatentNos(List<String> isAddPatentNos, Task task, String orderBy, String orderByType, String dbType, List<String> cells, String conditions) throws IOException {
-        if (conditions == null) {
-            conditions = "AN=(" + StringUtils.join(isAddPatentNos, " OR ") + ")";
-        }
-
         int pageNum = 1;
         for (int i = 0; i < isAddPatentNos.size(); i += 50) {
             PatentStarListDto patentStarListDto = new PatentStarListDto()

+ 38 - 15
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java

@@ -6,12 +6,14 @@ import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.JsonUtils;
 import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.domain.*;
+import cn.cslg.pas.domain.asso.AssoProductPatent;
 import cn.cslg.pas.domain.asso.TaskCondition;
 import cn.cslg.pas.mapper.QuestionRecordMapper;
 import cn.cslg.pas.service.OutInterfaceService;
 import cn.cslg.pas.service.PatentInstructionService;
 import cn.cslg.pas.service.TaskService;
 import cn.cslg.pas.service.UploadPatentBatchService;
+import cn.cslg.pas.service.asso.AssoProductPatentService;
 import cn.cslg.pas.service.asso.TaskConditionService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
@@ -19,7 +21,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
@@ -44,6 +50,7 @@ public class PantentQueueService {
     private final PatentInstructionService patentInstructionService;
     private final OutInterfaceService outInterfaceService;
     private final QuestionRecordService questionRecordService;
+    private final AssoProductPatentService assoProductPatentService;
     private final QuestionRecordMapper questionRecordMapper;
     private final List<Integer> taskQueueList = new ArrayList<>();
     private final List<PQueueData> setPatentImageQueueList = new ArrayList<>();
@@ -382,19 +389,6 @@ public class PantentQueueService {
                     queueData = patentZhuluQueueList.remove(0);
                     //著录项目入库
                     uploadPatentToDBService.uploadPatentZhulu(queueData.getUploadParamsVO());
-                    //判断是与专题库关联还是与报告关联
-                    if (queueData.getTask().getProjectId() != null && !queueData.getTask().getProjectId().equals(0)) {
-                        //与专题库关联入库
-                        uploadPatentToDBService.uploadAssoThemaPat(queueData.getUploadParamsVO(), queueData.getTask().getProjectId());
-                    } else if (queueData.getTask().getReportId() != null && !queueData.getTask().getReportId().equals(0)) {
-                        //与报告关联入库(调用报告系统接口)
-                        ImportTaskPatent importTaskPatent = new ImportTaskPatent();
-                        importTaskPatent.setImportTaskId(queueData.getTask().getId());
-                        importTaskPatent.setPatentNo(queueData.getUploadParamsVO().getPatent().getPatentNo());
-                        importTaskPatent.setReportId(queueData.getTask().getReportId());
-                        importTaskPatent.insert();
-                        outInterfaceService.importAssoReportPatentNo(queueData.getTask().getReportId(), queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getPatent().getName(), queueData.getTask().getAsCompare());
-                    }
                     if (queueData.getTask().getPramJson() != null && !queueData.getTask().getPramJson().equals("")) {
                         ProjectImportPatentVO projectImportPatentVO = JsonUtils.jsonToPojo(queueData.getTask().getPramJson(), ProjectImportPatentVO.class);
                         //自定义字段标引与专利关联入库
@@ -563,7 +557,7 @@ public class PantentQueueService {
             String currentPatent = task.getId() + "|" + queueData.getUploadParamsVO().getPatent().getId();
             Integer num = patentIdMap.get(currentPatent);
             int needNum = 3;  //临界默认设为4(即Excel导入任务默认使用5个消费者)
-            if (task.getType().equals(3) || task.getType().equals(4)) {  //若是网站导入任务,则临界默认设为下载字段类型数量 - 1
+            if (task.getType().equals(3) || task.getType().equals(4) || task.getType().equals(5)) {  //若是网站导入任务,则临界默认设为下载字段类型数量 - 1
                 needNum = task.getConfigCellsNum() - 1;
             }
             if (num == null && needNum > 0) {
@@ -578,6 +572,35 @@ public class PantentQueueService {
                     taskService.updateById(task);
                 }
                 patentIdMap.remove(currentPatent);
+
+                //与专题库/报告/产品关联
+                if (queueData.getTask().getProjectId() != null && !queueData.getTask().getProjectId().equals(0)) {
+                    //与专题库关联入库
+                    uploadPatentToDBService.uploadAssoThemaPat(queueData.getUploadParamsVO(), queueData.getTask().getProjectId());
+                } else if (queueData.getTask().getReportId() != null && !queueData.getTask().getReportId().equals(0)) {
+                    //与报告关联入库(调用报告系统接口)
+                    ImportTaskPatent importTaskPatent = new ImportTaskPatent();
+                    importTaskPatent.setImportTaskId(queueData.getTask().getId());
+                    importTaskPatent.setPatentNo(queueData.getUploadParamsVO().getPatent().getPatentNo());
+                    importTaskPatent.setReportId(queueData.getTask().getReportId());
+                    importTaskPatent.insert();
+                    try {
+                        outInterfaceService.importAssoReportPatentNo(queueData.getTask().getReportId(), queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getPatent().getName(), queueData.getTask().getAsCompare());
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                } else if (queueData.getTask().getProductId() != null) {
+                    //与产品关联入库(调用报告系统接口)
+                    List<AssoProductPatent> assoProductPatents = assoProductPatentService.list(new LambdaQueryWrapper<AssoProductPatent>().eq(AssoProductPatent::getProductId, queueData.getTask().getProductId()).eq(AssoProductPatent::getPatentNo, queueData.getUploadParamsVO().getPatent().getPatentNo()));
+                    if (assoProductPatents == null || assoProductPatents.size() == 0) {
+                        AssoProductPatent assoProductPatent = new AssoProductPatent()
+                                .setProductId(queueData.getTask().getProductId())
+                                .setPatentNo(queueData.getUploadParamsVO().getPatent().getPatentNo());
+                        assoProductPatentService.save(assoProductPatent);
+                    }
+                }
+
+
                 //任务表更新 完成条数+1
                 task.setSuccessNum(task.getSuccessNum() + 1);
                 //根据专利号查询专利是否有导入失败记录

+ 16 - 23
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadTaskService.java

@@ -6,12 +6,16 @@ import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.common.model.outApi.PatentStarListDto;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
-import cn.cslg.pas.domain.*;
+import cn.cslg.pas.domain.Project;
+import cn.cslg.pas.domain.SerachBiblioData;
+import cn.cslg.pas.domain.WebLoginConfig;
 import cn.cslg.pas.domain.asso.TaskCondition;
-import cn.cslg.pas.service.*;
+import cn.cslg.pas.service.PatentService;
+import cn.cslg.pas.service.ProjectService;
+import cn.cslg.pas.service.TaskService;
+import cn.cslg.pas.service.WebLoginConfigService;
 import cn.cslg.pas.service.asso.TaskConditionService;
 import cn.cslg.pas.service.outApi.PatentStarApiService;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
@@ -23,7 +27,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
 
 /**
  * 导入专利任务的业务层
@@ -116,6 +119,11 @@ public class UploadTaskService {
             total = taskAddNewDTO.getIsAddPatentNos().size();
         }
 
+        //如果是多个专利号导入,总数量改为实际检索到的数量
+        if (taskAddNewDTO.getTaskType2().equals(5)) {
+            total = (Integer) resultMap.get("total");
+        }
+
         //任务条件表("task_condition")新增数据
         TaskCondition taskCondition = new TaskCondition();
         taskCondition
@@ -210,7 +218,7 @@ public class UploadTaskService {
     }
 
     public void addPatentNoTask(TaskAddNewDTO taskAddNewDTO) throws IOException {
-        log.info("开始处理【根据专利号导入专利任务】的业务,参数为:{}", taskAddNewDTO);
+        log.info("开始处理【根据专利号导入专利】的业务,参数为:{}", taskAddNewDTO);
 
         //检查合法性
         if (taskAddNewDTO == null || taskAddNewDTO.getConditions() == null || taskAddNewDTO.getConditions().trim().equals("")) {
@@ -222,12 +230,10 @@ public class UploadTaskService {
 
         //根据专利号生成检索式
         String condition = this.setPatentNosToCondition(taskAddNewDTO.getConditions());
-        if (condition == null) {
-            ThrowException.throwXiaoShiException("尝试导入的专利号在本系统中均已存在");
-        }
         taskAddNewDTO
                 .setProjectId(taskAddNewDTO.getProjectId())
                 .setReportId(taskAddNewDTO.getReportId())
+                .setProductId(taskAddNewDTO.getProductId())
                 .setConditions(condition)
                 .setEndNumber(0)
                 .setIsAddPatentNos(Arrays.asList(isAddPatentNosStr.split("[,|,]")))
@@ -248,28 +254,15 @@ public class UploadTaskService {
             this.addPatentStarTask(taskAddNewDTO);
         }
 
-
     }
 
     public String setPatentNosToCondition(String patentNosStr) {
-        String[] patentNo = patentNosStr.split("[,|,]");
-        List<String> patentNoList = Arrays.asList(patentNo);
-        ArrayList<String> patentNos = new ArrayList<>(patentNoList);
+        String[] patentNosArr = patentNosStr.split("[,|,]");
+        ArrayList<String> patentNos = new ArrayList<>(Arrays.asList(patentNosArr));
         //判断若用户输入的多个专利号字符长度超过了一个专利号长度,而拆分后专利号集合只有一个元素,则定义为用户输入的格式不正确
         if (patentNosStr.length() > 24 && patentNos.size() == 1) {
             ThrowException.throwXiaoShiException("请按照格式要求正确输入专利号(注意:不允许出现空格)");
         }
-        //根据专利号从本数据库中查找专利
-        LambdaQueryWrapper<Patent> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.select(Patent::getPatentNo);
-        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 ");
         String conditions = "AN=(" + patentNoCondition + ") OR PN=(" + patentNoCondition + ") OR GN=(" + patentNoCondition + ")";