浏览代码

家庭返回所有设备、房间返回所有设备

peng 3 年之前
父节点
当前提交
33515e9b66

+ 49 - 21
Controller/SensorGateway/GatewayFamilyRoomController.py

@@ -12,7 +12,7 @@ from django.db.models import Q, Count, F
 from django.views.generic.base import View
 
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
-from Model.models import FamilyRoomDevice, FamilyRoom
+from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 
@@ -168,17 +168,30 @@ class GatewayFamilyRoomView(View):
         family_id = int(family_id)
         room_id = int(room_id)
         room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, room_id=room_id).order_by('sort').values(
-            'device_id').annotate(count=Count('device_id')).values('device_id', 'device__Type', 'device__NickName')
+            'device_id', 'device__Type', 'device__NickName', 'sub_device')
         device_room = []
         if room_device_qs.exists():
             room_name = FamilyRoom.objects.filter(id=room_id)
             for item in room_device_qs:
-                device_room.append({
-                    'deviceId': item['device_id'],
-                    'deviceType': item['device__Type'],
-                    'nickName': item['device__NickName'],
-                    'roomName': room_name.first().name if room_name.exists() else '',
-                })
+                if not item['sub_device']:
+                    device_dict = {
+                        'deviceId': item['device_id'],
+                        'deviceType': item['device__Type'],
+                        'nickName': item['device__NickName'],
+                        'roomName': room_name.first().name if room_name.exists() else '',
+                    }
+                else:
+                    sub_device_qs = GatewaySubDevice.objects.filter(id=item['sub_device']).values('id',
+                                                                                                  'device_type',
+                                                                                                  'nickname')
+                    device_dict = {
+                        'deviceId': sub_device_qs[0]['id'],
+                        'deviceType': sub_device_qs[0]['device_type'],
+                        'nickName': sub_device_qs[0]['nickname'],
+                        'roomName': room_name.first().name if room_name.exists() else '',
+                    }
+
+                device_room.append(device_dict)
 
         device_not_room = []
         device_not_room_qs = FamilyRoomDevice.objects.filter(family_id=family_id)
@@ -212,9 +225,12 @@ class GatewayFamilyRoomView(View):
         if not family_id:
             return response.json(444)
         try:
-            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=0). \
-                annotate(type=F('device__Type'), nickname=F('device__NickName')). \
-                values('device_id', 'type', 'nickname', 'room_id', 'sort').order_by('sort')
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id',
+                                                                                                'device__Type',
+                                                                                                'device__NickName',
+                                                                                                'room_id',
+                                                                                                'sub_device').order_by(
+                'sort')
             if not family_room_device_qs.exists():
                 return response.json(0, [])
 
@@ -223,20 +239,32 @@ class GatewayFamilyRoomView(View):
             # 查询房间名称
             for device in family_room_device_qs:
                 room_id = device['room_id']
-                device_type = device['type']
+                device_type = device['device__Type']
                 room_name = FamilyRoom.objects.filter(id=room_id)
-                if device_type == 200:   # 网关设备
-                    gateways.append({
-                        'deviceId': device['device_id'],
-                        'deviceType': device_type,
-                        'nickName': device['nickname'],
-                        'roomName': room_name.first().name if room_name.exists() else '',
-                    })
-                else:   # 摄像头设备
+                if device_type == 200:  # 网关设备
+                    if not device['sub_device']:
+                        device_dict = {
+                            'deviceId': device['device_id'],
+                            'deviceType': device_type,
+                            'nickName': device['device__NickName'],
+                            'roomName': room_name.first().name if room_name.exists() else '',
+                        }
+                    else:
+                        sub_device_qs = GatewaySubDevice.objects.filter(id=device['sub_device']).values('device_type',
+                                                                                                    'nickname')
+                        device_dict = {
+                            'deviceId': device['sub_device'],
+                            'deviceType': sub_device_qs[0]['device_type'],
+                            'nickName': sub_device_qs[0]['nickname'],
+                            'roomName': room_name.first().name if room_name.exists() else '',
+                        }
+
+                    gateways.append(device_dict)
+                else:  # 摄像头设备
                     cameras.append({
                         'deviceId': device['device_id'],
                         'deviceType': device_type,
-                        'nickName': device['nickname'],
+                        'nickName': device['device__NickName'],
                         'roomName': room_name.first().name if room_name.exists() else '',
                     })
             device_room = {

+ 2 - 0
Controller/SensorGateway/SmartSceneController.py

@@ -238,6 +238,7 @@ class SmartSceneView(View):
                 if not device_info_qs.exists():
                     return response.json(173)
                 serial_number = device_info_qs[0]['serial_number']
+                msg['sensor_delay'] = tasks_list[0]['delay_time']
             else:  # 子设备设置场景
                 if not sub_device_id:
                     return response.json(444, {'error param': 'subDeviceId'})
@@ -605,6 +606,7 @@ class SmartSceneView(View):
                 if not device_qs.exists():
                     return response.json(173)
                 serial_number = device_qs[0]['serial_number']
+                msg['sensor_delay'] = tasks_list[0]['delay_time']
 
             task_list = []
             for task in tasks_list: