本文档引用的文件
本API文档详细描述了专利管理系统中的核心功能接口,包括专利检索、专利详情获取、检索记录管理、数据导出和批量导入等功能。系统基于Elasticsearch实现复杂的专利数据查询和分析,支持分页查询、复杂条件检索和数据导出功能。
所有API端点均以/api/xiaoshi为前缀,各功能模块的路径如下:
/api/xiaoshi/patent/api/xiaoshi/searchRecord/api/xiaoshi/retrieveRecord/api/xiaoshi/export/api/xiaoshi/importTask端点: POST /patent/queryPatent
功能: 根据查询条件检索专利数据
请求参数:
StringRequest: 包含查询条件的字符串请求对象分页机制:
系统支持标准分页查询,通过current和size参数控制分页:
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
端点: 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
端点: 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
端点: POST /searchRecord/querySearchRecords
功能: 分页查询检索记录
请求参数:
QuerySearchRecordDTO支持分页和排序查询:
@Data
public class QuerySearchRecordDTO {
private Integer projectId; // 项目ID
private Long size; // 每页大小
private Long current; // 当前页码
private OrderDTO orderDTO; // 排序条件
}
响应格式:
返回Records对象,包含分页信息和数据列表。
Section sources
端点: POST /searchRecord/removeSearchRecords
功能: 批量删除检索记录
请求参数:
List<Integer>: 要删除的记录ID列表Section sources
端点: 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
端点: POST /patent/exportPDFFirstPage
功能: 导出专利PDF首页
请求参数:
EsCustomFieldBatchVO: 包含要导出的专利信息和项目IDSection sources
端点: POST /patent/exportPatentExcel
功能: 导出专利数据到Excel文件
请求参数:
EsCustomFieldBatchVO: 包含要导出的专利信息和项目IDSection sources
端点: POST /export/export
功能: 导出二叉树结构
请求参数:
multipartFile: 上传的文件Section sources
端点: POST /export/exportPatentNo
功能: 导出缺失的专利号信息
Section sources
端点: POST /importTask/addImportTask
功能: 创建新的导入任务
请求参数:
ImportTaskDTO: 导入任务的详细信息Section sources
端点: POST /importTask/queryImportTask
功能: 查询导入任务状态
请求参数:
StringRequest: 查询条件Section sources
端点: GET /importTask/updateImportTaskState
功能: 更新导入任务的状态
请求参数:
taskId: 任务IDstate: 新的状态值Section sources
端点: POST /importTask/addPdfTask
功能: 创建PDF文件导入任务
请求参数:
AddImportPDFTaskDTO: PDF导入任务信息Section sources
端点: POST /importTask/getPatentImportLog
功能: 获取导入任务的错误日志
请求参数:
ImportErrorLogQueryDTO: 错误日志查询条件Section sources
系统使用统一的响应码表示操作结果:
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或空结果Section sources
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