|
@@ -56,17 +56,22 @@ class DeviceReportView(View):
|
|
if operation == 'getBatteryCapacityList': # 获取电池电量列表
|
|
if operation == 'getBatteryCapacityList': # 获取电池电量列表
|
|
return self.get_battery_capacity_list(userID, request, request_dict, response)
|
|
return self.get_battery_capacity_list(userID, request, request_dict, response)
|
|
elif operation == 'getWakeSleepData':
|
|
elif operation == 'getWakeSleepData':
|
|
- return self.get_wake_sleep_data(response)
|
|
|
|
|
|
+ return self.get_wake_sleep_data(userID, request_dict, response)
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
- def get_wake_sleep_data(cls, response):
|
|
|
|
|
|
+ def get_wake_sleep_data(cls, userID, request_dict, response):
|
|
"""
|
|
"""
|
|
获取设备睡眠唤醒统计数据
|
|
获取设备睡眠唤醒统计数据
|
|
|
|
+ :param userID: 响应对象
|
|
|
|
+ :param request_dict: 参数对象
|
|
:param response: 响应对象
|
|
:param response: 响应对象
|
|
:return: 包含7天汇总统计和30天明细数据的JSON响应
|
|
:return: 包含7天汇总统计和30天明细数据的JSON响应
|
|
"""
|
|
"""
|
|
try:
|
|
try:
|
|
# region 时间参数计算
|
|
# region 时间参数计算
|
|
|
|
+ uid = request_dict.get('device_id', None)
|
|
|
|
+ if not uid:
|
|
|
|
+ return response.json(444)
|
|
current_time = int(time.time())
|
|
current_time = int(time.time())
|
|
SECONDS_PER_DAY = 24 * 60 * 60 # 单日秒数常量
|
|
SECONDS_PER_DAY = 24 * 60 * 60 # 单日秒数常量
|
|
|
|
|
|
@@ -78,6 +83,7 @@ class DeviceReportView(View):
|
|
# region 7天汇总统计 (使用Coalesce避免空值)
|
|
# region 7天汇总统计 (使用Coalesce避免空值)
|
|
|
|
|
|
seven_days_stats = DeviceDailyReport.objects.filter(
|
|
seven_days_stats = DeviceDailyReport.objects.filter(
|
|
|
|
+ device_id=uid,
|
|
report_time__range=(seven_days_ago, current_time) # 时间范围查询
|
|
report_time__range=(seven_days_ago, current_time) # 时间范围查询
|
|
).aggregate(
|
|
).aggregate(
|
|
total_human_detection=Coalesce(Sum('human_detection'), Value(0)),
|
|
total_human_detection=Coalesce(Sum('human_detection'), Value(0)),
|
|
@@ -88,6 +94,7 @@ class DeviceReportView(View):
|
|
|
|
|
|
# region 30天明细数据(按时间倒序)
|
|
# region 30天明细数据(按时间倒序)
|
|
thirty_days_details = DeviceDailyReport.objects.filter(
|
|
thirty_days_details = DeviceDailyReport.objects.filter(
|
|
|
|
+ device_id=uid,
|
|
report_time__gte=thirty_days_ago,
|
|
report_time__gte=thirty_days_ago,
|
|
report_time__lte=current_time
|
|
report_time__lte=current_time
|
|
).order_by('-report_time').values_list(
|
|
).order_by('-report_time').values_list(
|
|
@@ -109,7 +116,7 @@ class DeviceReportView(View):
|
|
return response.json(0, result_data)
|
|
return response.json(0, result_data)
|
|
|
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
- error_msg = f"查询异常: {str(e)}"
|
|
|
|
|
|
+ error_msg = f"查询异常: {str(e)},userID: {userID}"
|
|
error_line = e.__traceback__.tb_lineno
|
|
error_line = e.__traceback__.tb_lineno
|
|
LOGGER.error(f"{error_msg} 行号: {error_line}")
|
|
LOGGER.error(f"{error_msg} 行号: {error_line}")
|
|
|
|
|