From 712943b4c268b42cfef78844b23777dcd1547657 Mon Sep 17 00:00:00 2001 From: fxxian Date: Sun, 31 Mar 2024 23:18:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=842=E4=BB=A3=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=9F=E8=AE=A1=E5=85=A5=E5=BA=93=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mosquito/mqtt_task.py | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/apps/mosquito/mqtt_task.py b/apps/mosquito/mqtt_task.py index 3bef639..ae7fefb 100644 --- a/apps/mosquito/mqtt_task.py +++ b/apps/mosquito/mqtt_task.py @@ -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: