原查询数据条件分页优化
This commit is contained in:
@@ -37,6 +37,7 @@ class SettlementDataService(BaseService[SettlementData]):
|
||||
nyid: Optional[str] = None,
|
||||
sjName: Optional[str] = None,
|
||||
workinfoname: Optional[str] = None,
|
||||
skip: int = 0,
|
||||
limit: Optional[int] = None) -> List[SettlementData]:
|
||||
"""根据多个条件搜索沉降数据,按上传时间倒序排序"""
|
||||
query = db.query(SettlementData)
|
||||
@@ -55,7 +56,9 @@ class SettlementDataService(BaseService[SettlementData]):
|
||||
# 按上传时间倒序排序
|
||||
query = query.order_by(SettlementData.createdate.desc())
|
||||
|
||||
# 如果指定了limit,则限制返回数量
|
||||
# 添加分页支持
|
||||
if skip > 0:
|
||||
query = query.offset(skip)
|
||||
if limit is not None and limit > 0:
|
||||
query = query.limit(limit)
|
||||
|
||||
@@ -67,9 +70,25 @@ class SettlementDataService(BaseService[SettlementData]):
|
||||
nyid: Optional[str] = None,
|
||||
sjName: Optional[str] = None,
|
||||
workinfoname: Optional[str] = None,
|
||||
limit: Optional[int] = None) -> List[Dict[str, Any]]:
|
||||
"""查询沉降数据并返回格式化结果,按上传时间倒序排序"""
|
||||
settlement_data = self.search_settlement_data(db, id, point_id, nyid, sjName, workinfoname, limit)
|
||||
skip: int = 0,
|
||||
limit: Optional[int] = None) -> Dict[str, Any]:
|
||||
"""查询沉降数据并返回格式化结果,按上传时间倒序排序(支持分页)"""
|
||||
# 先获取总数(不计分页)
|
||||
count_query = db.query(SettlementData)
|
||||
if id is not None:
|
||||
count_query = count_query.filter(SettlementData.id == id)
|
||||
if point_id is not None:
|
||||
count_query = count_query.filter(SettlementData.point_id == point_id)
|
||||
if nyid is not None:
|
||||
count_query = count_query.filter(SettlementData.NYID == nyid)
|
||||
if sjName is not None:
|
||||
count_query = count_query.filter(SettlementData.sjName == sjName)
|
||||
if workinfoname is not None:
|
||||
count_query = count_query.filter(SettlementData.workinfoname == workinfoname)
|
||||
total_count = count_query.count()
|
||||
|
||||
# 获取分页数据
|
||||
settlement_data = self.search_settlement_data(db, id, point_id, nyid, sjName, workinfoname, skip, limit)
|
||||
|
||||
result = []
|
||||
for settlement in settlement_data:
|
||||
@@ -97,7 +116,12 @@ class SettlementDataService(BaseService[SettlementData]):
|
||||
}
|
||||
result.append(settlement_dict)
|
||||
|
||||
return result
|
||||
return {
|
||||
"data": result,
|
||||
"total": total_count,
|
||||
"skip": skip,
|
||||
"limit": limit
|
||||
}
|
||||
|
||||
def search_settlement_checkpoint_data_formatted(self, db: Session,
|
||||
id: Optional[int] = None,
|
||||
|
||||
Reference in New Issue
Block a user