feat: 设备日志增加时间范围查询 + CSV 导出
- 查询 API 增加 date_from/date_to 参数(前端日期+时间选择器) - 新增 /api/device-logs/export CSV 导出端点 - 新增 export_device_logs() 模型函数(全量不分页) - 删除校验放宽:允许纯时间范围作为删除条件 - 前端增加导出 CSV 按钮,遵循 test_data 页面模式
This commit is contained in:
@@ -832,7 +832,8 @@ def delete_test_data(serial: str = "", date_from: str = "",
|
||||
# ─── tb_device_log ─────────────────────────────────────────────────
|
||||
|
||||
def get_device_logs(page: int = 1, per_page: int = 30,
|
||||
serial: str = "", event_type: str = "") -> tuple[list[dict], int]:
|
||||
serial: str = "", event_type: str = "",
|
||||
date_from: str = "", date_to: str = "") -> tuple[list[dict], int]:
|
||||
"""分页查询设备事件日志,返回 (records, total)"""
|
||||
conn = get_conn()
|
||||
try:
|
||||
@@ -845,6 +846,12 @@ def get_device_logs(page: int = 1, per_page: int = 30,
|
||||
if event_type:
|
||||
where.append("event_type = %s")
|
||||
params.append(event_type)
|
||||
if date_from:
|
||||
where.append("create_time >= %s")
|
||||
params.append(date_from if len(date_from) > 10 else date_from)
|
||||
if date_to:
|
||||
where.append("create_time <= %s")
|
||||
params.append(date_to if len(date_to) > 10 else date_to + " 23:59:59")
|
||||
|
||||
where_clause = " AND ".join(where) if where else "1=1"
|
||||
|
||||
@@ -865,6 +872,38 @@ def get_device_logs(page: int = 1, per_page: int = 30,
|
||||
conn.close()
|
||||
|
||||
|
||||
def export_device_logs(serial: str = "", event_type: str = "",
|
||||
date_from: str = "", date_to: str = "") -> list[dict]:
|
||||
"""导出全部设备事件日志(不分页)"""
|
||||
conn = get_conn()
|
||||
try:
|
||||
with conn.cursor() as cur:
|
||||
where = []
|
||||
params = []
|
||||
if serial:
|
||||
where.append("device_serial LIKE %s")
|
||||
params.append(f"%{serial}%")
|
||||
if event_type:
|
||||
where.append("event_type = %s")
|
||||
params.append(event_type)
|
||||
if date_from:
|
||||
where.append("create_time >= %s")
|
||||
params.append(date_from if len(date_from) > 10 else date_from)
|
||||
if date_to:
|
||||
where.append("create_time <= %s")
|
||||
params.append(date_to if len(date_to) > 10 else date_to + " 23:59:59")
|
||||
|
||||
where_clause = " AND ".join(where) if where else "1=1"
|
||||
cur.execute(
|
||||
f"SELECT * FROM tb_device_log WHERE {where_clause} "
|
||||
f"ORDER BY id DESC",
|
||||
params,
|
||||
)
|
||||
return cur.fetchall()
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
def delete_device_logs(serial: str = "", event_type: str = "",
|
||||
date_from: str = "", date_to: str = "") -> int:
|
||||
"""删除符合条件的设备日志,返回删除行数。至少需要一个条件。"""
|
||||
|
||||
Reference in New Issue
Block a user