"""量测数据接口""" 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 }