diff --git a/app/api/checkpoint.py b/app/api/checkpoint.py index 8b2f938..30e322f 100644 --- a/app/api/checkpoint.py +++ b/app/api/checkpoint.py @@ -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 + } + } diff --git a/app/services/checkpoint.py b/app/services/checkpoint.py index 947df22..6bb45f1 100644 --- a/app/services/checkpoint.py +++ b/app/services/checkpoint.py @@ -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