|
@@ -14,7 +14,7 @@ from decimal import Decimal
|
|
|
|
|
|
from dateutil.parser import parse
|
|
|
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.views import View
|
|
|
|
|
@@ -78,6 +78,8 @@ class SmartSocketView(View):
|
|
|
return self.del_socket_schedule(request_dict, response, user_id)
|
|
|
elif operation == 'get-unit-scene': # 查詢設備每日/月用電量
|
|
|
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)
|
|
|
|
|
|
@classmethod
|
|
@@ -628,6 +630,9 @@ class SmartSocketView(View):
|
|
|
def get_unit_scene(cls, request_dict, response):
|
|
|
"""
|
|
|
查詢設備每日/月用電量
|
|
|
+ @request_dict serialNumber: 设备序列号
|
|
|
+ @request_dict startTime: 开始时间
|
|
|
+ @request_dict endTime: 结束时间
|
|
|
@param request_dict: 请求参数
|
|
|
@param response: 响应对象
|
|
|
@return: response
|
|
@@ -700,7 +705,12 @@ class SmartSocketView(View):
|
|
|
|
|
|
@classmethod
|
|
|
def get_subscript(cls, unit, time_stamp):
|
|
|
- """標記月日"""
|
|
|
+ """
|
|
|
+ 標記月日
|
|
|
+ @param unit: 时间单位
|
|
|
+ @param time_stamp: 时间戳
|
|
|
+ @return: subscript
|
|
|
+ """
|
|
|
time_tuple = time.localtime(int(time_stamp)) # 把时间戳转换成时间元祖
|
|
|
time_tuple = time.strftime('%Y-%m-%d-%w', time_tuple) # 把时间元祖转换成格式化好的时间
|
|
|
if unit == 'week' or unit == 'year':
|
|
@@ -719,3 +729,31 @@ class SmartSocketView(View):
|
|
|
subscript = datetime.date(Year, Month, Day).day
|
|
|
subscript -= 1
|
|
|
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))
|