feat: 更新设备任务,增加坐标更新
This commit is contained in:
parent
1991f48757
commit
d5d8bc1f33
|
@ -5,17 +5,18 @@ 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
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import django
|
import django
|
||||||
|
|
||||||
pwd = os.path.dirname(os.path.realpath(__file__))
|
pwd = os.path.dirname(os.path.realpath(__file__))
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mosqkiller.settings")
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mosqkiller.settings")
|
||||||
django.setup()
|
django.setup()
|
||||||
|
|
||||||
from counter.models import DeviceCount
|
from counter.models import DeviceCount as DeviceCount
|
||||||
from counter.models import DeviceInfo as D1
|
from counter.models import DeviceInfo as CounterDeviceInfor
|
||||||
from mosquito.models import MosqPostStatistic, DevicePostStatistic, DeviceInfo, Org
|
from mosquito.models import MosqPostStatistic, DevicePostStatistic, DeviceInfo, Org
|
||||||
|
|
||||||
|
|
||||||
def max_count(x, y):
|
def max_count(x, y):
|
||||||
if x.count > y.count:
|
if x.count > y.count:
|
||||||
return x
|
return x
|
||||||
|
@ -55,7 +56,7 @@ def get_daily_statistic(enable_container=False):
|
||||||
for q in qs:
|
for q in qs:
|
||||||
# 按照 device_id 分组查询最新时间 max_time,然后通过id + max_time 获取实例,用来得到count
|
# 按照 device_id 分组查询最新时间 max_time,然后通过id + max_time 获取实例,用来得到count
|
||||||
midnight = tz.localize(datetime.combine(q.date, time(23, 59)), is_dst=None)
|
midnight = tz.localize(datetime.combine(q.date, time(23, 59)), is_dst=None)
|
||||||
dc = DeviceCount.objects.filter(data_time__lte=midnight).values('device_id').\
|
dc = DeviceCount.objects.filter(data_time__lte=midnight).values('device_id'). \
|
||||||
annotate(max_time=Max('data_time'))
|
annotate(max_time=Max('data_time'))
|
||||||
daily_queryset = [DeviceCount.objects.filter(device_id=x['device_id'], data_time=x['max_time']) for x in dc]
|
daily_queryset = [DeviceCount.objects.filter(device_id=x['device_id'], data_time=x['max_time']) for x in dc]
|
||||||
if daily_queryset:
|
if daily_queryset:
|
||||||
|
@ -151,19 +152,35 @@ def update_latest_statistic():
|
||||||
@task()
|
@task()
|
||||||
def update_mosq_device_info():
|
def update_mosq_device_info():
|
||||||
""" 更新mosquito的DeviceInfo表"""
|
""" 更新mosquito的DeviceInfo表"""
|
||||||
d1 = D1.objects.values_list('device_id', flat=True)
|
counter_devices = CounterDeviceInfor.objects.values_list('device_id', flat=True)
|
||||||
d2 = DeviceInfo.objects.values_list('device_id', flat=True)
|
mosq_devices = DeviceInfo.objects.values_list('device_id', flat=True)
|
||||||
s1 = set(d1)
|
s1 = set(counter_devices)
|
||||||
s2 = set(d2)
|
s2 = set(mosq_devices)
|
||||||
x = s1 - s2
|
delta = s1 - s2
|
||||||
|
|
||||||
|
# update existing device
|
||||||
|
for device_id in mosq_devices:
|
||||||
|
counter_device = DeviceCount.objects.filter(device_id=device_id).order_by('-data_time').first()
|
||||||
|
if counter_device is None:
|
||||||
|
continue
|
||||||
|
ds = DeviceInfo.objects.get(device_id=device_id)
|
||||||
|
ds.longitude = counter_device.longitude
|
||||||
|
ds.latitude = counter_device.latitude
|
||||||
|
ds.save()
|
||||||
|
|
||||||
|
# create new device
|
||||||
default_org = Org.objects.all().first()
|
default_org = Org.objects.all().first()
|
||||||
for device_id in x:
|
for device_id in delta:
|
||||||
DeviceInfo.objects.create(device_id=device_id, org=default_org)
|
counter_device = DeviceCount.objects.filter(device_id=device_id).order_by('-data_time').first()
|
||||||
return list(x)
|
DeviceInfo.objects.create(device_id=device_id,
|
||||||
|
org=default_org,
|
||||||
|
latitude=counter_device.latitude,
|
||||||
|
longitude=counter_device.longitude)
|
||||||
|
return list(delta)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# a, b = get_daily_statistic()
|
# a, b = get_daily_statistic()
|
||||||
# print(a, b)
|
# print(a, b)
|
||||||
update_daily_statistic()
|
# update_mosq_device_info()
|
||||||
|
update_daily_statistic()
|
||||||
|
|
Loading…
Reference in New Issue