Prechádzať zdrojové kódy

查询智能场景日志日期

peng 3 rokov pred
rodič
commit
63f265b25e

+ 44 - 2
Controller/SensorGateway/SmartSceneController.py

@@ -9,7 +9,7 @@ import time
 
 from django.core.exceptions import ObjectDoesNotExist
 from django.db import transaction
-from django.db.models import F, Q
+from django.db.models import F, Q, Count
 from django.views import View
 
 from Model.models import FamilyRoomDevice, GatewaySubDevice, FamilyRoom, SmartScene, EffectiveTime, Device_Info, \
@@ -52,6 +52,8 @@ class SmartSceneView(View):
             return self.delete_smart_scene(request_dict, response)
         elif operation == 'log':  # 查询智能场景日志
             return self.scene_log(request_dict, response)
+        elif operation == 'log-date':
+            return self.scene_log_date(request_dict, response)
         else:
             return response.json(414)
 
@@ -546,7 +548,6 @@ class SmartSceneView(View):
                     return response.json(173)
                 serial_number = device_qs[0]['serial_number']
 
-
             task_list = []
             for task in tasks_list:
                 task_temp = {
@@ -685,3 +686,44 @@ class SmartSceneView(View):
         except Exception as e:
             print(repr(e))
             return response.json(500, repr(e))
+
+    @staticmethod
+    def scene_log_date(request_dict, response):
+        """
+        查询场景日志日期
+        @param request_dict: 请求参数
+        @request_dict deviceId: 网关id
+        @request_dict subDeviceId: 子设备id
+        @param response: 响应对象
+        @return: response
+        """
+        device_id = request_dict.get('deviceId', None)
+        sub_device_id = request_dict.get('subDeviceId', None)
+
+        if device_id:
+            device_dict = {
+                'device_id': device_id
+            }
+        else:
+            device_dict = {
+                'sub_device_id': sub_device_id
+            }
+        if not any([device_id, sub_device_id]):
+            return response.json(444, {'error param': 'device_id and gatewaySubId'})
+
+        try:
+            scene_log_qs = SceneLog.objects.extra(
+                select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
+                               filter(**device_dict). \
+                               annotate(count=Count('created_time')). \
+                               order_by('-date')[:31]
+            log_date_list = []
+            for scene_log in scene_log_qs:
+                log_date_list.append({
+                    'timestamp': CommonService.str_to_timestamp(scene_log['date'], '%Y-%m-%d'),
+                    'count': scene_log['count'],
+                    'format': scene_log['date'],
+                })
+            return response.json(0, log_date_list)
+        except Exception as e:
+            return response.json(500, repr(e))