Преглед изворни кода

获取场景列表返回插座数据

locky пре 1 година
родитељ
комит
e34cdf6e0f
1 измењених фајлова са 13 додато и 3 уклоњено
  1. 13 3
      Controller/SensorGateway/SmartSceneController.py

+ 13 - 3
Controller/SensorGateway/SmartSceneController.py

@@ -432,7 +432,8 @@ class SmartSceneView(View):
                 smart_scene_qs = SmartScene.objects.filter(user_id=user_id, sub_device_id=sub_device_id)
             if not smart_scene_qs.exists():
                 return response.json(173)
-            smart_scene_qs = smart_scene_qs.values('id', 'scene_name', 'is_enable', 'device_id', 'sub_device_id')
+            smart_scene_qs = smart_scene_qs.values(
+                'id', 'scene_name', 'is_enable', 'device_id', 'sub_device_id', 'tasks')
             smart_scene_list = []
             for item in smart_scene_qs:
                 smart_scene_dict = {
@@ -441,8 +442,17 @@ class SmartSceneView(View):
                     'is_enable': item['is_enable']
                 }
                 if item['device_id']:
-                    device_qs = Device_Info.objects.filter(id=item['device_id'], userID=user_id).values('NickName',
-                                                                                                        'Type')
+                    data = {
+                        'userID': user_id
+                    }
+                    # 如果最后一个任务执行的设备是插座,返回插座数据,否则返回网关数据
+                    tasks_list = eval(item['tasks'])
+                    last_task = tasks_list[-1:]
+                    if int(last_task['device_type']) == DEVICE_TYPE['socket']:
+                        data['serial_number'] = last_task['serial_number']
+                    else:
+                        data['id'] = item['device_id']
+                    device_qs = Device_Info.objects.filter(**data).values('NickName', 'Type')
                     smart_scene_dict['device_type'] = device_qs[0]['Type'] if device_qs.exists() else ''
                     smart_scene_dict['device_nickname'] = device_qs[0]['NickName'] if device_qs.exists() else ''
                 else: