一键报警和低电量在5分钟内不再触发事件但有喇叭播放
This commit is contained in:
parent
cf531a5463
commit
beb2ad888a
|
@ -1,4 +1,5 @@
|
||||||
|
|
||||||
|
from datetime import timedelta
|
||||||
from apps.vm.models import Visit
|
from apps.vm.models import Visit
|
||||||
from apps.ai.main import ai_analyse
|
from apps.ai.main import ai_analyse
|
||||||
from apps.opm.models import Operation, Opl, OplWorker
|
from apps.opm.models import Operation, Opl, OplWorker
|
||||||
|
@ -98,6 +99,9 @@ def notify_event(event: Event, voice_msg=''):
|
||||||
for i in event.cates.all():
|
for i in event.cates.all():
|
||||||
cats_list.append(i.name)
|
cats_list.append(i.name)
|
||||||
params['event'] = ','.join(cats_list)
|
params['event'] = ','.join(cats_list)
|
||||||
|
if event.voice_msg: # 如果已经生成通知文本了就不再处理
|
||||||
|
pass
|
||||||
|
else:
|
||||||
if params['employee']:
|
if params['employee']:
|
||||||
event.voice_msg = '位于{}的{},{},请及时处理'.format(params['area'], params['employee'], params['event'])
|
event.voice_msg = '位于{}的{},{},请及时处理'.format(params['area'], params['employee'], params['event'])
|
||||||
else:
|
else:
|
||||||
|
@ -105,9 +109,10 @@ def notify_event(event: Event, voice_msg=''):
|
||||||
if voice_msg:
|
if voice_msg:
|
||||||
event.voice_msg = voice_msg
|
event.voice_msg = voice_msg
|
||||||
event.save()
|
event.save()
|
||||||
# 喇叭播放
|
# 喇叭播放(任何情况下)
|
||||||
Thread(target=save_voice_and_speak, args=(event,), daemon=True).start()
|
Thread(target=save_voice_and_speak, args=(event,), daemon=True).start()
|
||||||
# 创建提醒
|
# 如果还未创建提醒
|
||||||
|
if not event.is_pushed:
|
||||||
Thread(target=create_remind, args=(event, params), daemon=True).start()
|
Thread(target=create_remind, args=(event, params), daemon=True).start()
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,6 +125,9 @@ def save_voice_and_speak(event: Event):
|
||||||
try:
|
try:
|
||||||
main_cate = event.cates.all().order_by('priority', 'create_time').first()
|
main_cate = event.cates.all().order_by('priority', 'create_time').first()
|
||||||
v_p, v_num = main_cate.voice_person, main_cate.voice_num
|
v_p, v_num = main_cate.voice_person, main_cate.voice_num
|
||||||
|
if event.voice: # 如果已经生成了报警声音不用再请求
|
||||||
|
pass
|
||||||
|
else:
|
||||||
_, event.voice, _ = generate_voice(event.voice_msg, v_p)
|
_, event.voice, _ = generate_voice(event.voice_msg, v_p)
|
||||||
event.save()
|
event.save()
|
||||||
if main_cate.speaker_on:
|
if main_cate.speaker_on:
|
||||||
|
@ -472,13 +480,18 @@ def loc_change(data):
|
||||||
|
|
||||||
|
|
||||||
def handle_xx_event(name: str, data: dict):
|
def handle_xx_event(name: str, data: dict):
|
||||||
# 有绑定对象再提示事件
|
# 有绑定对象再提示事件(包括一键报警事件/低电量)
|
||||||
blts = TDevice.objects.filter(code=data['mac']).first()
|
blts = TDevice.objects.filter(code=data['mac']).first()
|
||||||
ep_loc_dict = {}
|
ep_loc_dict = {}
|
||||||
if blts.employee:
|
if blts.employee:
|
||||||
# 触发事件
|
# 触发事件
|
||||||
cate = EventCate.objects.filter(code=name).first()
|
cate = EventCate.objects.filter(code=name).first()
|
||||||
|
# 找到最近未处理同一人发生的事件
|
||||||
if cate:
|
if cate:
|
||||||
|
last_event = Event.objects.filter(cates__code=name, employee=blts.employee, handle_user=None).order_by('-create_time').first()
|
||||||
|
if last_event and last_event.create_time + timedelta(minutes=5) > timezone.now():
|
||||||
|
notify_event(last_event)
|
||||||
|
return
|
||||||
event = Event()
|
event = Event()
|
||||||
# 查询定位信息
|
# 查询定位信息
|
||||||
key_str = 'ep_{}'.format(blts.employee.id)
|
key_str = 'ep_{}'.format(blts.employee.id)
|
||||||
|
|
Loading…
Reference in New Issue