61 lines
2.3 KiB
Python
61 lines
2.3 KiB
Python
from fastapi import APIRouter, Depends, HTTPException, status
|
|
from sqlalchemy.orm import Session
|
|
from typing import List
|
|
from ..core.database import get_db
|
|
from ..core.response_code import ResponseCode, ResponseMessage
|
|
from ..schemas.level_data import (
|
|
LevelDataRequest,
|
|
LevelDataListResponse,
|
|
LevelDataResponse,
|
|
BatchDeleteByLinecodesRequest,
|
|
BatchDeleteByLinecodesResponse
|
|
)
|
|
from ..services.level_data import LevelDataService
|
|
|
|
router = APIRouter(prefix="/level_data", tags=["水准数据"])
|
|
|
|
@router.post("/get_level_data_by_project", response_model=LevelDataListResponse)
|
|
def get_level_data_by_project(request: LevelDataRequest, db: Session = Depends(get_db)):
|
|
"""
|
|
通过标段名称获取全部水准线路
|
|
"""
|
|
try:
|
|
level_service = LevelDataService()
|
|
level_data_list = level_service.get_level_data_by_project_name(db, project_name=request.project_name, nyid_max=request.nyid_max)
|
|
|
|
return LevelDataListResponse(
|
|
code=ResponseCode.SUCCESS,
|
|
message="查询成功",
|
|
total=len(level_data_list),
|
|
data=level_data_list
|
|
)
|
|
except Exception as e:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
detail=f"查询失败: {str(e)}"
|
|
)
|
|
|
|
|
|
@router.post("/batch_delete_by_linecodes", response_model=BatchDeleteByLinecodesResponse)
|
|
def batch_delete_by_linecodes(request: BatchDeleteByLinecodesRequest, db: Session = Depends(get_db)):
|
|
"""
|
|
根据水准线路编码列表批量删除相关数据
|
|
删除顺序:原始数据 → 沉降数据 → 观测点数据 → 水准数据
|
|
删除前会备份数据为SQL文件
|
|
"""
|
|
try:
|
|
level_service = LevelDataService()
|
|
result = level_service.batch_delete_by_linecodes(db, linecodes=request.linecodes)
|
|
|
|
return BatchDeleteByLinecodesResponse(
|
|
code=0 if result['success'] else 1,
|
|
message=result['message'],
|
|
success=result['success'],
|
|
backup_file=result.get('backup_file'),
|
|
deleted_counts=result.get('deleted_counts')
|
|
)
|
|
except Exception as e:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
detail=f"批量删除失败: {str(e)}"
|
|
) |