Browse Source

实时统计插座电量

guanhailong 2 years ago
parent
commit
9271281519

+ 12 - 5
Controller/SensorGateway/GatewayDeviceController.py

@@ -7,6 +7,7 @@
 @Software: PyCharm
 """
 import time
+import datetime
 import logging
 
 from django.db import transaction
@@ -383,6 +384,10 @@ class GatewayDeviceView(View):
         """
         查詢插座信息
         """
+        nowTime = int(time.time())
+        today = datetime.date.today()
+        #  今天开始时间
+        today_start_time = int(time.mktime(time.strptime(str(today), '%Y-%m-%d')))
         data = {
             'power': 0,
             'electricity': 0,
@@ -407,15 +412,17 @@ class GatewayDeviceView(View):
         data['online'] = socket_info_qs[0]['online']
         data['countDownTime'] = socket_info_qs[0]['count_down_time'] if socket_info_qs[0][
             'count_down_time'] else 0
-        # 查詢插座電量
-        socket_power_qs = SocketPowerStatistics.objects.filter(device_id=device_id).values('accumulated_time', 'power',
-                                                                                           'created_time',
-                                                                                           'electricity'). \
+        # 当前设备电量信息
+        socket_power_qs = SocketPowerStatistics.objects.filter(device_id=device_id, created_time__gte=today_start_time,
+                                                               created_time__lt=nowTime).values('accumulated_time',
+                                                                                                'power',
+                                                                                                'created_time',
+                                                                                                'electricity'). \
             order_by('-created_time')
         if not socket_power_qs.exists():
             return data
         data['power'] = socket_power_qs[0]['power']
-        data['electricity'] = Decimal(socket_power_qs[0]['electricity']).quantize(Decimal("0.00"))
+        data['electricity'] = socket_power_qs[0]['electricity'].quantize(Decimal("0.00"))
         data['accumulatedTime'] = socket_power_qs[0]['accumulated_time']
         return data
 

+ 38 - 24
Controller/SensorGateway/SmartSocketController.py

@@ -418,26 +418,18 @@ class SmartSocketView(View):
         # 确定是否会传值
         if not all([serial_number]):
             return response.json(444, {'error param': 'serialNumber'})
-        socket_power_qs = SocketPowerStatistics.objects.filter(serial_number=serial_number).values('electricity',
-                                                                                                   'accumulated_time',
-                                                                                                   'power',
-                                                                                                   '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 socket_power_qs.exists():
+        if not all_socket_power_qs.exists():
             return response.json(0, {})
         try:
             data = {}
             # 设备累计电量
-            all_electricity = socket_power_qs.aggregate(total=Sum('electricity'))
-            data['electricityAll'] = Decimal(all_electricity['total']).quantize(Decimal("0.00")) if all_electricity[
-                'total'] else 0
-            # 当天使用电量
-            data['electricityToday'] = Decimal(socket_power_qs[0]['electricity']).quantize(Decimal("0.00")) if \
-                socket_power_qs[0]['electricity'] else 0
-            # 当天累计时长
-            data['accumulated_time'] = socket_power_qs[0]['accumulated_time']
-            # 功率
-            data['power'] = socket_power_qs[0]['power']
+            all_electricity = all_socket_power_qs.aggregate(total=Sum('electricity'))
+            data['electricityAll'] = all_electricity['total'].quantize(Decimal("0.00"))
 
             # 本月电费
             nowTime = int(time.time())
@@ -448,23 +440,45 @@ class SmartSocketView(View):
             endTime_now = parse('%s-%s-%s 23:59:59' % (year, month, end))
             startTime_now = CommonService.str_to_timestamp(str(startTime_now))
             endTime_now = CommonService.str_to_timestamp(str(endTime_now))
-            electricity = socket_power_qs.filter(created_time__gte=startTime_now,
-                                                 created_time__lt=endTime_now).aggregate(
+            electricity = all_socket_power_qs.filter(created_time__gte=startTime_now,
+                                                     created_time__lt=endTime_now).aggregate(
                 total=Sum('electricity'))
-            data['electricityMonth'] = Decimal(electricity['total']).quantize(Decimal("0.00")) if electricity[
-                'total'] else 0
+            if electricity['total'] != None:
+                data['electricityMonth'] = electricity['total'].quantize(Decimal("0.00"))
+            else:
+                data['electricityMonth'] = 0
+
+            # 获取当前日期
+            nowTime = int(time.time())
+            today = datetime.date.today()
+            #  今天开始时间
+            today_start_time = int(time.mktime(time.strptime(str(today), '%Y-%m-%d')))
+            today_socket_power_qs = all_socket_power_qs.filter(created_time__gte=today_start_time,
+                                                               created_time__lt=nowTime).values('electricity',
+                                                                                              'accumulated_time',
+                                                                                              'power',
+                                                                                              'created_time')
+            # 当天使用电量
+            data['electricityToday'] = today_socket_power_qs[0]['electricity'].quantize(
+                Decimal("0.00")) if today_socket_power_qs.exists() else 0
+            # 当天累计时长
+            data['accumulated_time'] = today_socket_power_qs[0][
+                'accumulated_time'] if today_socket_power_qs.exists() else 0
+            # 当前功率
+            data['power'] = today_socket_power_qs[0]['power'] if today_socket_power_qs.exists() else 0
 
             # 昨天使用电量
-            today = datetime.date.today()  # 获取今日日期
             yesterday = today - datetime.timedelta(days=1)
             # 昨天开始时间戳
             yesterday_start_time = int(time.mktime(time.strptime(str(yesterday), '%Y-%m-%d')))
             # 昨天结束时间戳
             yesterday_end_time = int(time.mktime(time.strptime(str(today), '%Y-%m-%d'))) - 1
-            socket_qs = socket_power_qs.filter(created_time__gte=yesterday_start_time,
-                                               created_time__lt=yesterday_end_time).values('electricity')
-            data['electricityYesterday'] = Decimal(socket_qs[0]['electricity']).quantize(Decimal("0.00")) if \
-                socket_qs[0]['electricity'] else 0
+            socket_qs = all_socket_power_qs.filter(created_time__gte=yesterday_start_time,
+                                                   created_time__lt=yesterday_end_time).values('electricity')
+            if socket_qs.exists():
+                data['electricityYesterday'] = socket_qs[0]['electricity'].quantize(Decimal("0.00"))
+            else:
+                data['electricityYesterday'] = 0
             return response.json(0, data)
         except Exception as e:
             return response.json(500, repr(e))