Files
Tunnel/app/api/measurement_data.py
2025-12-12 10:57:31 +08:00

67 lines
2.3 KiB
Python
Raw Permalink 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.
"""量测数据接口"""
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from pydantic import BaseModel
from typing import Optional
from datetime import datetime
from app.core.database import get_tunnel_db
from app.core.logging_config import get_logger
from app.schemas.measurement_data import MeasurementDataBatchImport, MeasurementDataQuery
from app.schemas.common import BatchImportResponse
from app.servives.measurement_data_service import MeasurementDataService
router = APIRouter(prefix="/measurement_data", tags=["量测数据"])
logger = get_logger(__name__)
class MeasurementByDepartmentQuery(BaseModel):
"""根据department_id查询量测数据"""
account_id: int
department_id: str
monitoring_time_start: Optional[datetime] = None
monitoring_time_end: Optional[datetime] = None
page: int = 1
page_size: int = 20
@router.post("/import", response_model=BatchImportResponse)
async def batch_import(
request: MeasurementDataBatchImport,
db: Session = Depends(get_tunnel_db)
):
"""批量导入量测数据"""
logger.info(f"量测数据导入请求: account_id={request.account_id}, 数据量={len(request.data)}")
return MeasurementDataService.batch_import(db, request.account_id, request.data)
@router.post("/query")
async def query(
request: MeasurementDataQuery,
db: Session = Depends(get_tunnel_db)
):
"""查询量测数据"""
logger.info(f"量测数据查询请求: {request}")
items, total = MeasurementDataService.query(db, request)
return {
"total": total,
"page": request.page,
"page_size": request.page_size,
"items": items
}
@router.post("/query_by_department")
async def query_by_department(
request: MeasurementByDepartmentQuery,
db: Session = Depends(get_tunnel_db)
):
"""根据department_id查询量测数据包含断面里程、围岩级别和观测点名称"""
logger.info(f"根据department_id查询量测数据: {request}")
items, total = MeasurementDataService.query_by_department(
db, request.account_id, request.department_id,
request.page, request.page_size,
request.monitoring_time_start, request.monitoring_time_end
)
return {
"total": total,
"page": request.page,
"page_size": request.page_size,
"items": items
}