瀏覽代碼

新增查询插座记录日期

guanhailong 2 年之前
父節點
當前提交
2b31c968f6
共有 1 個文件被更改,包括 40 次插入2 次删除
  1. 40 2
      Controller/SensorGateway/SmartSocketController.py

+ 40 - 2
Controller/SensorGateway/SmartSocketController.py

@@ -14,7 +14,7 @@ from decimal import Decimal
 
 
 from dateutil.parser import parse
 from dateutil.parser import parse
 from django.db import transaction
 from django.db import transaction
-from django.db.models import Sum
+from django.db.models import Sum, Count
 from django.http import QueryDict
 from django.http import QueryDict
 from django.views import View
 from django.views import View
 
 
@@ -78,6 +78,8 @@ class SmartSocketView(View):
             return self.del_socket_schedule(request_dict, response, user_id)
             return self.del_socket_schedule(request_dict, response, user_id)
         elif operation == 'get-unit-scene':  # 查詢設備每日/月用電量
         elif operation == 'get-unit-scene':  # 查詢設備每日/月用電量
             return self.get_unit_scene(request_dict, response)
             return self.get_unit_scene(request_dict, response)
+        elif operation == 'get-schedule-data':  # 查询插座记录日期
+            return self.get_schedule_data(request_dict, response)
         return response.json(404)
         return response.json(404)
 
 
     @classmethod
     @classmethod
@@ -628,6 +630,9 @@ class SmartSocketView(View):
     def get_unit_scene(cls, request_dict, response):
     def get_unit_scene(cls, request_dict, response):
         """
         """
         查詢設備每日/月用電量
         查詢設備每日/月用電量
+        @request_dict serialNumber: 设备序列号
+        @request_dict startTime: 开始时间
+        @request_dict endTime: 结束时间
         @param request_dict: 请求参数
         @param request_dict: 请求参数
         @param response: 响应对象
         @param response: 响应对象
         @return: response
         @return: response
@@ -700,7 +705,12 @@ class SmartSocketView(View):
 
 
     @classmethod
     @classmethod
     def get_subscript(cls, unit, time_stamp):
     def get_subscript(cls, unit, time_stamp):
-        """標記月日"""
+        """
+        標記月日
+        @param unit: 时间单位
+        @param time_stamp: 时间戳
+        @return: subscript
+        """
         time_tuple = time.localtime(int(time_stamp))  # 把时间戳转换成时间元祖
         time_tuple = time.localtime(int(time_stamp))  # 把时间戳转换成时间元祖
         time_tuple = time.strftime('%Y-%m-%d-%w', time_tuple)  # 把时间元祖转换成格式化好的时间
         time_tuple = time.strftime('%Y-%m-%d-%w', time_tuple)  # 把时间元祖转换成格式化好的时间
         if unit == 'week' or unit == 'year':
         if unit == 'week' or unit == 'year':
@@ -719,3 +729,31 @@ class SmartSocketView(View):
             subscript = datetime.date(Year, Month, Day).day
             subscript = datetime.date(Year, Month, Day).day
             subscript -= 1
             subscript -= 1
             return subscript
             return subscript
+
+    @staticmethod
+    def get_schedule_data(request_dict, response):
+        """
+        查询插座记录日期
+        @request_dict serialNumber: 设备序列号
+        @param request_dict: 请求参数
+        @param response: 响应对象
+        @return: response
+        """
+        serial_number = request_dict.get('serialNumber', None)
+        if not serial_number:
+            return response.json(444, {'error': 'serialNumber'})
+
+        try:
+            socket_schedule_qs = SocketSchedule.objects.extra(
+                select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date').filter(
+                serial_number=serial_number).annotate(count=Count('created_time')).order_by('-date')[:31]
+            schedule_date_list = []
+            for socket_schedule in socket_schedule_qs:
+                schedule_date_list.append({
+                    'timestamp': CommonService.str_to_timestamp(socket_schedule['date'], '%Y-%m-%d'),
+                    'count': socket_schedule['count'],
+                    'format': socket_schedule['date']
+                })
+            return response.json(0, schedule_date_list)
+        except Exception as e:
+            return response.json(500, repr(e))