Files
yunrui_asset/backend/swagger_docs.yaml
T

2597 lines
60 KiB
YAML
Raw Normal View History

openapi: 3.0.0
info:
title: IDC设备管理系统 API
version: 1.0.0
description: |
IDC设备管理系统后端API文档
## 认证说明
除健康检查接口外,所有接口都需要在请求头中携带JWT Token:
```
Authorization: Bearer <token>
```
## 通用响应格式
### 成功响应
```json
{
"success": true,
"data": {...},
"message": "操作成功"
}
```
### 错误响应
```json
{
"success": false,
"error": "错误类型",
"message": "详细描述"
}
```
## 分页参数
列表接口支持 `page` 和 `pageSize` 参数,默认 page=1, pageSize=10
servers:
- url: http://localhost:8000
description: 开发环境服务器
security:
- bearerAuth: []
tags:
- name: health
description: 健康检查
- name: auth
description: 认证接口
- name: rooms
description: 机房管理
- name: racks
description: 机柜管理
- name: devices
description: 设备管理
- name: deviceFields
description: 设备字段
- name: device-ports
description: 设备端口
- name: network-cards
description: 网卡管理
- name: cables
description: 线缆管理
- name: tickets
description: 工单管理
- name: ticket-categories
description: 工单分类
- name: ticket-fields
description: 工单字段
- name: consumables
description: 耗材管理
- name: consumable-categories
description: 耗材分类
- name: consumable-records
description: 耗材记录
- name: users
description: 用户管理
- name: roles
description: 角色管理
- name: system-settings
description: 系统设置
- name: background
description: 背景配置
- name: inventory
description: 盘点管理
- name: statistics
description: 统计接口
- name: operation-logs
description: 操作日志
- name: backup
description: 备份管理
paths:
/health:
get:
summary: 健康检查
description: 服务状态检查接口,无需认证
tags: [health]
responses:
'200':
description: 服务正常运行
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: ok
message:
type: string
example: IDC设备管理系统后端服务正常运行
/api-docs:
get:
summary: API文档页面
description: 返回Swagger UI界面
/api/auth/login:
post:
summary: 用户登录
tags: [auth]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [username, password]
properties:
username:
type: string
description: 用户名
password:
type: string
description: 密码
responses:
'200':
description: 登录成功
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
token:
type: string
user:
type: object
properties:
userId:
type: string
username:
type: string
email:
type: string
phone:
type: string
status:
type: string
roles:
type: array
items:
type: object
message:
type: string
/api/auth/register:
post:
summary: 用户注册
tags: [auth]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [username, password]
properties:
username:
type: string
description: 用户名(3-20字符)
password:
type: string
description: 密码(6-20字符)
email:
type: string
phone:
type: string
responses:
'201':
description: 注册成功
/api/auth/me:
get:
summary: 获取当前用户信息
tags: [auth]
responses:
'200':
description: 成功
/api/rooms:
get:
summary: 获取机房列表
tags: [rooms]
parameters:
- name: keyword
in: query
schema:
type: string
description: 按名称搜索
- name: status
in: query
schema:
type: string
description: 按状态筛选
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
roomId:
type: string
name:
type: string
location:
type: string
area:
type: number
status:
type: string
post:
summary: 创建机房
tags: [rooms]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [roomId, name]
properties:
roomId:
type: string
description: 机房ID(唯一标识)
name:
type: string
description: 机房名称
location:
type: string
description: 机房位置
area:
type: number
description: 面积(平方米)
description:
type: string
description: 描述
status:
type: string
enum: [active, inactive]
responses:
'201':
description: 创建成功
/api/rooms/{roomId}:
get:
summary: 获取单个机房
tags: [rooms]
parameters:
- name: roomId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新机房
tags: [rooms]
parameters:
- name: roomId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
location:
type: string
area:
type: number
description:
type: string
status:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除机房
tags: [rooms]
parameters:
- name: roomId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/racks:
get:
summary: 获取机柜列表
tags: [racks]
parameters:
- name: roomId
in: query
schema:
type: string
description: 按机房ID筛选
- name: status
in: query
schema:
type: string
description: 按状态筛选
- name: keyword
in: query
schema:
type: string
description: 按名称搜索
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
racks:
type: array
items:
type: object
total:
type: integer
page:
type: integer
pageSize:
type: integer
post:
summary: 创建机柜
tags: [racks]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name, roomId]
properties:
name:
type: string
description: 机柜名称
height:
type: integer
description: 高度(U),默认42
maxPower:
type: integer
description: 额定功率(W)
roomId:
type: string
description: 所属机房ID
status:
type: string
enum: [active, maintenance, inactive]
description:
type: string
responses:
'201':
description: 创建成功
/api/racks/{rackId}:
get:
summary: 获取单个机柜
tags: [racks]
parameters:
- name: rackId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新机柜
tags: [racks]
parameters:
- name: rackId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除机柜
tags: [racks]
parameters:
- name: rackId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/racks/import-template:
get:
summary: 获取机柜导入模板
tags: [racks]
responses:
'200':
description: 返回Excel模板文件
content:
application/octet-stream:
schema:
type: string
format: binary
/api/racks/export:
get:
summary: 导出机柜数据
tags: [racks]
responses:
'200':
description: 返回Excel文件
content:
application/octet-stream:
schema:
type: string
format: binary
/api/racks/import:
post:
summary: 导入机柜数据
tags: [racks]
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Excel格式的机柜数据文件
responses:
'200':
description: 导入成功
/api/devices:
get:
summary: 获取设备列表
tags: [devices]
parameters:
- name: rackId
in: query
schema:
type: string
- name: type
in: query
schema:
type: string
description: 设备类型
- name: status
in: query
schema:
type: string
- name: keyword
in: query
schema:
type: string
description: 关键词搜索(名称/IP/序列号)
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
devices:
type: array
items:
type: object
total:
type: integer
page:
type: integer
pageSize:
type: integer
post:
summary: 创建设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name, type, serialNumber]
properties:
name:
type: string
description: 设备名称
type:
type: string
enum: [server, switch, router, storage, other]
description: 设备类型
model:
type: string
serialNumber:
type: string
rackId:
type: string
position:
type: integer
description: 机柜位置(从1开始)
height:
type: integer
description: 占用高度(U)
powerConsumption:
type: integer
description: 功耗(W)
ipAddress:
type: string
status:
type: string
enum: [running, maintenance, offline, fault]
purchaseDate:
type: string
format: date
warrantyExpiry:
type: string
format: date
description:
type: string
customFields:
type: object
description: 自定义字段值
responses:
'201':
description: 创建成功
/api/devices/{deviceId}:
get:
summary: 获取单个设备
tags: [devices]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新设备
tags: [devices]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除设备
tags: [devices]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/devices/batch-delete:
post:
summary: 批量删除设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds]
properties:
deviceIds:
type: array
items:
type: string
description: 设备ID列表
responses:
'200':
description: 删除成功
/api/devices/delete-all:
delete:
summary: 删除所有设备
tags: [devices]
responses:
'200':
description: 删除成功
/api/devices/batch-online:
put:
summary: 批量上线设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds]
properties:
deviceIds:
type: array
items:
type: string
responses:
'200':
description: 操作成功
/api/devices/batch-offline:
put:
summary: 批量下线设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds]
properties:
deviceIds:
type: array
items:
type: string
responses:
'200':
description: 操作成功
/api/devices/batch-status:
put:
summary: 批量变更设备状态
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds, status]
properties:
deviceIds:
type: array
items:
type: string
status:
type: string
enum: [running, maintenance, offline, fault]
responses:
'200':
description: 操作成功
/api/devices/batch-move:
put:
summary: 批量移动设备
tags: [devices]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [deviceIds, targetRackId]
properties:
deviceIds:
type: array
items:
type: string
targetRackId:
type: string
description: 目标机柜ID
startPosition:
type: integer
description: 起始位置
responses:
'200':
description: 操作成功
/api/devices/import-template:
get:
summary: 获取设备导入模板
tags: [devices]
responses:
'200':
description: 返回CSV模板文件
/api/devices/export:
get:
summary: 导出设备数据
tags: [devices]
parameters:
- name: deviceIds
in: query
schema:
type: string
description: 指定导出的设备ID(逗号分隔)
responses:
'200':
description: 返回CSV文件
/api/devices/import:
post:
summary: 导入设备数据
tags: [devices]
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
csvFile:
type: string
format: binary
description: CSV格式的设备数据文件
responses:
'200':
description: 导入成功
/api/devices/enhanced-export:
get:
summary: 增强导出设备数据
tags: [devices]
parameters:
- name: deviceIds
in: query
schema:
type: string
- name: format
in: query
schema:
type: string
enum: [csv, json]
default: csv
- name: fields
in: query
schema:
type: string
description: JSON格式的字段列表
- name: fieldLabels
in: query
schema:
type: string
description: JSON格式的字段标签映射
responses:
'200':
description: 导出成功
/api/devices/{deviceId}/tickets:
get:
summary: 获取设备的工单列表
tags: [devices]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
/api/tickets:
get:
summary: 获取工单列表
tags: [tickets]
parameters:
- name: status
in: query
schema:
type: string
description: 按状态筛选(pending/in_progress/completed/closed
- name: priority
in: query
schema:
type: string
description: 按优先级筛选(urgent/high/medium/low
- name: faultCategory
in: query
schema:
type: string
- name: deviceId
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
post:
summary: 创建工单
tags: [tickets]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [faultCategory, description]
properties:
title:
type: string
faultCategory:
type: string
description: 故障分类
faultSubCategory:
type: string
priority:
type: string
enum: [urgent, high, medium, low]
description:
type: string
deviceId:
type: string
deviceName:
type: string
serialNumber:
type: string
expectedCompletionDate:
type: string
format: date
reporterId:
type: string
reporterName:
type: string
responses:
'201':
description: 创建成功
/api/cables:
get:
summary: 获取线缆列表
tags: [cables]
parameters:
- name: sourceDeviceId
in: query
schema:
type: string
description: 源设备ID
- name: targetDeviceId
in: query
schema:
type: string
description: 目标设备ID
- name: cableType
in: query
schema:
type: string
description: 线缆类型
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建线缆
tags: [cables]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sourceDeviceId:
type: string
description: 源设备ID
sourcePortId:
type: string
description: 源端口ID
targetDeviceId:
type: string
description: 目标设备ID
targetPortId:
type: string
description: 目标端口ID
cableType:
type: string
description: 线缆类型
fiberType:
type: string
description: 光纤类型
length:
type: number
description: 长度(米)
status:
type: string
description:
type: string
responses:
'201':
description: 创建成功
/api/cables/{cableId}:
get:
summary: 获取单个线缆
tags: [cables]
parameters:
- name: cableId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新线缆
tags: [cables]
parameters:
- name: cableId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除线缆
tags: [cables]
parameters:
- name: cableId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/cables/batch:
post:
summary: 批量创建线缆
tags: [cables]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
cables:
type: array
items:
type: object
responses:
'201':
description: 创建成功
/api/cables/batch-delete:
post:
summary: 批量删除线缆
tags: [cables]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
cableIds:
type: array
items:
type: string
responses:
'200':
description: 删除成功
/api/cables/device/:deviceId:
get:
summary: 获取设备关联的线缆列表
tags: [cables]
parameters:
- name: deviceId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
/api/cables/rack/:rackId:
get:
summary: 获取机柜关联的线缆列表
tags: [cables]
parameters:
- name: rackId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
/api/cables/check-conflict:
post:
summary: 检查线缆路径冲突
tags: [cables]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sourceDeviceId:
type: string
sourcePortId:
type: string
targetDeviceId:
type: string
targetPortId:
type: string
responses:
'200':
description: 检查成功
/api/tickets/{ticketId}:
get:
summary: 获取单个工单
tags: [tickets]
parameters:
- name: ticketId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新工单
tags: [tickets]
parameters:
- name: ticketId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除工单
tags: [tickets]
parameters:
- name: ticketId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/consumables:
get:
summary: 获取耗材列表
tags: [consumables]
parameters:
- name: category
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: keyword
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 10
responses:
'200':
description: 成功
post:
summary: 创建耗材
tags: [consumables]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name, category]
properties:
name:
type: string
category:
type: string
specification:
type: string
unit:
type: string
currentStock:
type: integer
minStock:
type: integer
maxStock:
type: integer
unitPrice:
type: number
supplier:
type: string
location:
type: string
status:
type: string
description:
type: string
responses:
'201':
description: 创建成功
/api/consumables/{id}:
get:
summary: 获取单个耗材
tags: [consumables]
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新耗材
tags: [consumables]
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除耗材
tags: [consumables]
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/deviceFields:
get:
summary: 获取设备字段列表
tags: [deviceFields]
parameters:
- name: entityType
in: query
schema:
type: string
description: 实体类型(如device
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建设备字段
tags: [deviceFields]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fieldName:
type: string
description: 字段名称
fieldLabel:
type: string
description: 字段标签
fieldType:
type: string
description: 字段类型
entityType:
type: string
description: 实体类型
required:
type: boolean
defaultValue:
type: string
options:
type: array
items:
type: string
responses:
'201':
description: 创建成功
/api/deviceFields/{fieldId}:
get:
summary: 获取单个设备字段
tags: [deviceFields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新设备字段
tags: [deviceFields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除设备字段
tags: [deviceFields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/deviceFields/batch:
post:
summary: 批量创建设备字段
tags: [deviceFields]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fields:
type: array
items:
type: object
responses:
'201':
description: 创建成功
/api/deviceFields/reorder:
put:
summary: 重新排序设备字段
tags: [deviceFields]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fieldIds:
type: array
items:
type: string
responses:
'200':
description: 更新成功
/api/device-ports:
get:
summary: 获取设备端口列表
tags: [device-ports]
parameters:
- name: deviceId
in: query
schema:
type: string
- name: portType
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建设备端口
tags: [device-ports]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
deviceId:
type: string
portName:
type: string
portType:
type: string
portNumber:
type: integer
status:
type: string
responses:
'201':
description: 创建成功
/api/device-ports/{portId}:
get:
summary: 获取单个设备端口
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新设备端口
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除设备端口
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/device-ports/batch:
post:
summary: 批量创建设备端口
tags: [device-ports]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
ports:
type: array
items:
type: object
responses:
'201':
description: 创建成功
/api/device-ports/{portId}/connect:
post:
summary: 连接端口
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
cableId:
type: string
targetPortId:
type: string
responses:
'200':
description: 连接成功
/api/device-ports/{portId}/disconnect:
post:
summary: 断开端口连接
tags: [device-ports]
parameters:
- name: portId
in: path
required: true
schema:
type: string
responses:
'200':
description: 断开成功
/api/network-cards:
get:
summary: 获取网卡列表
tags: [network-cards]
parameters:
- name: deviceId
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建网卡
tags: [network-cards]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
deviceId:
type: string
cardName:
type: string
cardType:
type: string
portCount:
type: integer
speed:
type: string
responses:
'201':
description: 创建成功
/api/network-cards/{cardId}:
get:
summary: 获取单个网卡
tags: [network-cards]
parameters:
- name: cardId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新网卡
tags: [network-cards]
parameters:
- name: cardId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除网卡
tags: [network-cards]
parameters:
- name: cardId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/network-cards/{cardId}/ports:
get:
summary: 获取网卡端口列表
tags: [network-cards]
parameters:
- name: cardId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
/api/ticket-categories:
get:
summary: 获取工单分类列表
tags: [ticket-categories]
responses:
'200':
description: 成功
post:
summary: 创建工单分类
tags: [ticket-categories]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
categoryName:
type: string
description:
type: string
priority:
type: string
responses:
'201':
description: 创建成功
/api/ticket-categories/{categoryId}:
get:
summary: 获取单个工单分类
tags: [ticket-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新工单分类
tags: [ticket-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除工单分类
tags: [ticket-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/ticket-fields:
get:
summary: 获取工单字段列表
tags: [ticket-fields]
responses:
'200':
description: 成功
post:
summary: 创建工单字段
tags: [ticket-fields]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fieldName:
type: string
fieldLabel:
type: string
fieldType:
type: string
required:
type: boolean
options:
type: array
items:
type: string
responses:
'201':
description: 创建成功
/api/ticket-fields/{fieldId}:
get:
summary: 获取单个工单字段
tags: [ticket-fields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新工单字段
tags: [ticket-fields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除工单字段
tags: [ticket-fields]
parameters:
- name: fieldId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/consumables/low-stock:
get:
summary: 获取低库存耗材
tags: [consumables]
responses:
'200':
description: 成功
/api/consumables/quick-inout:
post:
summary: 快速出入库
tags: [consumables]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [consumableId, type, quantity]
properties:
consumableId:
type: string
type:
type: string
enum: [in, out]
quantity:
type: integer
operator:
type: string
reason:
type: string
notes:
type: string
snList:
type: array
items:
type: string
responses:
'200':
description: 操作成功
/api/consumables/inout:
post:
summary: 出入库操作
tags: [consumables]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [consumableId, type, quantity]
properties:
consumableId:
type: string
type:
type: string
enum: [in, out]
quantity:
type: integer
operator:
type: string
reason:
type: string
recipient:
type: string
notes:
type: string
snList:
type: array
items:
type: string
responses:
'200':
description: 操作成功
/api/consumables/adjust:
post:
summary: 库存调整
tags: [consumables]
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [consumableId, adjustType, quantity]
properties:
consumableId:
type: string
adjustType:
type: string
enum: [add, subtract, set]
quantity:
type: integer
operator:
type: string
reason:
type: string
notes:
type: string
responses:
'200':
description: 操作成功
/api/consumables/logs:
get:
summary: 获取耗材操作日志
tags: [consumables]
parameters:
- name: consumableId
in: query
schema:
type: string
- name: operationType
in: query
schema:
type: string
- name: startDate
in: query
schema:
type: string
format: date
- name: endDate
in: query
schema:
type: string
format: date
- name: page
in: query
schema:
type: integer
default: 1
- name: pageSize
in: query
schema:
type: integer
default: 20
responses:
'200':
description: 成功
/api/inventory/plans:
get:
summary: 获取盘点计划列表
tags: [inventory]
parameters:
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建盘点计划
tags: [inventory]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
planName:
type: string
description:
type: string
startDate:
type: string
format: date
endDate:
type: string
format: date
responses:
'201':
description: 创建成功
/api/inventory/plans/{planId}:
get:
summary: 获取单个盘点计划
tags: [inventory]
parameters:
- name: planId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新盘点计划
tags: [inventory]
parameters:
- name: planId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除盘点计划
tags: [inventory]
parameters:
- name: planId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/inventory/tasks:
get:
summary: 获取盘点任务列表
tags: [inventory]
parameters:
- name: planId
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建盘点任务
tags: [inventory]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
planId:
type: string
assignedTo:
type: string
deviceIds:
type: array
items:
type: string
responses:
'201':
description: 创建成功
/api/inventory/tasks/{taskId}:
get:
summary: 获取单个盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/inventory/tasks/{taskId}/records:
get:
summary: 获取盘点记录列表
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
/api/inventory/records:
get:
summary: 获取盘点记录列表
tags: [inventory]
parameters:
- name: taskId
in: query
schema:
type: string
- name: planId
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
/api/inventory/start/{taskId}:
post:
summary: 开始盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 操作成功
/api/inventory/complete/{taskId}:
post:
summary: 完成盘点任务
tags: [inventory]
parameters:
- name: taskId
in: path
required: true
schema:
type: string
responses:
'200':
description: 操作成功
/api/operation-logs:
get:
summary: 获取操作日志列表
tags: [operation-logs]
parameters:
- name: userId
in: query
schema:
type: string
- name: action
in: query
schema:
type: string
- name: module
in: query
schema:
type: string
- name: startDate
in: query
schema:
type: string
format: date
- name: endDate
in: query
schema:
type: string
format: date
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
/api/operation-logs/export:
get:
summary: 导出操作日志
tags: [operation-logs]
responses:
'200':
description: 导出成功
/api/backup:
get:
summary: 获取备份列表
tags: [backup]
responses:
'200':
description: 成功
post:
summary: 创建备份
tags: [backup]
responses:
'201':
description: 创建成功
/api/backup/{backupId}/restore:
post:
summary: 恢复备份
tags: [backup]
parameters:
- name: backupId
in: path
required: true
schema:
type: string
responses:
'200':
description: 恢复成功
/api/backup/{backupId}:
delete:
summary: 删除备份
tags: [backup]
parameters:
- name: backupId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/backup/settings:
get:
summary: 获取备份设置
tags: [backup]
responses:
'200':
description: 成功
put:
summary: 更新备份设置
tags: [backup]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
autoBackup:
type: boolean
backupPath:
type: string
retentionDays:
type: integer
responses:
'200':
description: 更新成功
/api/statistics:
get:
summary: 获取统计数据
tags: [statistics]
responses:
'200':
description: 成功
/api/statistics/overview:
get:
summary: 获取总览统计
tags: [statistics]
responses:
'200':
description: 成功
/api/statistics/trends:
get:
summary: 获取趋势数据
tags: [statistics]
parameters:
- name: period
in: query
schema:
type: string
enum: [day, week, month, year]
responses:
'200':
description: 成功
/api/statistics/export:
get:
summary: 导出统计数据
tags: [statistics]
responses:
'200':
description: 导出成功
/api/users:
get:
summary: 获取用户列表
tags: [users]
parameters:
- name: keyword
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
post:
summary: 创建用户
tags: [users]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
username:
type: string
password:
type: string
email:
type: string
phone:
type: string
roleId:
type: string
responses:
'201':
description: 创建成功
/api/users/{userId}:
get:
summary: 获取单个用户
tags: [users]
parameters:
- name: userId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新用户
tags: [users]
parameters:
- name: userId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除用户
tags: [users]
parameters:
- name: userId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/roles:
get:
summary: 获取角色列表
tags: [roles]
responses:
'200':
description: 成功
post:
summary: 创建角色
tags: [roles]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
roleName:
type: string
description:
type: string
permissions:
type: array
items:
type: string
responses:
'201':
description: 创建成功
/api/roles/{roleId}:
get:
summary: 获取单个角色
tags: [roles]
parameters:
- name: roleId
in: path
required: true
schema:
type: string
responses:
'200':
description: 成功
put:
summary: 更新角色
tags: [roles]
parameters:
- name: roleId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除角色
tags: [roles]
parameters:
- name: roleId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/system-settings:
get:
summary: 获取系统设置
tags: [system-settings]
responses:
'200':
description: 成功
put:
summary: 更新系统设置
tags: [system-settings]
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
'200':
description: 更新成功
/api/background:
get:
summary: 获取背景配置
tags: [background]
responses:
'200':
description: 成功
post:
summary: 上传背景图片
tags: [background]
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'201':
description: 上传成功
delete:
summary: 删除背景图片
tags: [background]
responses:
'200':
description: 删除成功
/api/consumable-categories:
get:
summary: 获取耗材分类列表
tags: [consumable-categories]
responses:
'200':
description: 成功
post:
summary: 创建耗材分类
tags: [consumable-categories]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description:
type: string
responses:
'201':
description: 创建成功
/api/consumable-categories/{categoryId}:
put:
summary: 更新耗材分类
tags: [consumable-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 更新成功
delete:
summary: 删除耗材分类
tags: [consumable-categories]
parameters:
- name: categoryId
in: path
required: true
schema:
type: string
responses:
'200':
description: 删除成功
/api/consumable-records:
get:
summary: 获取耗材记录列表
tags: [consumable-records]
parameters:
- name: consumableId
in: query
schema:
type: string
- name: operationType
in: query
schema:
type: string
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: 成功
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 输入 JWT token