|
@@ -773,40 +773,59 @@ class SmartSceneView(View):
|
|
|
|
|
|
if not all([family_id, page, size]):
|
|
if not all([family_id, page, size]):
|
|
return response.json(444, {'error param': 'familyId or page or size'})
|
|
return response.json(444, {'error param': 'familyId or page or size'})
|
|
- if not any([device_id, sub_device_id]):
|
|
|
|
- return response.json(444, {'error param': 'deviceId and subDeviceId'})
|
|
|
|
- if sub_device_id:
|
|
|
|
|
|
+
|
|
|
|
+ device_list = []
|
|
|
|
+ sub_device_list = []
|
|
|
|
+ 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)
|
|
family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
|
|
|
|
+ sub_device_list.append(sub_device_id)
|
|
else:
|
|
else:
|
|
family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
|
|
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():
|
|
if not family_room_device_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
-
|
|
|
|
try:
|
|
try:
|
|
page, size = int(page), int(size)
|
|
page, size = int(page), int(size)
|
|
- if sub_device_id:
|
|
|
|
- scene_log_qs = SceneLog.objects.filter(sub_device_id=sub_device_id)
|
|
|
|
- device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
|
|
|
|
- else:
|
|
|
|
- scene_log_qs = SceneLog.objects.filter(device_id=device_id)
|
|
|
|
- device_qs = Device_Info.objects.filter(id=device_id).values('Type')
|
|
|
|
|
|
+ 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',
|
|
'created_time',
|
|
'created_time',
|
|
|
|
+ 'device_id',
|
|
|
|
+ 'sub_device_id',
|
|
'scene_name',
|
|
'scene_name',
|
|
'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', 'scene_name', 'tasks').order_by(
|
|
|
|
|
|
+ scene_log_qs = scene_log_qs.values('status', 'created_time', 'device_id', 'sub_device_id', 'scene_name',
|
|
|
|
+ '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:
|
|
- if sub_device_id:
|
|
|
|
- item['device_type'] = device_qs[0]['device_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:
|
|
- item['device_type'] = device_qs[0]['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:
|
|
@@ -828,28 +847,32 @@ class SmartSceneView(View):
|
|
sub_device_id = request_dict.get('subDeviceId', None)
|
|
sub_device_id = request_dict.get('subDeviceId', None)
|
|
if not family_id:
|
|
if not family_id:
|
|
return response.json(444, {'error param': 'familyId'})
|
|
return response.json(444, {'error param': 'familyId'})
|
|
- if not any([device_id, sub_device_id]):
|
|
|
|
- return response.json(444, {'error param': 'deviceId and subDeviceId'})
|
|
|
|
- if sub_device_id:
|
|
|
|
|
|
+
|
|
|
|
+ device_list = []
|
|
|
|
+ sub_device_list = []
|
|
|
|
+ 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)
|
|
family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
|
|
|
|
+ sub_device_list.append(sub_device_id)
|
|
else:
|
|
else:
|
|
family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
|
|
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():
|
|
if not family_room_device_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
|
|
|
|
try:
|
|
try:
|
|
- if sub_device_id:
|
|
|
|
- scene_log_qs = SceneLog.objects.extra(
|
|
|
|
- select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
|
|
|
|
- filter(sub_device_id=sub_device_id). \
|
|
|
|
- annotate(count=Count('created_time')). \
|
|
|
|
- order_by('-date')[:31]
|
|
|
|
- else:
|
|
|
|
- scene_log_qs = SceneLog.objects.extra(
|
|
|
|
- select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
|
|
|
|
- filter(device_id=device_id). \
|
|
|
|
- annotate(count=Count('created_time')). \
|
|
|
|
- order_by('-date')[:31]
|
|
|
|
|
|
+ scene_log_qs = SceneLog.objects.extra(
|
|
|
|
+ select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
|
|
|
|
+ filter(Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list)). \
|
|
|
|
+ annotate(count=Count('created_time')). \
|
|
|
|
+ order_by('-date')[:31]
|
|
log_date_list = []
|
|
log_date_list = []
|
|
for scene_log in scene_log_qs:
|
|
for scene_log in scene_log_qs:
|
|
log_date_list.append({
|
|
log_date_list.append({
|