소스 검색

loocam场景日志新增参数

peng 2 년 전
부모
커밋
1adb7712dd
1개의 변경된 파일55개의 추가작업 그리고 27개의 파일을 삭제
  1. 55 27
      Controller/SensorGateway/SmartSceneController.py

+ 55 - 27
Controller/SensorGateway/SmartSceneController.py

@@ -764,27 +764,38 @@ class SmartSceneView(View):
         @return: response
         @return: response
         """
         """
         family_id = request_dict.get('familyId', None)
         family_id = request_dict.get('familyId', None)
+        device_id = request_dict.get('deviceId', None)
+        sub_device_id = request_dict.get('subDeviceId', None)
         page = request_dict.get('page', None)
         page = request_dict.get('page', None)
         size = request_dict.get('size', None)
         size = request_dict.get('size', None)
         start_time = request_dict.get('startTime', None)
         start_time = request_dict.get('startTime', None)
         end_time = request_dict.get('endTime', None)
         end_time = request_dict.get('endTime', None)
 
 
         if not all([family_id, page, size]):
         if not all([family_id, page, size]):
-            return response.json(444, {'error param': 'page or size'})
+            return response.json(444, {'error param': 'familyId or page or size'})
 
 
         device_list = []
         device_list = []
         sub_device_list = []
         sub_device_list = []
-        family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id', 'sub_device')
-        for item in family_room_device_qs:
-            if item['sub_device'] and item['sub_device'] not in sub_device_list:
-                sub_device_list.append(item['sub_device'])
-            if item['device_id'] not in device_list:
-                device_list.append(item['device_id'])
-
+        if not device_id and not sub_device_id:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id)
+            family_device_qs = family_room_device_qs.values('device', 'sub_device')
+            for device in family_device_qs:
+                if device['device'] not in device_list:
+                    device_list.append(device['device'])
+                if device['sub_device']:
+                    sub_device_list.append(device['sub_device'])
+        elif sub_device_id:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
+            sub_device_list.append(sub_device_id)
+        else:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
+            device_list.append(device_id)
+        if not family_room_device_qs.exists():
+            return response.json(173)
         try:
         try:
             page, size = int(page), int(size)
             page, size = int(page), int(size)
-            scene_log_qs = SceneLog.objects.filter(
-                Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list))
+            scene_log_qs = SceneLog.objects.filter(Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list))
+
             if start_time and end_time:
             if start_time and end_time:
                 scene_log_qs = scene_log_qs.filter(created_time__range=(start_time, end_time)).values(
                 scene_log_qs = scene_log_qs.filter(created_time__range=(start_time, end_time)).values(
                     'status',
                     'status',
@@ -795,21 +806,26 @@ class SmartSceneView(View):
                     'tasks').order_by(
                     'tasks').order_by(
                     '-created_time')[(page - 1) * size:page * size]
                     '-created_time')[(page - 1) * size:page * size]
             else:
             else:
-                scene_log_qs = scene_log_qs.values('status',
-                                                   'created_time', 'device_id', 'sub_device_id', 'scene_name',
+                scene_log_qs = scene_log_qs.values('status', 'created_time', 'device_id', 'sub_device_id', 'scene_name',
                                                    'tasks').order_by(
                                                    'tasks').order_by(
                     '-created_time')[(page - 1) * size:page * size]
                     '-created_time')[(page - 1) * size:page * size]
             if not scene_log_qs.exists():
             if not scene_log_qs.exists():
                 return response.json(0, [])
                 return response.json(0, [])
             for item in scene_log_qs:
             for item in scene_log_qs:
-                device_id = item['device_id']
-                sub_device_id = item['sub_device_id']
-                if device_id:
-                    qs = Device_Info.objects.filter(id=device_id).values('Type')
-                    item['device_type'] = qs[0]['Type']
+                if not device_id and not sub_device_id:
+                    if not item['sub_device_id']:
+                        device_qs = Device_Info.objects.filter(id=device_id).values('Type')
+                        item['device_type'] = device_qs[0]['Type'] if device_qs.exists() else ''
+                    else:
+                        device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
+                        item['device_type'] = device_qs[0]['device_type'] if device_qs.exists() else ''
+
+                elif sub_device_id:
+                    device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
+                    item['device_type'] = device_qs[0]['device_type'] if device_qs.exists() else ''
                 else:
                 else:
-                    qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
-                    item['device_type'] = qs[0]['device_type']
+                    device_qs = Device_Info.objects.filter(id=device_id).values('Type')
+                    item['device_type'] = device_qs[0]['Type'] if device_qs.exists() else ''
                 item['tasks'] = eval(item['tasks'])
                 item['tasks'] = eval(item['tasks'])
             return response.json(0, list(scene_log_qs))
             return response.json(0, list(scene_log_qs))
         except Exception as e:
         except Exception as e:
@@ -827,17 +843,29 @@ class SmartSceneView(View):
         @return: response
         @return: response
         """
         """
         family_id = request_dict.get('familyId', None)
         family_id = request_dict.get('familyId', None)
-
+        device_id = request_dict.get('deviceId', None)
+        sub_device_id = request_dict.get('subDeviceId', None)
         if not family_id:
         if not family_id:
-            return response.json(444, {'error param': 'device_id and gatewaySubId'})
+            return response.json(444, {'error param': 'familyId'})
+
         device_list = []
         device_list = []
         sub_device_list = []
         sub_device_list = []
-        family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id', 'sub_device')
-        for item in family_room_device_qs:
-            if item['sub_device'] and item['sub_device'] not in sub_device_list:
-                sub_device_list.append(item['sub_device'])
-            if item['device_id'] not in device_list:
-                device_list.append(item['device_id'])
+        if not device_id and not sub_device_id:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id)
+            family_device_qs = family_room_device_qs.values('device', 'sub_device')
+            for device in family_device_qs:
+                if device['device'] not in device_list:
+                    device_list.append(device['device'])
+                if device['sub_device']:
+                    sub_device_list.append(device['sub_device'])
+        elif sub_device_id:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
+            sub_device_list.append(sub_device_id)
+        else:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
+            device_list.append(device_id)
+        if not family_room_device_qs.exists():
+            return response.json(173)
 
 
         try:
         try:
             scene_log_qs = SceneLog.objects.extra(
             scene_log_qs = SceneLog.objects.extra(