|
@@ -10,7 +10,6 @@ import calendar
|
|
|
import datetime
|
|
|
import logging
|
|
|
import time
|
|
|
-from decimal import Decimal
|
|
|
|
|
|
import requests
|
|
|
from dateutil.parser import parse
|
|
@@ -19,8 +18,7 @@ from django.db.models import Sum, Count
|
|
|
from django.http import QueryDict
|
|
|
from django.views import View
|
|
|
|
|
|
-from Model.models import SocketInfo, SocketSchedule, Device_Info, SocketPowerStatistics, SceneLog, FamilyRoomDevice, \
|
|
|
- CountryModel
|
|
|
+from Model.models import SocketInfo, SocketSchedule, Device_Info, SocketPowerStatistics, SceneLog, FamilyRoomDevice
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.utils import LocalDateTimeUtil
|
|
|
from Service.CommonService import CommonService
|
|
@@ -96,28 +94,31 @@ class SmartSocketView(View):
|
|
|
try:
|
|
|
with transaction.atomic():
|
|
|
serial_number = request_dict.get('serialNumber', None)
|
|
|
- if not serial_number:
|
|
|
- return response.json(444)
|
|
|
+ status = request_dict.get('status', None) # 设备当前状态0:关, 1:开, 2:离线
|
|
|
+ if not all([serial_number, status]):
|
|
|
+ return response.json(444, {'error': 'serialNumber and status'})
|
|
|
socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number, type_switch=0)
|
|
|
if not socket_info_qs.exists():
|
|
|
return response.json(173)
|
|
|
device_id = socket_info_qs.first().device_id
|
|
|
if socket_info_qs.first().status == 1: # 设备电源开时 恢复为关闭状态
|
|
|
socket_info_qs.update(status=0, updated_time=int(time.time()))
|
|
|
- # 删除插座倒计时
|
|
|
- SocketInfo.objects.filter(device_id=device_id).delete()
|
|
|
# 删除插座电量统计
|
|
|
SocketPowerStatistics.objects.filter(device_id=device_id).delete()
|
|
|
# 删除插座排程
|
|
|
SocketSchedule.objects.filter(device_id=device_id).delete()
|
|
|
# 删除插座开关日志
|
|
|
SceneLog.objects.filter(device_id=serial_number).delete()
|
|
|
- # 删除设备管理家庭接口
|
|
|
- FamilyRoomDevice.objects.filter(device_id=device_id).delete()
|
|
|
- # 删除设备
|
|
|
- Device_Info.objects.filter(id=device_id).delete()
|
|
|
- # alexa删除插座
|
|
|
- cls.delete_alexa_socket(serial_number)
|
|
|
+ # 离线状态下只删除设备电量, 排程和开关日志
|
|
|
+ if int(status) != 2:
|
|
|
+ # 删除插座倒计时
|
|
|
+ SocketInfo.objects.filter(device_id=device_id).delete()
|
|
|
+ # 删除设备管理家庭接口
|
|
|
+ FamilyRoomDevice.objects.filter(device_id=device_id).delete()
|
|
|
+ # 删除设备
|
|
|
+ Device_Info.objects.filter(id=device_id).delete()
|
|
|
+ # alexa删除插座
|
|
|
+ cls.delete_alexa_socket(serial_number)
|
|
|
LOGGER.info('智能插座{}设备已复位'.format(serial_number))
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|
|
@@ -434,11 +435,9 @@ class SmartSocketView(View):
|
|
|
# 确定是否会传值
|
|
|
if not all([serial_number]):
|
|
|
return response.json(444, {'error param': 'serialNumber'})
|
|
|
- all_socket_power_qs = SocketPowerStatistics.objects.filter(serial_number=serial_number).values('electricity',
|
|
|
- 'accumulated_time',
|
|
|
- 'power',
|
|
|
- 'created_time'). \
|
|
|
- order_by('-created_time')
|
|
|
+ all_socket_power_qs = SocketPowerStatistics.objects.\
|
|
|
+ filter(serial_number=serial_number).values('electricity', 'accumulated_time', 'power', 'created_time')\
|
|
|
+ .order_by('-created_time')
|
|
|
if not all_socket_power_qs.exists():
|
|
|
return response.json(0, {})
|
|
|
try:
|
|
@@ -459,7 +458,7 @@ class SmartSocketView(View):
|
|
|
electricity = all_socket_power_qs.filter(created_time__gte=startTime_now,
|
|
|
created_time__lt=endTime_now).aggregate(
|
|
|
total=Sum('electricity'))
|
|
|
- if electricity['total'] != None:
|
|
|
+ if electricity['total'] is not None:
|
|
|
data['electricityMonth'] = round(electricity['total'], 1)
|
|
|
else:
|
|
|
data['electricityMonth'] = 0
|
|
@@ -583,7 +582,7 @@ class SmartSocketView(View):
|
|
|
scene_log_qs = SceneLog.objects.filter(device_id=serial_number, created_time__gte=startTime,
|
|
|
created_time__lt=endTime).values('tasks', 'status',
|
|
|
'created_time').order_by(
|
|
|
- '-created_time','-id')[(page - 1) * size:page * size]
|
|
|
+ '-created_time', '-id')[(page - 1) * size:page * size]
|
|
|
if not scene_log_qs.exists():
|
|
|
return response.json(0, [])
|
|
|
log_list = []
|