|
|
|
@ -655,24 +655,36 @@ async def get_scenic_parking_data(request: Request, scenic_id: int, distance: in |
|
|
|
|
LEFT JOIN |
|
|
|
|
equipment_passenger_flow.park_current t4 ON t1.park_code = t4.park_code |
|
|
|
|
WHERE |
|
|
|
|
t1.scenic_id = %s |
|
|
|
|
t1.scenic_id = {scenic_id_condition} |
|
|
|
|
{status_condition} |
|
|
|
|
{distance_value} |
|
|
|
|
AND t3.total_count > 0 |
|
|
|
|
ORDER BY t1.distance_value ASC |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 获取当前日期 |
|
|
|
|
now = datetime.now() |
|
|
|
|
# 根据是否为节假日设置状态条件 |
|
|
|
|
if is_holiday(now): |
|
|
|
|
# 节假日不添加status条件,查询全部 |
|
|
|
|
status_condition = "" |
|
|
|
|
else: |
|
|
|
|
# 非节假日添加status=0的条件 |
|
|
|
|
status_condition = "AND t3.`status` = '0'" |
|
|
|
|
|
|
|
|
|
# 根据距离参数构建WHERE条件 |
|
|
|
|
if distance >= 1000: |
|
|
|
|
# 距离>=1000米,查询全部停车场 |
|
|
|
|
where_condition = "" |
|
|
|
|
params = (scenic_id,) |
|
|
|
|
else: |
|
|
|
|
# 距离<1000米,按指定距离查询 |
|
|
|
|
where_condition = " AND t1.distance_value <= %s" |
|
|
|
|
params = (scenic_id, distance) |
|
|
|
|
|
|
|
|
|
# 完整的查询语句 |
|
|
|
|
query = base_query + where_condition + " ORDER BY t1.distance_value ASC" |
|
|
|
|
|
|
|
|
|
await cur.execute(query, params) |
|
|
|
|
|
|
|
|
|
# 格式化SQL查询,插入状态条件 |
|
|
|
|
formatted_park_base = base_query.format(scenic_id_condition=scenic_id, |
|
|
|
|
status_condition=status_condition,distance_value=where_condition) |
|
|
|
|
|
|
|
|
|
await cur.execute(formatted_park_base) |
|
|
|
|
rows = await cur.fetchall() |
|
|
|
|
|
|
|
|
|
# 处理结果 |
|
|
|
|