Files
nxxmdata/backend/swagger-reports.js
2025-09-23 18:13:11 +08:00

736 lines
21 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 报表管理模块 Swagger 文档
* @file swagger-reports.js
* @description 定义报表管理相关的API文档
*/
/**
* @swagger
* tags:
* - name: 报表管理
* description: 报表生成、下载和管理
*/
/**
* @swagger
* components:
* schemas:
* ReportGenerateRequest:
* type: object
* properties:
* startDate:
* type: string
* format: date
* description: 开始日期
* example: "2024-01-01"
* endDate:
* type: string
* format: date
* description: 结束日期
* example: "2024-01-31"
* format:
* type: string
* enum: [pdf, excel, csv]
* description: 报表格式
* example: "pdf"
*
* FarmReportRequest:
* allOf:
* - $ref: '#/components/schemas/ReportGenerateRequest'
* - type: object
* properties:
* farmIds:
* type: array
* items:
* type: string
* description: 养殖场ID列表
* example: ["farm_001", "farm_002"]
*
* SalesReportRequest:
* allOf:
* - $ref: '#/components/schemas/ReportGenerateRequest'
* - type: object
* properties:
* format:
* type: string
* enum: [pdf, excel]
* description: 报表格式销售报表不支持CSV
* example: "excel"
*
* ComplianceReportRequest:
* allOf:
* - $ref: '#/components/schemas/ReportGenerateRequest'
* - type: object
* properties:
* format:
* type: string
* enum: [pdf, excel]
* description: 报表格式合规报表不支持CSV
* example: "pdf"
*
* ReportFile:
* type: object
* properties:
* fileName:
* type: string
* description: 文件名
* example: "farm_report_20240115.pdf"
* downloadUrl:
* type: string
* description: 下载链接
* example: "/api/reports/download/farm_report_20240115.pdf"
* mimeType:
* type: string
* description: 文件MIME类型
* example: "application/pdf"
* size:
* type: integer
* description: 文件大小(字节)
* example: 1024000
* generatedAt:
* type: string
* format: date-time
* description: 生成时间
* example: "2024-01-15T10:30:00Z"
*
* ReportListItem:
* type: object
* properties:
* id:
* type: string
* description: 报表ID
* example: "report_001"
* fileName:
* type: string
* description: 文件名
* example: "farm_report_20240115.pdf"
* type:
* type: string
* enum: [farm, sales, compliance, export]
* description: 报表类型
* example: "farm"
* format:
* type: string
* enum: [pdf, excel, csv]
* description: 文件格式
* example: "pdf"
* size:
* type: integer
* description: 文件大小(字节)
* example: 1024000
* status:
* type: string
* enum: [generating, completed, failed, expired]
* description: 报表状态
* example: "completed"
* createdBy:
* type: string
* description: 创建者
* example: "admin"
* createdAt:
* type: string
* format: date-time
* description: 创建时间
* example: "2024-01-15T10:30:00Z"
* expiresAt:
* type: string
* format: date-time
* description: 过期时间
* example: "2024-01-22T10:30:00Z"
* downloadUrl:
* type: string
* description: 下载链接
* example: "/api/reports/download/farm_report_20240115.pdf"
*
* ReportTemplate:
* type: object
* properties:
* id:
* type: string
* description: 模板ID
* example: "template_001"
* name:
* type: string
* description: 模板名称
* example: "养殖场月度报表模板"
* type:
* type: string
* enum: [farm, sales, compliance]
* description: 模板类型
* example: "farm"
* description:
* type: string
* description: 模板描述
* example: "包含养殖场基本信息、动物统计、设备状态等"
* fields:
* type: array
* items:
* type: object
* properties:
* name:
* type: string
* description: 字段名称
* label:
* type: string
* description: 字段标签
* type:
* type: string
* description: 字段类型
* required:
* type: boolean
* description: 是否必填
* description: 模板字段配置
* isDefault:
* type: boolean
* description: 是否为默认模板
* example: true
* createdAt:
* type: string
* format: date-time
* description: 创建时间
* example: "2024-01-15T10:30:00Z"
*
* ExportDataRequest:
* type: object
* properties:
* format:
* type: string
* enum: [excel, csv]
* description: 导出格式
* example: "excel"
* filters:
* type: object
* description: 筛选条件
* properties:
* status:
* type: string
* description: 状态筛选
* startDate:
* type: string
* format: date
* description: 开始日期
* endDate:
* type: string
* format: date
* description: 结束日期
*/
/**
* @swagger
* /reports/farm:
* post:
* tags:
* - 报表管理
* summary: 生成养殖统计报表
* description: 生成指定时间范围和养殖场的统计报表
* security:
* - bearerAuth: []
* requestBody:
* required: false
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/FarmReportRequest'
* responses:
* 200:
* description: 报表生成成功
* content:
* application/json:
* schema:
* allOf:
* - $ref: '#/components/schemas/ApiResponse'
* - type: object
* properties:
* data:
* $ref: '#/components/schemas/ReportFile'
* 400:
* description: 请求参数错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
/**
* @swagger
* /reports/sales:
* post:
* tags:
* - 报表管理
* summary: 生成销售分析报表
* description: 生成指定时间范围的销售分析报表(需要管理员或经理权限)
* security:
* - bearerAuth: []
* requestBody:
* required: false
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/SalesReportRequest'
* responses:
* 200:
* description: 报表生成成功
* content:
* application/json:
* schema:
* allOf:
* - $ref: '#/components/schemas/ApiResponse'
* - type: object
* properties:
* data:
* $ref: '#/components/schemas/ReportFile'
* 400:
* description: 请求参数错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 403:
* description: 权限不足
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
/**
* @swagger
* /reports/compliance:
* post:
* tags:
* - 报表管理
* summary: 生成监管合规报表
* description: 生成指定时间范围的监管合规报表(仅限管理员)
* security:
* - bearerAuth: []
* requestBody:
* required: false
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ComplianceReportRequest'
* responses:
* 200:
* description: 报表生成成功
* content:
* application/json:
* schema:
* allOf:
* - $ref: '#/components/schemas/ApiResponse'
* - type: object
* properties:
* data:
* $ref: '#/components/schemas/ReportFile'
* 400:
* description: 请求参数错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 403:
* description: 权限不足(仅限管理员)
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
/**
* @swagger
* /reports/download/{fileName}:
* get:
* tags:
* - 报表管理
* summary: 下载报表文件
* description: 下载指定的报表文件
* security:
* - bearerAuth: []
* parameters:
* - in: path
* name: fileName
* required: true
* schema:
* type: string
* description: 文件名需要URL编码
* example: "farm_report_20240115.pdf"
* responses:
* 200:
* description: 文件下载成功
* content:
* application/pdf:
* schema:
* type: string
* format: binary
* application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
* schema:
* type: string
* format: binary
* text/csv:
* schema:
* type: string
* format: binary
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 403:
* description: 非法文件路径
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 404:
* description: 文件不存在
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
/**
* @swagger
* /reports/list:
* get:
* tags:
* - 报表管理
* summary: 获取报表列表
* description: 获取当前用户的报表列表,支持分页和筛选
* security:
* - bearerAuth: []
* parameters:
* - $ref: '#/components/parameters/PaginationQuery/properties/page'
* - $ref: '#/components/parameters/PaginationQuery/properties/limit'
* - in: query
* name: type
* schema:
* type: string
* enum: [farm, sales, compliance, export]
* description: 报表类型筛选
* - in: query
* name: status
* schema:
* type: string
* enum: [generating, completed, failed, expired]
* description: 报表状态筛选
* - in: query
* name: format
* schema:
* type: string
* enum: [pdf, excel, csv]
* description: 文件格式筛选
* - in: query
* name: startDate
* schema:
* type: string
* format: date
* description: 创建开始日期
* - in: query
* name: endDate
* schema:
* type: string
* format: date
* description: 创建结束日期
* responses:
* 200:
* description: 获取列表成功
* content:
* application/json:
* schema:
* allOf:
* - $ref: '#/components/schemas/ApiResponse'
* - type: object
* properties:
* data:
* type: object
* properties:
* reports:
* type: array
* items:
* $ref: '#/components/schemas/ReportListItem'
* pagination:
* type: object
* properties:
* total:
* type: integer
* example: 50
* page:
* type: integer
* example: 1
* limit:
* type: integer
* example: 10
* totalPages:
* type: integer
* example: 5
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
/**
* @swagger
* /reports/cleanup:
* post:
* tags:
* - 报表管理
* summary: 清理过期报表
* description: 清理过期的报表文件(仅限管理员)
* security:
* - bearerAuth: []
* requestBody:
* required: false
* content:
* application/json:
* schema:
* type: object
* properties:
* daysOld:
* type: integer
* description: 清理多少天前的文件
* example: 30
* force:
* type: boolean
* description: 是否强制清理(包括未过期的文件)
* example: false
* responses:
* 200:
* description: 清理成功
* content:
* application/json:
* schema:
* allOf:
* - $ref: '#/components/schemas/ApiResponse'
* - type: object
* properties:
* data:
* type: object
* properties:
* deletedCount:
* type: integer
* description: 删除的文件数量
* example: 15
* freedSpace:
* type: integer
* description: 释放的空间(字节)
* example: 15360000
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 403:
* description: 权限不足(仅限管理员)
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
/**
* @swagger
* /reports/export/farms:
* get:
* tags:
* - 报表管理
* summary: 导出养殖场数据
* description: 导出养殖场基础数据为Excel或CSV格式
* security:
* - bearerAuth: []
* parameters:
* - in: query
* name: format
* schema:
* type: string
* enum: [excel, csv]
* default: excel
* description: 导出格式
* - in: query
* name: status
* schema:
* type: string
* enum: [active, inactive, all]
* default: all
* description: 状态筛选
* responses:
* 200:
* description: 导出成功
* content:
* application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
* schema:
* type: string
* format: binary
* text/csv:
* schema:
* type: string
* format: binary
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
/**
* @swagger
* /reports/export/devices:
* get:
* tags:
* - 报表管理
* summary: 导出设备数据
* description: 导出设备基础数据为Excel或CSV格式
* security:
* - bearerAuth: []
* parameters:
* - in: query
* name: format
* schema:
* type: string
* enum: [excel, csv]
* default: excel
* description: 导出格式
* - in: query
* name: status
* schema:
* type: string
* enum: [online, offline, maintenance, all]
* default: all
* description: 设备状态筛选
* responses:
* 200:
* description: 导出成功
* content:
* application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
* schema:
* type: string
* format: binary
* text/csv:
* schema:
* type: string
* format: binary
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
/**
* @swagger
* /reports/templates:
* get:
* tags:
* - 报表管理
* summary: 获取报表模板列表
* description: 获取可用的报表模板列表
* security:
* - bearerAuth: []
* parameters:
* - in: query
* name: type
* schema:
* type: string
* enum: [farm, sales, compliance]
* description: 模板类型筛选
* responses:
* 200:
* description: 获取模板列表成功
* content:
* application/json:
* schema:
* allOf:
* - $ref: '#/components/schemas/ApiResponse'
* - type: object
* properties:
* data:
* type: array
* items:
* $ref: '#/components/schemas/ReportTemplate'
* 401:
* description: 未授权
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
* 500:
* description: 服务器内部错误
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/ErrorResponse'
*/
module.exports = {};