Pārlūkot izejas kodu

优化查询插座上报日志

guanhailong 2 gadi atpakaļ
vecāks
revīzija
b9efdb20d1
1 mainītis faili ar 7 papildinājumiem un 8 dzēšanām
  1. 7 8
      Controller/SensorGateway/SmartSocketController.py

+ 7 - 8
Controller/SensorGateway/SmartSocketController.py

@@ -441,8 +441,8 @@ class SmartSocketView(View):
         # 确定是否会传值
         if not all([serial_number]):
             return response.json(444, {'error param': 'serialNumber'})
-        all_socket_power_qs = SocketPowerStatistics.objects.\
-            filter(serial_number=serial_number).values('electricity', 'accumulated_time', 'power', 'created_time')\
+        all_socket_power_qs = SocketPowerStatistics.objects. \
+            filter(serial_number=serial_number).values('electricity', 'accumulated_time', 'power', 'created_time') \
             .order_by('-created_time')
         if not all_socket_power_qs.exists():
             return response.json(0, {})
@@ -578,16 +578,15 @@ 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').distinct()
             if startTime is None and endTime is None:
-                scene_log_qs = SceneLog.objects.filter(device_id=serial_number).values('tasks', 'status',
-                                                                                       'created_time').order_by(
-                    '-created_time', '-id')[(page - 1) * size:page * size]
+                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, [])
             else:
-                scene_log_qs = SceneLog.objects.filter(device_id=serial_number, created_time__gte=startTime,
-                                                       created_time__lt=endTime).values('tasks', 'status',
-                                                                                        'created_time').order_by(
+                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, [])