|
@@ -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 = {
|