# 完善task

This commit is contained in:
xianfuxing 2018-09-20 00:43:37 +08:00
parent 5401ce3ccd
commit f908676d9b
1 changed files with 16 additions and 2 deletions

View File

@ -5,7 +5,7 @@ from datetime import datetime, time, timedelta
from django.db.models import Max
from celery import task
from counter.models import DeviceCount
from mosquito.models import MosqPostStatistic
from mosquito.models import MosqPostStatistic, DevicePostStatistic
def max_count(x, y):
@ -53,7 +53,7 @@ def get_daily_statistic(enable_container=False):
if enable_container:
for device_id in device_list:
device_container[device_id] = device_container[device_id] | \
{(entry.data_time, entry.count)
{(entry.data_time.date(), entry.count)
for entry in daily_queryset if entry.device_id == device_id}
calc_result = sum(map(lambda x: int(x.count), daily_queryset))
date = q.date
@ -61,6 +61,7 @@ def get_daily_statistic(enable_container=False):
return daily_ret, device_container
@task()
def update_daily_statistic():
full_ret = None
# 计算每天聚合值
@ -75,6 +76,19 @@ def update_daily_statistic():
container = dict(device_container[device_id])
full_daily_ret = fill_date(container, tz=pytz.timezone("UTC"))
_date_list = [k for k in full_daily_ret]
_date_list.sort()
for d in _date_list:
try:
obj = DevicePostStatistic.objects.get(device_id=device_id, date=d)
except DevicePostStatistic.DoesNotExist:
obj = None
if obj:
obj.total = full_daily_ret[d]
obj.save()
else:
DevicePostStatistic.objects.create(device_id=device_id, total=full_daily_ret[d], date=d)
# 写入数据库
if full_ret:
_date_list = [k for k in full_ret]