增加标段获取最大水准数据

This commit is contained in:
lhx
2025-11-15 16:36:40 +08:00
parent bde3ebf0cc
commit f8ed6cb5d3
5 changed files with 28 additions and 23 deletions

View File

@@ -148,7 +148,7 @@ class LevelDataService(BaseService[LevelData]):
'failed_items': failed_items
}
def get_level_data_by_project_name(self, db: Session, project_name: str) -> List[Dict[str, Any]]:
def get_level_data_by_project_name(self, db: Session, project_name: str, nyid_max: bool = False) -> List[Dict[str, Any]]:
"""
通过project_name获取全部水准线路
业务逻辑:
@@ -198,11 +198,17 @@ class LevelDataService(BaseService[LevelData]):
nyid_list = list(set([settlement.NYID for settlement in settlements if settlement.NYID]))
logger.info(f"查询到{len(nyid_list)}个期数ID")
# 5. 查询水准数据表获取水准数据 (通过NYID)
level_data_list = db.query(LevelData).filter(LevelData.NYID.in_(nyid_list)).all()
if not level_data_list:
logger.warning(f"未查询到对应的水准数据")
return []
if nyid_max:
# 只获取最新期数的水准数据
nyid_list = [max(nyid_list, key=int)]
logger.info(f"筛选后只获取最新期数ID: {nyid_list}")
level_data_list = db.query(LevelData).filter(LevelData.NYID.in_(nyid_list)).all()
else:
# 5. 查询水准数据表获取水准数据 (通过NYID)
level_data_list = db.query(LevelData).filter(LevelData.NYID.in_(nyid_list)).all()
if not level_data_list:
logger.warning(f"未查询到对应的水准数据")
return []
# 6. 将水准数据依照linecode去重同linecode只需保留一个
linecode_seen = set()