guanhailong 2 жил өмнө
parent
commit
58a285bf4e

+ 19 - 20
Controller/SensorGateway/SmartSocketController.py

@@ -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 = []