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