|
@@ -574,7 +574,7 @@ class SmartSceneView(View):
|
|
if not device_id:
|
|
if not device_id:
|
|
return response.json(444, {'error param': 'deviceId'})
|
|
return response.json(444, {'error param': 'deviceId'})
|
|
sub_device_id = 0
|
|
sub_device_id = 0
|
|
- device_qs = Device_Info.objects.filter(id=device_id).value('serial_number')
|
|
|
|
|
|
+ device_qs = Device_Info.objects.filter(id=device_id).values('serial_number')
|
|
if not device_qs.exists():
|
|
if not device_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
serial_number = device_qs[0]['serial_number']
|
|
serial_number = device_qs[0]['serial_number']
|
|
@@ -705,39 +705,54 @@ class SmartSceneView(View):
|
|
@param response: 响应对象
|
|
@param response: 响应对象
|
|
@return: response
|
|
@return: response
|
|
"""
|
|
"""
|
|
|
|
+ family_id = request_dict.get('familyId', None)
|
|
page = request_dict.get('page', None)
|
|
page = request_dict.get('page', None)
|
|
size = request_dict.get('size', None)
|
|
size = request_dict.get('size', None)
|
|
start_time = request_dict.get('startTime', None)
|
|
start_time = request_dict.get('startTime', None)
|
|
end_time = request_dict.get('endTime', None)
|
|
end_time = request_dict.get('endTime', None)
|
|
|
|
|
|
- if not all([page, size]):
|
|
|
|
|
|
+ if not all([family_id, page, size]):
|
|
return response.json(444, {'error param': 'page or size'})
|
|
return response.json(444, {'error param': 'page or size'})
|
|
|
|
|
|
|
|
+ device_list = []
|
|
|
|
+ sub_device_list = []
|
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id', 'sub_device')
|
|
|
|
+ for item in family_room_device_qs:
|
|
|
|
+ if item['sub_device'] and item['sub_device'] not in sub_device_list:
|
|
|
|
+ sub_device_list.append(item['sub_device'])
|
|
|
|
+ if item['device_id'] not in device_list:
|
|
|
|
+ device_list.append(item['device_id'])
|
|
|
|
+
|
|
try:
|
|
try:
|
|
page, size = int(page), int(size)
|
|
page, size = int(page), int(size)
|
|
|
|
+ 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 = SceneLog.objects.filter(created_time__range=(start_time, end_time)). \
|
|
|
|
- values('scene_id', 'status', 'created_time').order_by(
|
|
|
|
|
|
+ scene_log_qs = scene_log_qs.filter(created_time__range=(start_time, end_time)).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]
|
|
else:
|
|
else:
|
|
- scene_log_qs = SceneLog.objects.all().values('scene_id', 'status',
|
|
|
|
- 'created_time').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:
|
|
- scene_id = item['scene_id']
|
|
|
|
- smart_scene_qs = SmartScene.objects.filter(id=scene_id).values('scene_name', 'device_id', 'sub_device_id', 'tasks')
|
|
|
|
- device_id = smart_scene_qs[0]['device_id']
|
|
|
|
- sub_device_id = smart_scene_qs[0]['sub_device_id']
|
|
|
|
|
|
+ device_id = item['device_id']
|
|
|
|
+ sub_device_id = item['sub_device_id']
|
|
if device_id:
|
|
if device_id:
|
|
qs = Device_Info.objects.filter(id=device_id).values('Type')
|
|
qs = Device_Info.objects.filter(id=device_id).values('Type')
|
|
item['device_type'] = qs[0]['Type']
|
|
item['device_type'] = qs[0]['Type']
|
|
else:
|
|
else:
|
|
qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
|
|
qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
|
|
item['device_type'] = qs[0]['device_type']
|
|
item['device_type'] = qs[0]['device_type']
|
|
- item['scene_name'] = smart_scene_qs[0]['scene_name']
|
|
|
|
- item['tasks'] = eval(smart_scene_qs[0]['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:
|
|
print(repr(e))
|
|
print(repr(e))
|
|
@@ -753,24 +768,23 @@ class SmartSceneView(View):
|
|
@param response: 响应对象
|
|
@param response: 响应对象
|
|
@return: response
|
|
@return: response
|
|
"""
|
|
"""
|
|
- device_id = request_dict.get('deviceId', None)
|
|
|
|
- sub_device_id = request_dict.get('subDeviceId', None)
|
|
|
|
|
|
+ family_id = request_dict.get('familyId', None)
|
|
|
|
|
|
- if device_id:
|
|
|
|
- device_dict = {
|
|
|
|
- 'device_id': device_id
|
|
|
|
- }
|
|
|
|
- else:
|
|
|
|
- device_dict = {
|
|
|
|
- 'sub_device_id': sub_device_id
|
|
|
|
- }
|
|
|
|
- if not any([device_id, sub_device_id]):
|
|
|
|
|
|
+ if not family_id:
|
|
return response.json(444, {'error param': 'device_id and gatewaySubId'})
|
|
return response.json(444, {'error param': 'device_id and gatewaySubId'})
|
|
|
|
+ device_list = []
|
|
|
|
+ sub_device_list = []
|
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id', 'sub_device')
|
|
|
|
+ for item in family_room_device_qs:
|
|
|
|
+ if item['sub_device'] and item['sub_device'] not in sub_device_list:
|
|
|
|
+ sub_device_list.append(item['sub_device'])
|
|
|
|
+ if item['device_id'] not in device_list:
|
|
|
|
+ device_list.append(item['device_id'])
|
|
|
|
|
|
try:
|
|
try:
|
|
scene_log_qs = SceneLog.objects.extra(
|
|
scene_log_qs = SceneLog.objects.extra(
|
|
select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
|
|
select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
|
|
- filter(**device_dict). \
|
|
|
|
|
|
+ filter(Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list)). \
|
|
annotate(count=Count('created_time')). \
|
|
annotate(count=Count('created_time')). \
|
|
order_by('-date')[:31]
|
|
order_by('-date')[:31]
|
|
log_date_list = []
|
|
log_date_list = []
|