|
@@ -48,8 +48,8 @@ class SmartSceneView(View):
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
|
|
|
|
- @staticmethod
|
|
|
|
- def condition_devices(request_dict, response):
|
|
|
|
|
|
+ @classmethod
|
|
|
|
+ def condition_devices(cls, request_dict, response):
|
|
"""
|
|
"""
|
|
添加条件-查询设备
|
|
添加条件-查询设备
|
|
@param request_dict: 请求参数
|
|
@param request_dict: 请求参数
|
|
@@ -68,23 +68,8 @@ class SmartSceneView(View):
|
|
gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id)
|
|
gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id)
|
|
if not gateway_sub_device_qs.exists():
|
|
if not gateway_sub_device_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
- gateway_sub_device_qs = gateway_sub_device_qs.annotate(gatewaySubId=F('id'), deviceType=F('device_type'),
|
|
|
|
- deviceNickName=F('nickname')). \
|
|
|
|
- values('gatewaySubId', 'deviceType', 'deviceNickName', 'status')
|
|
|
|
- sub_device_list = []
|
|
|
|
- for sub_device in gateway_sub_device_qs:
|
|
|
|
- family_room_device_qs = FamilyRoomDevice.objects.filter(sub_device=sub_device['gatewaySubId']). \
|
|
|
|
- values('room_id')
|
|
|
|
- if not family_room_device_qs.exists():
|
|
|
|
- sub_device['roomName'] = ''
|
|
|
|
- else:
|
|
|
|
- room_id = family_room_device_qs[0]['room_id']
|
|
|
|
- try:
|
|
|
|
- sub_device['roomName'] = FamilyRoom.objects.get(id=room_id).name
|
|
|
|
- except ObjectDoesNotExist:
|
|
|
|
- sub_device['roomName'] = ''
|
|
|
|
- sub_device_list.append(sub_device)
|
|
|
|
- return response.json(0, sub_device_list)
|
|
|
|
|
|
+ res = cls.get_sub_device_room_name(gateway_sub_device_qs)
|
|
|
|
+ return response.json(0, res)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
return response.json(500, repr(e))
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@@ -110,41 +95,52 @@ class SmartSceneView(View):
|
|
sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_id', '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_id = sub_device_qs[0]['device_id']
|
|
device_type = sub_device_qs[0]['device_type']
|
|
device_type = sub_device_qs[0]['device_type']
|
|
|
|
+
|
|
if device_type != 216:
|
|
if device_type != 216:
|
|
res = cls.get_gateway_data(device_id)
|
|
res = cls.get_gateway_data(device_id)
|
|
else:
|
|
else:
|
|
- sub_device_list = []
|
|
|
|
gateway_data = cls.get_gateway_data(device_id)
|
|
gateway_data = cls.get_gateway_data(device_id)
|
|
- sub_device_list.append(gateway_data)
|
|
|
|
sub_device_qs = GatewaySubDevice.objects.filter(
|
|
sub_device_qs = GatewaySubDevice.objects.filter(
|
|
Q(device_id=device_id) & Q(device_type=215) | Q(device_type=219)).values('id', 'nickname',
|
|
Q(device_id=device_id) & Q(device_type=215) | Q(device_type=219)).values('id', 'nickname',
|
|
'status',
|
|
'status',
|
|
'device_type')
|
|
'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
|
|
|
|
|
|
+ if not sub_device_qs.exists():
|
|
|
|
+ return response.json(173)
|
|
|
|
+ res = cls.get_sub_device_room_name(sub_device_qs, gateway_data)
|
|
|
|
|
|
return response.json(0, res)
|
|
return response.json(0, res)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
return response.json(500, repr(e))
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
|
|
+ @staticmethod
|
|
|
|
+ def get_sub_device_room_name(sub_device_qs, gateway_data=None):
|
|
|
|
+ """
|
|
|
|
+ 获取房间名称
|
|
|
|
+ @param sub_device_qs: 子设备信息
|
|
|
|
+ @param gateway_data: 网关参数
|
|
|
|
+ @return: sub_device_list
|
|
|
|
+ """
|
|
|
|
+ sub_device_list = []
|
|
|
|
+ if gateway_data:
|
|
|
|
+ sub_device_list.append(gateway_data)
|
|
|
|
+ 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:
|
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(sub_device=sub_device['gatewaySubId']). \
|
|
|
|
+ values('room_id')
|
|
|
|
+ if not family_room_device_qs.exists():
|
|
|
|
+ sub_device['roomName'] = ''
|
|
|
|
+ else:
|
|
|
|
+ room_id = family_room_device_qs[0]['room_id']
|
|
|
|
+ try:
|
|
|
|
+ sub_device['roomName'] = FamilyRoom.objects.get(id=room_id).name
|
|
|
|
+ except ObjectDoesNotExist:
|
|
|
|
+ sub_device['roomName'] = ''
|
|
|
|
+ sub_device_list.append(sub_device)
|
|
|
|
+ return sub_device_list
|
|
|
|
+
|
|
@staticmethod
|
|
@staticmethod
|
|
def get_gateway_data(device_id):
|
|
def get_gateway_data(device_id):
|
|
"""
|
|
"""
|