初始化

This commit is contained in:
lhx
2025-12-12 10:57:31 +08:00
commit f8e85beba1
38 changed files with 2146 additions and 0 deletions

62
app/api/checkpoint.py Normal file
View File

@@ -0,0 +1,62 @@
"""观测点数据接口"""
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from pydantic import BaseModel
from typing import Optional
from app.core.database import get_tunnel_db
from app.core.logging_config import get_logger
from app.schemas.checkpoint import CheckpointBatchImport, CheckpointQuery
from app.schemas.common import BatchImportResponse
from app.servives.checkpoint_service import CheckpointService
router = APIRouter(prefix="/checkpoint", tags=["观测点数据"])
logger = get_logger(__name__)
class CheckpointByDepartmentQuery(BaseModel):
"""根据department_id查询观测点"""
account_id: int
department_id: str
page: int = 1
page_size: int = 20
@router.post("/import", response_model=BatchImportResponse)
async def batch_import(
request: CheckpointBatchImport,
db: Session = Depends(get_tunnel_db)
):
"""批量导入观测点数据"""
logger.info(f"观测点数据导入请求: account_id={request.account_id}, 数据量={len(request.data)}")
return CheckpointService.batch_import(db, request.account_id, request.data)
@router.post("/query")
async def query(
request: CheckpointQuery,
db: Session = Depends(get_tunnel_db)
):
"""查询观测点数据"""
logger.info(f"观测点数据查询请求: {request}")
items, total = CheckpointService.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: CheckpointByDepartmentQuery,
db: Session = Depends(get_tunnel_db)
):
"""根据department_id查询观测点数据包含断面里程和围岩级别"""
logger.info(f"根据department_id查询观测点数据: {request}")
items, total = CheckpointService.query_by_department(
db, request.account_id, request.department_id,
request.page, request.page_size
)
return {
"total": total,
"page": request.page,
"page_size": request.page_size,
"items": items
}