一键报警和低电量在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.ai.main import ai_analyse
|
||||
from apps.opm.models import Operation, Opl, OplWorker
|
||||
|
@ -98,17 +99,21 @@ def notify_event(event: Event, voice_msg=''):
|
|||
for i in event.cates.all():
|
||||
cats_list.append(i.name)
|
||||
params['event'] = ','.join(cats_list)
|
||||
if params['employee']:
|
||||
event.voice_msg = '位于{}的{},{},请及时处理'.format(params['area'], params['employee'], params['event'])
|
||||
if event.voice_msg: # 如果已经生成通知文本了就不再处理
|
||||
pass
|
||||
else:
|
||||
event.voice_msg = '在{}下,发生{},请及时处理'.format(params['area'], params['event'])
|
||||
if voice_msg:
|
||||
event.voice_msg = voice_msg
|
||||
event.save()
|
||||
# 喇叭播放
|
||||
if params['employee']:
|
||||
event.voice_msg = '位于{}的{},{},请及时处理'.format(params['area'], params['employee'], params['event'])
|
||||
else:
|
||||
event.voice_msg = '在{}下,发生{},请及时处理'.format(params['area'], params['event'])
|
||||
if voice_msg:
|
||||
event.voice_msg = voice_msg
|
||||
event.save()
|
||||
# 喇叭播放(任何情况下)
|
||||
Thread(target=save_voice_and_speak, args=(event,), daemon=True).start()
|
||||
# 创建提醒
|
||||
Thread(target=create_remind, args=(event, params), daemon=True).start()
|
||||
# 如果还未创建提醒
|
||||
if not event.is_pushed:
|
||||
Thread(target=create_remind, args=(event, params), daemon=True).start()
|
||||
|
||||
|
||||
def save_voice_and_speak(event: Event):
|
||||
|
@ -120,8 +125,11 @@ def save_voice_and_speak(event: Event):
|
|||
try:
|
||||
main_cate = event.cates.all().order_by('priority', 'create_time').first()
|
||||
v_p, v_num = main_cate.voice_person, main_cate.voice_num
|
||||
_, event.voice, _ = generate_voice(event.voice_msg, v_p)
|
||||
event.save()
|
||||
if event.voice: # 如果已经生成了报警声音不用再请求
|
||||
pass
|
||||
else:
|
||||
_, event.voice, _ = generate_voice(event.voice_msg, v_p)
|
||||
event.save()
|
||||
if main_cate.speaker_on:
|
||||
sps = []
|
||||
if event.area: # 如果事件存在发生区域
|
||||
|
@ -472,13 +480,18 @@ def loc_change(data):
|
|||
|
||||
|
||||
def handle_xx_event(name: str, data: dict):
|
||||
# 有绑定对象再提示事件
|
||||
# 有绑定对象再提示事件(包括一键报警事件/低电量)
|
||||
blts = TDevice.objects.filter(code=data['mac']).first()
|
||||
ep_loc_dict = {}
|
||||
if blts.employee:
|
||||
# 触发事件
|
||||
cate = EventCate.objects.filter(code=name).first()
|
||||
# 找到最近未处理同一人发生的事件
|
||||
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()
|
||||
# 查询定位信息
|
||||
key_str = 'ep_{}'.format(blts.employee.id)
|
||||
|
|
Loading…
Reference in New Issue