1.新增水准线路补充检测接口
This commit is contained in:
@@ -8,7 +8,11 @@ from ..schemas.level_data import (
|
||||
LevelDataListResponse,
|
||||
LevelDataResponse,
|
||||
BatchDeleteByLinecodesRequest,
|
||||
BatchDeleteByLinecodesResponse
|
||||
BatchDeleteByLinecodesResponse,
|
||||
LinecodeRequest,
|
||||
NyidListResponse,
|
||||
SyncLoseDataRequest,
|
||||
SyncLoseDataResponse,
|
||||
)
|
||||
from ..services.level_data import LevelDataService
|
||||
|
||||
@@ -36,6 +40,31 @@ def get_level_data_by_project(request: LevelDataRequest, db: Session = Depends(g
|
||||
)
|
||||
|
||||
|
||||
@router.post("/get_nyids_by_linecode", response_model=NyidListResponse)
|
||||
def get_nyids_by_linecode(request: LinecodeRequest, db: Session = Depends(get_db)):
|
||||
"""
|
||||
通过水准线路编码返回该线路下所有 NYID,只返回 NYID 列表(去重、按 NYID 降序)
|
||||
"""
|
||||
try:
|
||||
level_service = LevelDataService()
|
||||
level_list = level_service.get_by_linecode(db, linecode=request.linecode)
|
||||
nyids = sorted(
|
||||
{str(item.NYID) for item in level_list if item.NYID},
|
||||
key=lambda x: int(x) if str(x).isdigit() else 0,
|
||||
reverse=True,
|
||||
)
|
||||
return NyidListResponse(
|
||||
code=ResponseCode.SUCCESS,
|
||||
message=ResponseMessage.SUCCESS,
|
||||
data=nyids,
|
||||
)
|
||||
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)):
|
||||
"""
|
||||
@@ -58,4 +87,40 @@ def batch_delete_by_linecodes(request: BatchDeleteByLinecodesRequest, db: Sessio
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail=f"批量删除失败: {str(e)}"
|
||||
)
|
||||
|
||||
|
||||
@router.post("/sync_lose_data", response_model=SyncLoseDataResponse)
|
||||
def sync_lose_data(
|
||||
request: SyncLoseDataRequest = SyncLoseDataRequest(),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
同步缺失数据到 lose_data 表。
|
||||
- 不传 linecode:按所有水准线路的 NYID 计算缺失并写入,仅返回是否处理成功。
|
||||
- 传 linecode:只处理该水准线路,并返回该线路的缺失数据记录列表。
|
||||
缺失规则:原始数据无=1、沉降数据无=2,lose_data 为二者之和(0/1/2/3)。
|
||||
"""
|
||||
try:
|
||||
level_service = LevelDataService()
|
||||
result = level_service.sync_lose_data(db, linecode=request.linecode)
|
||||
if result.get("data") is None:
|
||||
data = {"success": result["success"]}
|
||||
if not result["success"]:
|
||||
return SyncLoseDataResponse(
|
||||
code=1,
|
||||
message=result.get("message", "处理失败"),
|
||||
data=data,
|
||||
)
|
||||
else:
|
||||
data = result["data"]
|
||||
return SyncLoseDataResponse(
|
||||
code=0 if result["success"] else 1,
|
||||
message=ResponseMessage.SUCCESS if result["success"] else (result.get("message") or "处理失败"),
|
||||
data=data,
|
||||
)
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail=f"同步缺失数据失败: {str(e)}",
|
||||
)
|
||||
Reference in New Issue
Block a user