فهرست منبع

实时推代码

chendayu 2 سال پیش
والد
کامیت
f3ff251657

+ 38 - 8
PAS/src/main/java/cn/cslg/pas/common/model/dto/QrtzTaskAddNewDTO.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.common.model.dto;
 
 import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -16,6 +17,38 @@ import java.util.List;
 @Data
 public class QrtzTaskAddNewDTO {
     /**
+     * 检索信息
+     */
+    private String conditions;
+    /**
+     * 排序字段:“AD”,“PD”,“GD”,“ID”
+     */
+    private String orderBy;
+    /**
+     * 排序方式:“ASC”,“DESC”
+     */
+    private String orderByType;
+    /**
+     * 需要检索的数据库类型("CN"/"WD")
+     */
+    private String DBType;
+    /**
+     * 下载起始条数位置(如2表示从第二个专利开始下载)
+     */
+    private Integer startNumber;
+    /**
+     * 下载终止条数位置(如13表示从第十三个专利开始下载)
+     */
+    private Integer endNumber;
+    /**
+     * 需要额外下载的专利
+     */
+    private List<String> isAddPatentNos;
+    /**
+     * 起止条数中不需要下载的专利
+     */
+    private List<String> isDeletePatentNos;
+    /**
      * 专题库id
      */
     private Integer projectId;
@@ -24,23 +57,19 @@ public class QrtzTaskAddNewDTO {
      */
     private Integer reportId;
     /**
-     * 任务类型(0普通任务 1定时任务)
-     */
-    private Integer taskType;
-    /**
-     * 任务类型(3.欧专局 4.专利之星)
+     * 任务类型2(3.欧专局 4.专利之星)
      */
     private Integer taskType2;
     /**
-     * 检索信息
+     * 任务类型1 (0普通任务 1定时任务)
      */
-    private String conditions;
+    private Integer taskType;
     /**
      * cron表达式
      */
     private String crons;
     /**
-     * 下载字段
+     * 下载字段(1.著录项 2.权要 3.说明书文本 4.说明书pdf 6.摘要附图)
      */
     private List<String> configCells;
     /**
@@ -52,6 +81,7 @@ public class QrtzTaskAddNewDTO {
      */
     private String taskName;
 
+
     //以下为自定义字段和文件夹信息 ↓
     /**
      * 自定义字段ids

+ 57 - 6
PAS/src/main/java/cn/cslg/pas/domain/Task.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.util.List;
+
 /**
  * <p>
  * 任务表
@@ -99,7 +101,7 @@ public class Task extends BaseEntity<Task> {
     @TableField(exist = false)
     private int exceptionNum;
     /**
-     * 前台参数json格式
+     * 自定义字段文件夹信息json格式
      */
     @TableField("pram_json")
     private String pramJson;
@@ -116,10 +118,15 @@ public class Task extends BaseEntity<Task> {
      */
     @TableField("old_name")
     private String oldName;
+    /**
+     * 所属任务条件id
+     */
+    @TableField("qrtz_task_id")
+    private Integer qrtzTaskId;
+
 
     @TableField(exist = false)
     private String createName;
-
     @TableField(exist = false)
     private String projectName;
     /**
@@ -127,11 +134,55 @@ public class Task extends BaseEntity<Task> {
      */
     @TableField(exist = false)
     private Integer lastIndex;
-
     /**
-     * 所属任务条件id
+     * 下载字段类型数量
      */
-    @TableField("qrtz_task_id")
-    private Integer qrtzTaskId;
+    @TableField(exist = false)
+    private Integer configCellsNum;
+    /**
+     * 下载字段
+     */
+    @TableField(exist = false)
+    private List<String> configCells;
+    /**
+     * 排序字段
+     */
+    @TableField(exist = false)
+    private String orderBy;
+    /**
+     * 排序类型
+     */
+    @TableField(exist = false)
+    private String orderByType;
+    /**
+     * 检索数据库类型
+     */
+    @TableField(exist = false)
+    private String DBType;
+    /**
+     * 下载起始条数位置
+     */
+    @TableField(exist = false)
+    private Integer startNumber;
+    /**
+     * 下载终止条数位置
+     */
+    @TableField(exist = false)
+    private Integer endNumber;
+    /**
+     * 需要额外下载的专利
+     */
+    @TableField(exist = false)
+    private List<String> isAddPatentNos;
+    /**
+     * 起止条数中不需要下载的专利
+     */
+    @TableField(exist = false)
+    private List<String> isDeletePatentNos;
+    /**
+     * 检索式
+     */
+    @TableField(exist = false)
+    private String conditions;
 
 }

+ 39 - 3
PAS/src/main/java/cn/cslg/pas/domain/asso/AssoOsTaskQrtzTask.java

@@ -31,17 +31,17 @@ public class AssoOsTaskQrtzTask implements Serializable {
     @TableField(value = "task_id")
     private Integer taskId;
     /**
-     * 任务类型(0普通任务 1定时任务)
+     * 任务类型1 (0普通任务 1定时任务)
      */
     @TableField(value = "task_type")
     private Integer taskType;
     /**
-     * 任务类型2 (3.EPO欧专局导入 4.专利之星导入)
+     * 任务类型2(3.EPO欧专局导入 4.专利之星导入)
      */
     @TableField(value = "task_type2")
     private Integer taskType2;
     /**
-     * 检索信息
+     * 检索
      */
     @TableField(value = "conditions")
     private String conditions;
@@ -71,4 +71,40 @@ public class AssoOsTaskQrtzTask implements Serializable {
     @TableField(value = "total")
     private Integer total;
 
+    /**
+     * 排序字段
+     */
+    @TableField(value = "orderby")
+    private String orderBy;
+    /**
+     * 排序类型
+     */
+    @TableField(value = "orderby_type")
+    private String orderByType;
+    /**
+     * 检索数据库类型
+     */
+    @TableField(value = "db_type")
+    private String DBType;
+    /**
+     * 下载起始条数位置
+     */
+    @TableField(value = "start_number")
+    private Integer startNumber;
+    /**
+     * 下载终止条数位置
+     */
+    @TableField(value = "end_number")
+    private Integer endNumber;
+    /**
+     * 需要额外下载的专利
+     */
+    @TableField(value = "isadd_patentnos")
+    private List<String> isAddPatentNos;
+    /**
+     * 起止条数中不需要下载的专利
+     */
+    @TableField(value = "isdelete_patentnos")
+    private List<String> isDeletePatentNos;
+
 }

+ 22 - 14
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataStar.java

@@ -57,36 +57,44 @@ public class ExcutePatentDataStar implements IExcutePatentData {
      */
     @Override
     public void startExcute(Task task) throws IOException {
-        //从任务关联网站导入任务表中取出当前任务
-        AssoOsTaskQrtzTask assoOsTaskQrtzTask = assoOsTaskQrtzTaskService.getById(task.getQrtzTaskId());
+        Integer successNum = task.getSuccessNum();  //成功条数(即上一次下载到的位置)
+        Integer total = task.getTotal();  //专利总数量
+        String conditions = task.getConditions();  //检索式
+        String orderBy = task.getOrderBy();  //排序字段
+        String orderByType = task.getOrderByType();  //排序类型
+        String dbType = task.getDBType();  //检索数据库类型
+        List<String> cells = task.getConfigCells();  //下载字段
+        Integer startNumber = task.getStartNumber();  //下载起始条数位置
+        Integer endNumber = task.getEndNumber();  //下载终止条数位置
+        List<String> isAddPatentNos = task.getIsAddPatentNos();  //需要额外下载的专利号
+        List<String> isDeletePatentNos = task.getIsDeletePatentNos();  //起止条数中不需要下载的专利号
+
+
+
+
+
+
+
 
-        //从任务数据中获取专利总数量、检索式、下载字段、成功条数(即上一次位置)
-        Integer total = assoOsTaskQrtzTask.getTotal();
-        String conditions = assoOsTaskQrtzTask.getConditions();
-        List<String> cells = Arrays.asList(assoOsTaskQrtzTask.getConfigCells().split(","));
-        Integer successNum = task.getSuccessNum();
 
         //定义每次检索的页码
         int pageNum = 0;
         //定义每次检索的专利数量(当前定义每次检索50件)
         int size = 50;
-        //int pageNum = successNum / size + 1;
-
-
         //1.根据专利总数量count遍历检索专利
         for (int i = successNum; i < total; i += size) {
             pageNum++;
             PatentStarListDto patentStarListDto = new PatentStarListDto()
                     .setCurrentQuery(conditions)
-                    .setOrderBy("AD")
-                    .setOrderByType("DESC")
+                    .setOrderBy(orderBy)
+                    .setOrderByType(orderByType)
                     .setPageNum(pageNum)
                     .setRowCount(size)
-                    .setDBType("CN");
+                    .setDBType(dbType);
             //调用一般接口返回一批专利著录相关数据
             Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
             if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-                ThrowException.throwXiaoShiException("发生未知错误,一般接口未检索出专利");
+                ThrowException.throwXiaoShiException("发生未知错误");
             }
 
             List<StarPatentVO> starPatents = (List<StarPatentVO>) resultMap.get("records");

+ 26 - 3
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java

@@ -4,13 +4,16 @@ 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.QueueData;
 import cn.cslg.pas.domain.Task;
+import cn.cslg.pas.domain.asso.AssoOsTaskQrtzTask;
 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.AssoOsTaskQrtzTaskService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.Data;
 import lombok.RequiredArgsConstructor;
@@ -35,6 +38,7 @@ public class PantentQueueService {
     private final UploadPatentBatchService uploadPatentBatchService;
     private final MessageService messageService;
     private final TaskService taskService;
+    private final AssoOsTaskQrtzTaskService assoOsTaskQrtzTaskService;
     private final ExcutePatentDataExcel excutePatentDataExcel;
     private final ExcutePatentDataEpo excutePatentDataEpo;
     private final ExcutePatentDataStar excutePatentDataStar;
@@ -97,6 +101,22 @@ public class PantentQueueService {
                         continue;
                     }
 
+                    //若是网站导入任务,则将网站导入相关信息存入task对象中(方便生产与消费时使用)
+                    if (task.getType().equals(3) || task.getType().equals(4)) {
+                        AssoOsTaskQrtzTask assoOsTaskQrtzTask = assoOsTaskQrtzTaskService.getById(task.getQrtzTaskId());
+                        List<String> configCells = Arrays.asList(assoOsTaskQrtzTask.getConfigCells().split(","));
+                        task.setConfigCellsNum(configCells.size());  //将下载字段数量存入task对象中(为了在后面发送进度时可以根据下载字段的数量来对应消费者数量,从而确定是否完成了一个专利的下载)
+                        task.setConfigCells(configCells);
+                        task.setOrderBy(assoOsTaskQrtzTask.getOrderBy());
+                        task.setOrderByType(assoOsTaskQrtzTask.getOrderByType());
+                        task.setDBType(assoOsTaskQrtzTask.getDBType());
+                        task.setStartNumber(assoOsTaskQrtzTask.getStartNumber());
+                        task.setEndTime(assoOsTaskQrtzTask.getEndNumber());
+                        task.setIsAddPatentNos(assoOsTaskQrtzTask.getIsAddPatentNos());
+                        task.setIsDeletePatentNos(assoOsTaskQrtzTask.getIsDeletePatentNos());
+                        task.setConditions(assoOsTaskQrtzTask.getConditions());
+                    }
+
                     //TODO 调用工厂方法,工厂方法会根据任务类型创建并返回对应的生产专利方法的对象
                     IExcutePatentData excutePatentDataObject = createObject(task);
                     if (excutePatentDataObject != null) {
@@ -347,8 +367,7 @@ public class PantentQueueService {
                     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)) {
+                    } else if (queueData.getTask().getReportId() != null && !queueData.getTask().getReportId().equals(0)) {
                         //与报告关联入库(调用报告系统接口)
                         outInterfaceService.importAssoReportPatentNo(queueData.getTask().getReportId(), queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getPatent().getName());
                     }
@@ -471,9 +490,13 @@ public class PantentQueueService {
             //将任务id + "|" + 专利id,拼接成专利的标识(作为当前某一个消费者消费完的这个专利的数量标识)
             String currentPatent = task.getId() + "|" + queueData.getUploadParamsVO().getPatent().getId();
             Integer num = patentIdMap.get(currentPatent);
+            int needNum = 4;  //临界默认设为4(即Excel导入任务默认使用5个消费者)
+            if (task.getType().equals(3) || task.getType().equals(4)) {  //若是网站导入任务,则临界默认设为下载字段类型数量 - 1
+                needNum = task.getConfigCellsNum() - 1;
+            }
             if (num == null) {
                 patentIdMap.put(currentPatent, 1);
-            } else if (num < 4) {
+            } else if (num < needNum) {
                 patentIdMap.put(currentPatent, ++num);
             } else {
                 /*

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

@@ -125,28 +125,29 @@ public class UploadTaskService {
      * @param qrtzTaskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
      */
     public AssoOsTaskQrtzTask addPatentStarTask(QrtzTaskAddNewDTO qrtzTaskAddNewDTO) throws IOException {
-        Integer webId = qrtzTaskAddNewDTO.getConfigId();
-        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
-        //根据网站id获得配置
-        WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());
+        Integer webId = qrtzTaskAddNewDTO.getConfigId();  //取出网站id
+
+        //检查任务合法性1(根据网站配置id和登陆人所属租户id,看是否有网站导入任务的权限)
+        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());  //获取登陆人信息
+        WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());  //根据网站id获得配置
         if (webLoginConfig == null) {
             ThrowException.throwXiaoShiException("未配置网站登录信息");
         }
 
-        //检查任务合法性(根据检索式conditions先检索1页10条专利著录信息
+        //检查任务合法性2(根据检索式信息调用一般检索接口,看是否能检索出专利
         PatentStarListDto patentStarListDto = new PatentStarListDto()
                 .setCurrentQuery(qrtzTaskAddNewDTO.getConditions())
-                .setOrderBy("AD")
-                .setOrderByType("DESC")
+                .setOrderBy(qrtzTaskAddNewDTO.getOrderBy())
+                .setOrderByType(qrtzTaskAddNewDTO.getOrderByType())
                 .setPageNum(1)
                 .setRowCount(10)
-                .setDBType("CN");
+                .setDBType(qrtzTaskAddNewDTO.getDBType());
         Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
         if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-            ThrowException.throwXiaoShiException("根据该检索信息未检索到相关专利,请尝试更改检索式");
+            ThrowException.throwXiaoShiException("未检索到相关专利,请尝试更改检索式或检索条件信息");
         }
 
-        //专利总数量
+        //获取专利总数量
         Integer total = (Integer) resultMap.get("total");
 
         //新增任务与任务条件关联表("asso_osTask_qrtzTask")数据
@@ -154,11 +155,19 @@ public class UploadTaskService {
         assoOsTaskQrtzTask
                 .setTaskName(qrtzTaskAddNewDTO.getTaskName())
                 .setTaskType(qrtzTaskAddNewDTO.getTaskType())
+                .setTaskType2(qrtzTaskAddNewDTO.getTaskType2())
                 .setConditions(qrtzTaskAddNewDTO.getConditions())
                 .setCrons(qrtzTaskAddNewDTO.getCrons())
                 .setConfigId(qrtzTaskAddNewDTO.getConfigId())
                 .setTaskName(qrtzTaskAddNewDTO.getTaskName())
-                .setTotal(total);
+                .setTotal(total)
+                .setOrderBy(qrtzTaskAddNewDTO.getOrderBy())
+                .setOrderByType(qrtzTaskAddNewDTO.getOrderByType())
+                .setDBType(qrtzTaskAddNewDTO.getDBType())
+                .setStartNumber(qrtzTaskAddNewDTO.getStartNumber())
+                .setEndNumber(qrtzTaskAddNewDTO.getEndNumber())
+                .setIsAddPatentNos(qrtzTaskAddNewDTO.getIsAddPatentNos())
+                .setIsDeletePatentNos(qrtzTaskAddNewDTO.getIsDeletePatentNos());
         List<String> cells = qrtzTaskAddNewDTO.getConfigCells();
         if (cells == null) {
             assoOsTaskQrtzTask.setConfigCells("");