Explorar el Código

修改创建/编辑场景返回数据

locky hace 2 años
padre
commit
57169031c0
Se han modificado 1 ficheros con 50 adiciones y 64 borrados
  1. 50 64
      Controller/SensorGateway/SmartSceneController.py

+ 50 - 64
Controller/SensorGateway/SmartSceneController.py

@@ -182,8 +182,8 @@ class SmartSceneView(View):
         }
         return res
 
-    @staticmethod
-    def create_smart_scene(request_dict, user_id, response):
+    @classmethod
+    def create_smart_scene(cls, request_dict, user_id, response):
         """
         创建智能场景
         @param request_dict: 请求参数
@@ -246,6 +246,7 @@ class SmartSceneView(View):
                 if not device_info_qs.exists():
                     return response.json(173)
                 serial_number = device_info_qs[0]['serial_number']
+                msg['sensor_status'] = 2002
             else:  # 子设备设置场景
                 if not sub_device_id:
                     return response.json(444, {'error param': 'subDeviceId'})
@@ -322,36 +323,9 @@ class SmartSceneView(View):
 
                 msg['time'] = time_dict
                 msg['scene_id'] = smart_scene_qs.id
-                task_list = []
-                for task in tasks_list:
-                    sensor_type = int(task['device_type'])
-                    task_temp = {
-                        'sensor_type': sensor_type
-                    }
-                    if sensor_type != -1:   # 不为-1时需要其他数据
-                        task_temp['sensor_action'] = int(task['event_type'])
-
-                        # 延时
-                        if 'delay_time' in task and task['delay_time'] != 0:
-                            task_temp['sensor_delay'] = task['delay_time']
-
-                        # 子设备返回长地址
-                        sub_device_id = task.get('subDeviceId', None)
-                        if sub_device_id:
-                            sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('ieee_addr').first()
-                            task_temp['sensor_ieee_addr'] = sub_device_qs['ieee_addr']
-                        # 网关添加报警类型数据
-                        else:
-                            task_temp['voice_type'] = task.get('voice_type')
-                            task_temp['voice_id'] = task.get('voice_id')
-                            task_temp['count'] = task.get('count')
-                            task_temp['delay_time'] = task.get('delay_time')
-                            task_temp['duration'] = task.get('duration')
-                            task_temp['value_type'] = task.get('value_type')
-
-                    task_list.append(task_temp)
-
-                msg['task'] = task_list
+
+                # 获取设备任务数据
+                msg['task'] = cls.get_msg_task_list(tasks_list)
 
                 smart_scene_qs.device_data = json.dumps(msg)
                 smart_scene_qs.save()
@@ -561,8 +535,8 @@ class SmartSceneView(View):
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
-    @staticmethod
-    def edit_smart_scene(request_dict, user_id, response):
+    @classmethod
+    def edit_smart_scene(cls, request_dict, user_id, response):
         """
         编辑智能场景
         @param request_dict: 请求参数
@@ -654,37 +628,10 @@ class SmartSceneView(View):
                 if not device_qs.exists():
                     return response.json(173)
                 serial_number = device_qs[0]['serial_number']
+                msg['sensor_status'] = 2002
 
-            task_list = []
-            for task in tasks_list:
-                sensor_type = int(task['device_type'])
-                task_temp = {
-                    'sensor_type': sensor_type
-                }
-                if sensor_type != -1:   # 不为-1时需要其他数据
-                    task_temp['sensor_action'] = int(task['event_type'])
-
-                    # 延时
-                    if 'delay_time' in task and task['delay_time'] != 0:
-                        task_temp['sensor_delay'] = task['delay_time']
-
-                    # 子设备返回长地址
-                    task_sub_device_id = task.get('subDeviceId', None)
-                    if task_sub_device_id:
-                        sub_device_qs = GatewaySubDevice.objects.filter(id=task_sub_device_id).values('ieee_addr').first()
-                        task_temp['sensor_ieee_addr'] = sub_device_qs['ieee_addr']
-                    # 网关添加报警类型数据
-                    else:
-                        task_temp['voice_type'] = task.get('voice_type')
-                        task_temp['voice_id'] = task.get('voice_id')
-                        task_temp['count'] = task.get('count')
-                        task_temp['delay_time'] = task.get('delay_time')
-                        task_temp['duration'] = task.get('duration')
-                        task_temp['value_type'] = task.get('value_type')
-
-                task_list.append(task_temp)
-
-            msg['task'] = task_list
+            # 获取设备任务数据
+            msg['task'] = cls.get_msg_task_list(tasks_list)
 
             with transaction.atomic():
                 smart_scene_qs.update(scene_name=scene_name, conditions=conditions, tasks=tasks,
@@ -1019,6 +966,45 @@ class SmartSceneView(View):
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
+    @staticmethod
+    def get_msg_task_list(tasks_list):
+        """
+        获取设备任务数据
+        @param tasks_list: app任务列表
+        @return: task_list
+        """
+        task_list = []
+        # 下发最后一个任务;如果最后一个任务有延时,则下发最后两个任务
+        # task_temp = tasks_list[-1:]
+        for task in tasks_list:
+            sensor_type = int(task['device_type'])
+            task_temp = {
+                'sensor_type': sensor_type
+            }
+            if sensor_type != -1:  # 不为-1时需要其他数据
+                task_temp['sensor_action'] = int(task['event_type'])
+
+                # 延时
+                if 'delay_time' in task and task['delay_time'] != 0:
+                    task_temp['sensor_delay'] = task['delay_time']
+
+                # 子设备返回长地址
+                sub_device_id = task.get('subDeviceId', None)
+                if sub_device_id:
+                    sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('ieee_addr').first()
+                    task_temp['sensor_ieee_addr'] = sub_device_qs['ieee_addr']
+                # 网关长地址返回'FFFFFFFFFFFFFFFF',添加报警类型数据
+                else:
+                    task_temp['sensor_ieee_addr'] = 'FFFFFFFFFFFFFFFF'
+                    task_temp['voice_type'] = task.get('voice_type')
+                    task_temp['voice_id'] = task.get('voice_id')
+                    task_temp['count'] = task.get('count')
+                    task_temp['delay_time'] = task.get('delay_time')
+                    task_temp['duration'] = task.get('duration')
+                    task_temp['value_type'] = task.get('value_type')
+            task_list.append(task_temp)
+        return task_list
+
 
 #
 #                   ___====-_  _-====___