736 lines
21 KiB
JavaScript
736 lines
21 KiB
JavaScript
/**
|
||
* 报表管理模块 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 = {}; |