Răsfoiți Sursa

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer into locky

locky 2 ani în urmă
părinte
comite
bf8b14c98b
1 a modificat fișierele cu 36 adăugiri și 19 ștergeri
  1. 36 19
      Controller/SensorGateway/SmartSocketController.py

+ 36 - 19
Controller/SensorGateway/SmartSocketController.py

@@ -297,7 +297,7 @@ class SmartSocketView(View):
             device_id = request_dict.get('deviceId', None)
             task_type = request_dict.get('timeType', None)
             start_time = request_dict.get('startTime', None)
-            end_time = request_dict.get('endTime', None)
+            end_time = request_dict.get('endTime', 0)
             repeat = request_dict.get('repeat', None)
             task_id = request_dict.get('taskId', None)
             device_switch = request_dict.get('deviceSwitch', None)
@@ -307,7 +307,9 @@ class SmartSocketView(View):
             device_switch = int(device_switch)
             task_switch = int(task_switch)
             now_time = int(time.time())
-            data = {'time_type': int(task_type), 'start_time': int(start_time), 'repeat': int(repeat),
+            task_type = int(task_type)
+            end_time = int(end_time) if task_type == 1 else 0
+            data = {'time_type': task_type, 'start_time': int(start_time), 'repeat': int(repeat),
                     'switch_status': True if device_switch == 1 else False,
                     'task_status': True if task_switch == 1 else False}
             serial_number = cls.get_serial_number_by_device_id(device_id)
@@ -317,27 +319,29 @@ class SmartSocketView(View):
                 if not socket_schedule_qs.exists():
                     return response.json(174)
                 if end_time:
-                    data['end_time'] = int(end_time)
+                    data['end_time'] = end_time
                 data['updated_time'] = now_time
                 socket_schedule_qs.update(**data)
             else:
                 # 排查是否已设置过当前排程
+
                 socket_s_qs = SocketSchedule.objects.filter(device_id=device_id,
                                                             start_time=int(start_time),
-                                                            end_time=int(end_time),
-                                                            time_type=int(task_type))
+                                                            end_time=end_time,
+                                                            time_type=task_type)
                 if socket_s_qs.exists():
                     return response.json(174)
                 # 添加排程
                 data['device_id'] = device_id
+                data['end_time'] = end_time
                 data['serial_number'] = serial_number
                 data['updated_time'] = now_time
                 data['created_time'] = now_time
                 socket_schedule = SocketSchedule.objects.create(**data)
                 task_id = socket_schedule.id
             # 将排程任务下发给设备
-            cls.send_socket_schedule(serial_number, task_id, int(task_type), int(start_time),
-                                     int(end_time), int(repeat), device_switch,
+            cls.send_socket_schedule(serial_number, task_id, task_type, int(start_time),
+                                     end_time, int(repeat), device_switch,
                                      task_switch)
             return response.json(0)
         except Exception as e:
@@ -672,15 +676,28 @@ class SmartSocketView(View):
         @param response: 响应对象
         @return: response
         """
-        ids = request_dict.get('ids', None)
-        serial_number = request_dict.get('serialNumber', None)
-        if not all({ids, serial_number}):
-            return response.json(444, {'error param': 'id or serialNumber'})
-        device_info_qs = Device_Info.objects.filter(userID_id=user_id, serial_number=serial_number)
-        if not device_info_qs.exists():
-            return response.json(173)
-        socket_schedule_qs = SocketSchedule.objects.filter(id__in=ids.split(','))
-        if not socket_schedule_qs.exists():
-            return response.json(173)
-        socket_schedule_qs.delete()
-        return response.json(0)
+        try:
+            with transaction.atomic():
+                ids = request_dict.get('ids', None)
+                serial_number = request_dict.get('serialNumber', None)
+                if not all({ids, serial_number}):
+                    return response.json(444, {'error param': 'id or serialNumber'})
+                device_info_qs = Device_Info.objects.filter(userID_id=user_id, serial_number=serial_number)
+                if not device_info_qs.exists():
+                    return response.json(173)
+                socket_schedule_qs = SocketSchedule.objects.filter(id__in=ids.split(','))
+                if not socket_schedule_qs.exists():
+                    return response.json(173)
+                # 发布MQTT消息通知设备删除排程任务
+                for val in socket_schedule_qs:
+                    if val.task_status:
+                        switch_status = 1 if val.switch_status else 0
+                        result = SmartSocketView.send_socket_schedule(val.serial_number, val.id, val.time_type,
+                                                                      val.start_time, val.end_time,
+                                                                      val.repeat, switch_status, 0)
+                        LOGGER.info('删除排程发布结果:{}'.format(result))
+                socket_schedule_qs.delete()
+                return response.json(0)
+        except Exception as e:
+            LOGGER.info('插座排程删除数据异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(177)