fix: 完善2代数据统计入库逻辑

This commit is contained in:
fxxian 2024-03-31 23:18:11 +08:00
parent 2c79d8dcd9
commit 712943b4c2
1 changed files with 20 additions and 15 deletions

View File

@ -5,7 +5,7 @@ import django
from typing import Dict
from pathlib import Path
from enum import Enum
from datetime import datetime
from datetime import datetime, timedelta
import paho.mqtt.client as mqtt
@ -123,22 +123,27 @@ def create_mosq_post(device_id: str, post_data: Dict):
def update_mosq_device_statistic(device_id: str, post_data: Dict):
device = DeviceInfo.objects.filter(device_id=device_id).first()
datetime_format = "%Y-%m-%d %H:%M:%S"
cur_date = datetime.strptime(post_data['time'], datetime_format).date()
old_record = DevicePostStatistic.objects.filter(device_id=device_id, date=cur_date).first()
org = Org.objects.get(id=1)
incr = 0
cur_total = post_data['count']
if old_record:
device = DeviceInfo.objects.filter(device_id=device_id).first()
if device:
org = device.org
incr = cur_total - old_record.total
DevicePostStatistic.objects.create(device_id=device_id,
date=cur_date,
total=cur_total,
increment=incr,
org=org)
cur_record = DevicePostStatistic.objects.filter(device_id=device_id, date=cur_date).first()
last_record = DevicePostStatistic.objects.filter(device_id=device_id, date=cur_date - timedelta(days=1)).first()
if last_record and cur_record:
incr = cur_record.total - last_record.total
else:
incr = 0
mqtt_total = post_data['count']
if cur_record:
cur_record.total = mqtt_total
cur_record.increment = incr
cur_record.save()
else:
DevicePostStatistic.objects.create(device_id=device_id,
date=cur_date,
total=mqtt_total,
increment=incr,
org=device.org)
def to_string(post_data: Dict, power_type: PowerType) -> str: