factory/apps/ecm/service.py

61 lines
1.7 KiB
Python

from apps.am.models import Area
from apps.third.clients import xxClient
from apps.third.tapis import xxapis
class EcmService:
"""事件处理服务
"""
@classmethod
def dispatch_dahua_event(cls, data: dict):
"""分发大华事件进行处理
"""
pass
@classmethod
def dispatch_xunxi_event(cls, data: dict):
"""分发寻息事件进行处理
"""
if data.type == 'rail':
if data.data.type == 1:
# 围栏进入
cls.rail_in(data=data.data)
elif data.data.type == 2:
# 围栏离开
pass
elif data.type == 'onKeyAlarm':
# 一键呼救
pass
elif data.type == 'onOffLine':
if data.data.online:
# 标签定位在线
pass
else:
# 标签定位离线
pass
elif data.type == 'lowpower':
# 低电量
pass
elif data.type == 'bltOnOffLineV2':
if data.data.online:
# 标签通信在线
pass
else:
# 标签通信离线
pass
@classmethod
def rail_in(cls, data):
"""围栏进入事件
"""
# 判断区域是否超员
area = Area.objects.filter(third_info__xx_railId=data['railId']).first()
if area:
json = {"railId": data['railId'], "type": ""}
_, res = xxClient.request(**xxapis['rail_ibeacon_list'], json=json)
if res['totalCount'] >= area.count_people_max:
# 触发超员事件
pass