factory/apps/ecm/tasks.py

31 lines
974 B
Python

from __future__ import absolute_import, unicode_literals
from celery import shared_task
from apps.am.models import Area
from apps.third.clients import xxClient
from apps.third.tapis import xxapis
@shared_task
def cal_area_count():
"""
计算区域内人员数量
"""
for i in Area.objects.filter(type=Area.AREA_TYPE_FIX):
if i.third_info.get('xx_rail', None):
railId = i.third_info['xx_rail']['id']
json = {"railId": railId, "type": ""}
_, res = xxClient.request(**xxapis['rail_ibeacon_list'], json=json)
total_count = res['totalCount']
if total_count >= i.count_people_max:
# 触发超员事件
i.count_people = total_count
i.save()
pass
elif total_count < i.count_people_min:
# 触发缺员事件
i.count_people_min = total_count
i.save()
pass