chendayu 2 роки тому
батько
коміт
48a87d2025

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

@@ -487,7 +487,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
      * 暂停任务
      *
      * @param taskId 任务id
-     * @return
+     * @return 返回任务状态4,已暂停
      */
     @Override
     public Integer pauseTask(Integer taskId) throws InterruptedException {
@@ -516,7 +516,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
             ThrowException.throwXiaoShiException("暂停失败,服务器忙请稍后再试");
         }
 
-        //将生产者生产专利中的公共任务状态改为暂停
+        //将检索生产专利时的公共任务状态改为暂停(若还在检索生产,则会结束)
         if (task.getType() == 1) {  //Excel导入
             excutePatentDataExcel.setTaskStatus(taskId, 4);
         } else if (task.getType() == 3) {  //欧专局
@@ -525,15 +525,14 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
             excutePatentDataStar.setTaskStatus(taskId, 4);
         }
 
-        //若是网站导入任务,则还要将专利各部分装载线程队列中该任务的专利清空
+        //若是网站导入任务,则还要将专利各部分装载线程队列中该任务元素清空
         if (task.getType().equals(3) || task.getType().equals(4)) {
             //等上半秒(上述代码虽然使得生产暂停,但是生产暂停前正在存入生产队列的过程中,等2秒使得这些放入消费者队列后再清空消费者)
-            //Thread.sleep(500);
             pantentQueueService.setQueueRemoveTasks(taskId);
         }
 
         //等上一秒(上述代码虽然使得生产暂停,但是生产暂停前已生产的专利正在存入消费者队列的过程中,等2秒使得这些放入消费者队列后再清空消费者)
-        //Thread.sleep(1000);
+        Thread.sleep(1500);
         //将消费者的专利队列中所有该任务的专利剔除
         pantentQueueService.consumerQueueRemoveTasks(taskId);
 

+ 8 - 11
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataStar.java

@@ -227,6 +227,9 @@ public class ExcutePatentDataStar implements IExcutePatentData {
 
             //如果完成数量大于0,则当前下载任务为暂停后的继续下载,则开始位置更新
             if (successNum > 0) {
+                if (startNumber == null) {  //多个专利号导入任务没有startNumber这些值
+                    startNumber = 0;
+                }
                 startNumber += successNum;
             }
 
@@ -310,22 +313,13 @@ public class ExcutePatentDataStar implements IExcutePatentData {
                 }
             }
 
-            //若是暂停后继续的任务,若 successNum > startToEndNum,即已经下载完了起止条数中的专利
-            int fromIndex = 0;
-            if (successNum > 0 && successNum > startToEndNum) {
-                fromIndex = successNum - startToEndNum;
-            }
             //下载isAdd中的专利 / 下载多个专利号导入接口的专利 ↓
             if (isAddPatentNos != null && isAddPatentNos.size() > 0) {
-                if (fromIndex > 0 && fromIndex < isAddPatentNos.size() - 1) {
-                    isAddPatentNos = isAddPatentNos.subList(fromIndex, isAddPatentNos.size());
-                } else if (fromIndex == isAddPatentNos.size() - 1) {
-                    isAddPatentNos = Arrays.asList(isAddPatentNos.get(isAddPatentNos.size() - 1));
-                }
-
                 //判断isAdd中的多个专利号或申请号,即判断是检索页面手动勾选的多个专利下载/还是多个专利号导入的下载任务
                 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 {
                     //若是检索页面手动勾选的多个专利的下载
@@ -981,12 +975,14 @@ public class ExcutePatentDataStar implements IExcutePatentData {
             }
 
             List<StarPatentVO> starPatents = (List<StarPatentVO>) resultMap.get("records");
+
             //遍历这一页的专利
             for (StarPatentVO starPatent : starPatents) {
                 //判断若任务状态为已暂停,则结束生产
                 if (pTaskId.equals(task.getId()) && pTaskStatus == 4) {
                     return;
                 }
+
                 try {
                     UploadParamsVO uploadParamsVO = new UploadParamsVO();
                     Patent patent = new Patent();
@@ -1024,6 +1020,7 @@ public class ExcutePatentDataStar implements IExcutePatentData {
                 }
 
             }
+
         }
 
     }

+ 27 - 9
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 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.PQueueData;
 import cn.cslg.pas.domain.QuestionRecord;
 import cn.cslg.pas.domain.QueueData;
@@ -593,6 +594,22 @@ public class PantentQueueService {
                 updateTask.setDefaultNum(task.getDefaultNum());
                 updateTask.setTrueSuccessNum(task.getSuccessNum() - updateTask.getDefaultNum());
                 taskService.updateById(updateTask);
+
+                //任务条件表更新isAddPatentNos
+                if (task.getIsAddPatentNos() != null && task.getIsAddPatentNos().size() > 0) {
+                    ArrayList<String> updateIsAddPatentNos = new ArrayList<>(task.getIsAddPatentNos());
+                    updateIsAddPatentNos.removeIf(item -> item.equals(queueData.getUploadParamsVO().getPatent().getPatentNo()));
+                    updateIsAddPatentNos.removeIf(item -> item.equals(queueData.getUploadParamsVO().getPatent().getApplicationNo()));
+
+                    TaskCondition taskCondition = new TaskCondition()
+                            .setId(task.getTaskConditionId())
+                            .setIsAddPatentNos(StringUtils.join(updateIsAddPatentNos, ","));
+                    taskConditionService.updateById(taskCondition);
+
+                    task.setIsAddPatentNos(updateIsAddPatentNos);
+
+                }
+
                 long percentage = (long) Math.floor((task.getSuccessNum() + 0D) / total * 100D);
                 //当全部完成时
                 if (task.getSuccessNum().equals(total)) {
@@ -752,7 +769,7 @@ public class PantentQueueService {
      * @param taskId 任务id
      */
     public void setQueueRemoveTasks(Integer taskId) {
-        //任务暂停时清除生产者队列中已有的该任务的所有专利
+        //任务暂停时清除生产者队列中该任务元素
         this.setPatentZhuluQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
         this.setPatentRightQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
         this.setPatentInstructionTextQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
@@ -773,14 +790,15 @@ public class PantentQueueService {
         this.patentInstructionPDFQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         this.patentImageQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         //任务暂停时清除 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);
-            }
-        }
+//        Iterator<String> iterator = this.patentIdMap.keySet().iterator();
+        this.patentIdMap.keySet().removeIf(item -> item.contains(taskId + "|"));
+//        while (iterator.hasNext()) {
+//            String key = iterator.next();
+//            if (key.contains(taskId + "|")) {
+//                iterator.remove();
+//                this.patentIdMap.remove(key);
+//            }
+//        }
 
     }
 

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

@@ -231,7 +231,7 @@ public class UploadTaskService {
                 .setEndNumber(0)
                 .setIsAddPatentNos(Arrays.asList(isAddPatentNosStr.split("[,|,]")))
                 .setDBType("CN")
-                .setOrderBy("ID")
+                .setOrderBy("AD")
                 .setOrderByType("DESC")
                 .setConfigCells(Arrays.asList("1", "2", "3", "4", "6"))
                 .setConfigId(2)