获取观测点id接口修改

This commit is contained in:
lhx
2025-12-01 18:00:50 +08:00
parent 36bcbc16b5
commit 2d69729a64
2 changed files with 43 additions and 10 deletions

View File

@@ -35,7 +35,21 @@ async def get_point_ids_by_linecode(
checkpoint_service = CheckpointService()
try:
point_ids,point_id_dict = checkpoint_service.get_point_ids_by_linecode(db, request.linecode)
print( f"Fetching point IDs for linecode: {request.linecode}" )
point_ids, point_id_dict = checkpoint_service.get_point_ids_by_linecode(db, request.linecode)
# 检查结果是否为空
if not point_ids or len(point_ids) == 0:
return {
"code": 0,
"message": f"未找到线路编码 '{request.linecode}' 对应的观测点数据",
"data": {
"linecode": request.linecode,
"point_ids": [],
"point_id_dict": {},
"count": 0
}
}
return {
"code": 0,
@@ -48,4 +62,13 @@ async def get_point_ids_by_linecode(
}
}
except Exception as e:
raise HTTPException(status_code=500, detail=f"查询失败: {str(e)}")
return {
"code": 500,
"message": f"查询失败: {str(e)}",
"data": {
"linecode": request.linecode,
"point_ids": [],
"point_id_dict": {},
"count": 0
}
}

View File

@@ -241,17 +241,22 @@ class CheckpointService(BaseService[Checkpoint]):
from ..models.settlement_data import SettlementData
# 1. 根据linecode查询水准数据表获取所有NYID去重
print(linecode)
nyid_query = db.query(LevelData.NYID).filter(LevelData.linecode == linecode).distinct()
nyid_list = [result.NYID for result in nyid_query.all() if result.NYID]
nyid_list = nyid_query.all()
if not nyid_list:
return []
print(nyid_list)
print("get_point_ids_by_linecode", nyid_list)
if not nyid_list or len(nyid_list) == 0:
return [], {}
print("nyid_list", nyid_list)
nyid_list = [result.NYID for result in nyid_list if result.NYID]
# print(nyid_list)
max_nyid_str = max(nyid_list, key=int)
nyid_list = []
nyid_list.append(max_nyid_str)
print(nyid_list)
# print(nyid_list)
# 2. 根据NYID列表查询沉降数据表获取所有point_id去重
point_id_query = db.query(
@@ -260,8 +265,13 @@ class CheckpointService(BaseService[Checkpoint]):
SettlementData.NYID.in_(nyid_list)
).distinct()
# print(point_id_query)
point_id_list = [f'{result.point_id}' for result in point_id_query.all() if result.point_id]
# -{db.query(Checkpoint.aname).filter(Checkpoint.point_id == result.point_id).first().aname}
point_id_dict = {item :db.query(Checkpoint.aname).filter(Checkpoint.point_id == item).first().aname for item in point_id_list}
return point_id_list,point_id_dict
point_id_dict = {}
print(point_id_dict)
for item in point_id_list:
checkpoint = db.query(Checkpoint.aname).filter(Checkpoint.point_id == item).first()
point_id_dict[item] = checkpoint.aname if checkpoint else None
# print(f"111" ,point_id_dict)
return point_id_list, point_id_dict