فهرست منبع

新添加任务-查询设备

guanhailong 3 سال پیش
والد
کامیت
b6e2b61b5e
1فایلهای تغییر یافته به همراه28 افزوده شده و 29 حذف شده
  1. 28 29
      Controller/SensorGateway/SmartSceneController.py

+ 28 - 29
Controller/SensorGateway/SmartSceneController.py

@@ -7,7 +7,7 @@
 import time
 
 from django.core.exceptions import ObjectDoesNotExist
-from django.db.models import F
+from django.db.models import F, Q
 from django.views import View
 
 from Model.models import FamilyRoomDevice, GatewaySubDevice, FamilyRoom, SmartScene, EffectiveTime, Device_Info
@@ -107,40 +107,39 @@ class SmartSceneView(View):
             if device_id:
                 res = cls.get_gateway_data(device_id)
             else:
-                device_id_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_id', 'device_type')
-                device_id = device_id_qs[0]['device_id']
-                device_type = device_id_qs[0]['device_type']
+                sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_id', 'device_type')
+                device_id = sub_device_qs[0]['device_id']
+                device_type = sub_device_qs[0]['device_type']
                 if device_type != 216:
                     res = cls.get_gateway_data(device_id)
                 else:
                     sub_device_list = []
                     gateway_data = cls.get_gateway_data(device_id)
                     sub_device_list.append(gateway_data)
-
-                    gate_way = GatewaySubDevice.objects.filter(device_id=device_id).values('id', 'nickname', 'status',
-                                                                                           'device_type')
-
-                    for gateway_sub_device in gate_way:
-                        device_type = gateway_sub_device['device_type']
-                        if device_type == 216:
-                            pass
-                        else:
-                            sub_device_id = gateway_sub_device['id']
-                            room_qs = FamilyRoomDevice.objects.filter(sub_device=sub_device_id).values('room_id')
-                            room_qs.exists()
-                            room_qs = room_qs.first()
-                            room_id = room_qs['room_id']
-                            room_id_qs = FamilyRoom.objects.filter(id=room_id).values('name')
-                            room_name = room_id_qs.first()['name'] if room_id_qs.exists() else ''
-
-                            try:
-                                if gate_way.exists():
-                                    gateway_sub_device['room_name'] = FamilyRoom.objects.get(id=room_id).name
-                            except ObjectDoesNotExist:
-                                gateway_sub_device['room_name'] = room_name
-                                gateway_sub_device.pop('id')
-                            sub_device_list.append(gateway_sub_device)
-                    res = {'sub_device_list': sub_device_list}
+                    sub_device_qs = GatewaySubDevice.objects.filter(
+                        Q(device_id=device_id) & Q(device_type=215) | Q(device_type=219)).values('id', 'nickname',
+                                                                                                 'status',
+                                                                                                 'device_type')
+                    sub_device_qs = sub_device_qs.annotate(gatewaySubId=F('id'),
+                                                                           deviceType=F('device_type'),
+                                                                           deviceNickName=F('nickname')). \
+                        values('gatewaySubId', 'deviceType', 'deviceNickName', 'status')
+                    for sub_device in sub_device_qs:
+                        sub_device_id = sub_device['gatewaySubId']
+                        room_qs = FamilyRoomDevice.objects.filter(sub_device=sub_device_id).values('room_id')
+                        room_qs.exists()
+                        room_qs = room_qs.first()
+                        room_id = room_qs['room_id']
+                        room_id_qs = FamilyRoom.objects.filter(id=room_id).values('name')
+                        room_name = room_id_qs.first()['name'] if room_id_qs.exists() else ''
+                        try:
+                            if sub_device_qs.exists():
+                                sub_device['roomName'] = FamilyRoom.objects.get(id=room_id).name
+                        except ObjectDoesNotExist:
+                            sub_device['roomName'] = room_name
+                            sub_device.pop('id')
+                        sub_device_list.append(sub_device)
+                    res = sub_device_list
 
             return response.json(0, res)
         except Exception as e: