|
@@ -13,7 +13,7 @@ import time
|
|
|
|
|
|
import requests
|
|
|
from dateutil.parser import parse
|
|
|
-from django.db import transaction
|
|
|
+from django.db import transaction, connection, connections
|
|
|
from django.db.models import Sum, Count
|
|
|
from django.http import QueryDict
|
|
|
from django.views import View
|
|
@@ -578,25 +578,39 @@ class SmartSocketView(View):
|
|
|
page, size = int(page), int(size)
|
|
|
|
|
|
try:
|
|
|
- scene_log_qs = SceneLog.objects.filter(device_id=serial_number).values('tasks', 'status',
|
|
|
- 'created_time')
|
|
|
- if startTime is None and endTime is None:
|
|
|
- scene_log_qs = scene_log_qs.order_by('-created_time')[(page - 1) * size:page * size]
|
|
|
- if not scene_log_qs.exists():
|
|
|
- return response.json(0, [])
|
|
|
+ sql_query = """
|
|
|
+ SELECT DISTINCT
|
|
|
+ tasks,
|
|
|
+ status,
|
|
|
+ created_time
|
|
|
+ FROM scene_log
|
|
|
+ WHERE device_id = %s {}
|
|
|
+ ORDER BY created_time,id DESC
|
|
|
+ LIMIT %s, %s;
|
|
|
+ """
|
|
|
+
|
|
|
+ params = [serial_number]
|
|
|
+
|
|
|
+ if startTime is not None and endTime is not None:
|
|
|
+ sql_query = sql_query.format(
|
|
|
+ "AND created_time >= %s AND created_time < %s ")
|
|
|
+ params.extend([startTime, endTime])
|
|
|
else:
|
|
|
- scene_log_qs = scene_log_qs.filter(device_id=serial_number, created_time__gte=startTime,
|
|
|
- created_time__lt=endTime).order_by(
|
|
|
- '-created_time', '-id')[(page - 1) * size:page * size]
|
|
|
- if not scene_log_qs.exists():
|
|
|
- return response.json(0, [])
|
|
|
+ sql_query = sql_query.format(" ")
|
|
|
+ params.extend([(page - 1) * size, size])
|
|
|
+ cursor = connections['mysql02'].cursor()
|
|
|
+ cursor.execute(sql_query, params)
|
|
|
+ results = cursor.fetchall()
|
|
|
+ # 关闭游标
|
|
|
+ cursor.close()
|
|
|
+ connections.close_all()
|
|
|
log_list = []
|
|
|
- for scene_log in scene_log_qs:
|
|
|
+ for result in results:
|
|
|
data = {
|
|
|
'serialNumber': serial_number,
|
|
|
- 'tasks': scene_log['tasks'] if scene_log['tasks'] else '',
|
|
|
- 'status': scene_log['status'],
|
|
|
- 'createdTime': scene_log['created_time'],
|
|
|
+ 'tasks': result[0] if result[0] else '',
|
|
|
+ 'status': result[1],
|
|
|
+ 'createdTime': result[2],
|
|
|
}
|
|
|
log_list.append(data)
|
|
|
return response.json(0, log_list)
|