专利管理API.md 15 KB

专利管理API

本文档引用的文件

  • PatentController.java
  • SearchRecordController.java
  • RetrieveRecordController.java
  • ExportController.java
  • ImportTaskController.java
  • QueryEsCustomFieldDTO.java
  • PatentDetailDTO.java
  • RetrieveRecordDTO.java
  • AddSearchRecordDTO.java
  • QuerySearchRecordDTO.java
  • ResponseEnum.java
  • XiaoShiException.java

目录

  1. 简介
  2. 核心API端点
  3. 专利检索API
  4. 专利详情获取API
  5. 检索记录管理API
  6. 专利数据导出API
  7. 批量导入API
  8. 错误码说明
  9. 请求/响应示例

简介

本API文档详细描述了专利管理系统中的核心功能接口,包括专利检索、专利详情获取、检索记录管理、数据导出和批量导入等功能。系统基于Elasticsearch实现复杂的专利数据查询和分析,支持分页查询、复杂条件检索和数据导出功能。

核心API端点

基础路径

所有API端点均以/api/xiaoshi为前缀,各功能模块的路径如下:

  • 专利管理:/api/xiaoshi/patent
  • 检索记录:/api/xiaoshi/searchRecord
  • 检索历史:/api/xiaoshi/retrieveRecord
  • 数据导出:/api/xiaoshi/export
  • 任务导入:/api/xiaoshi/importTask

专利检索API

专利查询

端点: POST /patent/queryPatent
功能: 根据查询条件检索专利数据

请求参数:

  • StringRequest: 包含查询条件的字符串请求对象

分页机制: 系统支持标准分页查询,通过currentsize参数控制分页:

  • current: 当前页码(从1开始)
  • size: 每页记录数

复杂查询参数: 通过QueryEsCustomFieldDTO对象支持基于Elasticsearch的复杂查询:

@Data
public class QueryEsCustomFieldDTO {
    private Integer projectId;        // 专题库或报告ID
    private Integer fieldType;        // 栏位类型
    private String fieldId;           // 栏位ID
    private String patentNo;          // 专利号
    private Integer taskId;           // 任务ID
}

Section sources

  • PatentController.java
  • QueryEsCustomFieldDTO.java

专利详情获取API

专利详情查询

端点: POST /patent/selectPatentDetail
功能: 根据专利号获取专利详细信息

请求参数:

  • PatentNoVO: 包含专利号的查询对象

响应数据结构: PatentDetailDTO包含完整的专利信息:

@Data
public class PatentDetailDTO {
    private String patentNo;                    // 专利号
    private ContentVO title;                    // 标题
    private ContentVO abstractStr;              // 摘要
    private String appNo;                       // 申请号
    private Date appDate;                       // 申请日
    private String publicNo;                    // 公开号
    private Date publicDate;                    // 公开日
    private String grantNo;                     // 授权号
    private Date grantDate;                     // 授权日
    private List<String> applicant;             // 申请人
    private PersonAddress applicantAddr;        // 申请人地址
    private List<String> rightHolder;           // 权利人
    private PersonAddress rightHolderAddr;      // 权利人地址
    private List<String> inventor;              // 发明人
    private String agency;                      // 代理机构
    private String agencyNo;                    // 代理机构编号
    private List<String> agent;                 // 代理人
    private PatentClassify mipc;                // IPC分类号(主)
    private List<PatentClassify> ipc;           // IPC集合
    private ContentVO claim;                    // 权利要求
    private List<Text> publicFullText;          // 公开说明书文本
    private List<Text> grantFullText;           // 授权说明书文本
    private String simpleStatus;                // 专利状态
    private String patentType;                  // 专利类型
    private List<String> legalStatus;           // 法律状态
}

Section sources

  • PatentController.java
  • PatentDetailDTO.java

检索记录管理API

添加或更新检索记录

端点: POST /searchRecord/addSearchRecord
功能: 创建或更新检索记录

请求参数: AddSearchRecordDTO对象包含检索记录的详细信息:

@Data
public class AddSearchRecordDTO {
    private Integer id;                         // 记录ID(更新时使用)
    private String searchCondition;             // 检索条件
    private String searchBase;                  // 检索数据库
    private Integer allNum;                     // 检索数量
    private String searchPerson;                // 检索人
    private Date searchTime;                    // 检索时间
    private Integer projectId;                  // 项目ID
}

Section sources

  • SearchRecordController.java
  • AddSearchRecordDTO.java

查询检索记录

端点: POST /searchRecord/querySearchRecords
功能: 分页查询检索记录

请求参数: QuerySearchRecordDTO支持分页和排序查询:

@Data
public class QuerySearchRecordDTO {
    private Integer projectId;                  // 项目ID
    private Long size;                          // 每页大小
    private Long current;                       // 当前页码
    private OrderDTO orderDTO;                  // 排序条件
}

响应格式: 返回Records对象,包含分页信息和数据列表。

Section sources

  • SearchRecordController.java
  • QuerySearchRecordDTO.java

删除检索记录

端点: POST /searchRecord/removeSearchRecords
功能: 批量删除检索记录

请求参数:

  • List<Integer>: 要删除的记录ID列表

Section sources

  • SearchRecordController.java

检索历史管理

端点: POST /retrieveRecord/addRetrieveRecord
功能: 添加检索历史记录

请求参数: RetrieveRecordDTO包含检索历史的详细信息:

@Data
public class RetrieveRecordDTO {
    private Integer id;                         // 记录ID
    private String conditions;                  // 检索条件
    private String dbType;                      // 数据库类型
    private Date retrieveTime;                  // 检索时间
    private Date updateTime;                    // 更新时间
    private Integer totalNum;                   // 总数量
    private String searchSetting;               // 搜索设置
}

其他操作:

  • POST /retrieveRecord/updateRetrieveRecord: 更新检索历史
  • POST /retrieveRecord/queryRetrieveRecord: 查询检索历史
  • POST /retrieveRecord/deleteRetrieveRecord: 删除检索历史

Section sources

  • RetrieveRecordController.java
  • RetrieveRecordDTO.java

专利数据导出API

导出PDF首页

端点: POST /patent/exportPDFFirstPage
功能: 导出专利PDF首页

请求参数:

  • EsCustomFieldBatchVO: 包含要导出的专利信息和项目ID

Section sources

  • PatentController.java

导出专利Excel

端点: POST /patent/exportPatentExcel
功能: 导出专利数据到Excel文件

请求参数:

  • EsCustomFieldBatchVO: 包含要导出的专利信息和项目ID

Section sources

  • PatentController.java

导出二叉树

端点: POST /export/export
功能: 导出二叉树结构

请求参数:

  • multipartFile: 上传的文件

Section sources

  • ExportController.java

导出缺失专利号

端点: POST /export/exportPatentNo
功能: 导出缺失的专利号信息

Section sources

  • ExportController.java

批量导入API

添加导入任务

端点: POST /importTask/addImportTask
功能: 创建新的导入任务

请求参数:

  • ImportTaskDTO: 导入任务的详细信息

Section sources

  • ImportTaskController.java

查询导入任务

端点: POST /importTask/queryImportTask
功能: 查询导入任务状态

请求参数:

  • StringRequest: 查询条件

Section sources

  • ImportTaskController.java

更新任务状态

端点: GET /importTask/updateImportTaskState
功能: 更新导入任务的状态

请求参数:

  • taskId: 任务ID
  • state: 新的状态值

Section sources

  • ImportTaskController.java

添加PDF导入任务

端点: POST /importTask/addPdfTask
功能: 创建PDF文件导入任务

请求参数:

  • AddImportPDFTaskDTO: PDF导入任务信息

Section sources

  • ImportTaskController.java

查询任务报错信息

端点: POST /importTask/getPatentImportLog
功能: 获取导入任务的错误日志

请求参数:

  • ImportErrorLogQueryDTO: 错误日志查询条件

Section sources

  • ImportTaskController.java

错误码说明

标准响应码

系统使用统一的响应码表示操作结果:

public enum ResponseEnum {
    SUCCESS(200, "请求成功"),
    UNAUTHORIZED(401, "未登录"),
    NOT_PERMISSION(402, "无操作权限"),
    SYSTEM_ERROR(500, "系统异常"),
    PARAMS_ERROR(202, "参数错误"),
    CONDITION_ERROR(203, "检索式错误"),
    PATENT_IMPORT_TASK_SUCCESS(903, "导入任务完成"),
    PATENT_IMPORT_PATENT_PART_SUCCESS(900, "专利信息部分上传成功"),
    PATENT_EXPORT_TASK(602, "导出专利信息"),
    PATENT_EXPORT_TASK_DONE(603, "导出专利信息完成"),
    PATENT_PDF_EXPORT_TASK(604, "导出PDF首页"),
    PATENT_PDF_EXPORT_TASK_DONE(605, "导出PDF首页完成");
}

异常处理

系统使用XiaoShiException作为通用异常类:

public class XiaoShiException extends RuntimeException {
    private String errorCode;       // 异常代码
    private String errorMessage;    // 异常信息
}

常见错误场景:

  • 专利数据不存在: 当查询的专利号不存在时,返回null或空结果
  • 检索超时: 复杂查询可能导致超时,系统会返回相应的错误码
  • 权限不足: 未登录或无权限操作时返回401或402状态码
  • 参数错误: 请求参数格式不正确时返回202状态码

Section sources

  • ResponseEnum.java
  • XiaoShiException.java

请求/响应示例

专利检索示例

curl命令:

curl -X POST "http://localhost:8080/api/xiaoshi/patent/queryPatent" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": 123,
    "fieldType": 1,
    "fieldId": "inventor",
    "patentNo": "CN202310000001"
  }'

请求JSON:

{
  "projectId": 123,
  "fieldType": 1,
  "fieldId": "inventor",
  "patentNo": "CN202310000001"
}

成功响应:

{
  "code": 200,
  "message": "请求成功",
  "data": {
    "total": 1,
    "pageNum": 1,
    "pageSize": 10,
    "patents": [
      {
        "patentNo": "CN202310000001",
        "title": "一种新型专利技术",
        "applicant": ["申请人A", "申请人B"]
      }
    ]
  }
}

专利详情获取示例

curl命令:

curl -X POST "http://localhost:8080/api/xiaoshi/patent/selectPatentDetail" \
  -H "Content-Type: application/json" \
  -d '{
    "patentNo": "CN202310000001"
  }'

请求JSON:

{
  "patentNo": "CN202310000001"
}

成功响应:

{
  "code": 200,
  "message": "请求成功",
  "data": {
    "patentNo": "CN202310000001",
    "title": "一种新型专利技术",
    "abstractStr": "本发明公开了一种新型专利技术...",
    "appNo": "202310000001",
    "appDate": "2023-01-01",
    "applicant": ["申请人A", "申请人B"],
    "inventor": ["发明人A", "发明人B"],
    "simpleStatus": "授权",
    "patentType": "发明专利"
  }
}

检索记录管理示例

添加检索记录:

curl -X POST "http://localhost:8080/api/xiaoshi/searchRecord/addSearchRecord" \
  -H "Content-Type: application/json" \
  -d '{
    "searchCondition": "发明人:张三 AND 申请人:公司A",
    "searchBase": "CNIPR",
    "allNum": 25,
    "searchPerson": "管理员",
    "searchTime": "2023-07-15",
    "projectId": 123
  }'

查询检索记录:

curl -X POST "http://localhost:8080/api/xiaoshi/searchRecord/querySearchRecords" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": 123,
    "size": 10,
    "current": 1,
    "orderDTO": {
      "fieldName": "searchTime",
      "order": "desc"
    }
  }'

Section sources

  • PatentController.java
  • SearchRecordController.java
  • RetrieveRecordController.java
  • ExportController.java
  • ImportTaskController.java