Quellcode durchsuchen

优化电量趋势返回

zhangdongming vor 2 Monaten
Ursprung
Commit
9d5f70057c
1 geänderte Dateien mit 9 neuen und 11 gelöschten Zeilen
  1. 9 11
      Controller/UserDevice/DeviceReportController.py

+ 9 - 11
Controller/UserDevice/DeviceReportController.py

@@ -140,16 +140,15 @@ class DeviceReportView(View):
                 raise ValueError("时区偏移超出范围")
             tz = pytz.FixedOffset(int(tz_offset * 60))
 
-            # 计算日期范围:查询的是客户端时区下的历史数据
+            # 计算日期范围
             query_days = int(request_dict.get('days', 7))
             client_now = datetime.now(tz)
 
-            # 关键修改:数据日期范围 = [今天 - query_days, 昨天]
-            # 因为设备上报的是前一天的数据
+            # 数据日期范围 = [今天 - query_days, 昨天]
             end_date = (client_now - timedelta(days=1)).date()  # 昨天
             start_date = end_date - timedelta(days=query_days - 1)  # 起始日期
 
-            # 转换查询范围到UTC时间戳 (包含整个日期范围)
+            # 转换查询范围到UTC时间戳
             start_utc = int(tz.localize(
                 datetime.combine(start_date, datetime.min.time())
             ).astimezone(pytz.utc).timestamp())
@@ -163,21 +162,20 @@ class DeviceReportView(View):
                 device_id=device_id,
                 type=1,
                 report_time__gte=start_utc,
-                report_time__lt=end_utc  # 不包含结束时间戳
+                report_time__lt=end_utc
             ).order_by('report_time')
 
-            # 构建日期-电量映射 (按数据实际归属的日期)
+            # 构建日期-电量映射(直接使用上报日期)
             date_battery_map = {}
             for record in records:
-                # 关键修改:上报时间转客户端时区后减去1天 = 数据实际归属日期
+                # 关键变更:直接使用上报日期作为数据日期
                 record_date = datetime.fromtimestamp(record.report_time, tz).date()
-                data_date = record_date - timedelta(days=1)  # 数据属于前一天
 
                 # 只记录查询范围内的数据
-                if start_date <= data_date <= end_date:
-                    date_battery_map[data_date.isoformat()] = record.battery_level
+                if start_date <= record_date <= end_date:
+                    date_battery_map[record_date.isoformat()] = record.battery_level
 
-            # 生成完整日期序列 (按客户端时区)
+            # 生成完整日期序列
             report_data = []
             for day_offset in range(query_days):
                 current_date = start_date + timedelta(days=day_offset)