# 完善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 django.db.models import Max
from celery import task from celery import task
from counter.models import DeviceCount from counter.models import DeviceCount
from mosquito.models import MosqPostStatistic from mosquito.models import MosqPostStatistic, DevicePostStatistic
def max_count(x, y): def max_count(x, y):
@ -53,7 +53,7 @@ def get_daily_statistic(enable_container=False):
if enable_container: if enable_container:
for device_id in device_list: for device_id in device_list:
device_container[device_id] = device_container[device_id] | \ 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} for entry in daily_queryset if entry.device_id == device_id}
calc_result = sum(map(lambda x: int(x.count), daily_queryset)) calc_result = sum(map(lambda x: int(x.count), daily_queryset))
date = q.date date = q.date
@ -61,6 +61,7 @@ def get_daily_statistic(enable_container=False):
return daily_ret, device_container return daily_ret, device_container
@task()
def update_daily_statistic(): def update_daily_statistic():
full_ret = None full_ret = None
# 计算每天聚合值 # 计算每天聚合值
@ -75,6 +76,19 @@ def update_daily_statistic():
container = dict(device_container[device_id]) container = dict(device_container[device_id])
full_daily_ret = fill_date(container, tz=pytz.timezone("UTC")) 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: if full_ret:
_date_list = [k for k in full_ret] _date_list = [k for k in full_ret]