|
@@ -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)
|