From 32f98cda168c44da54f08a7c96dade02326b55c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Wed, 21 Sep 2022 20:10:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BB=9E=E7=95=99=E5=92=8C=E7=A6=BB=E5=B2=97?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ecm/service.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/ecm/service.py b/apps/ecm/service.py index f22f1280..a058f5de 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -468,12 +468,20 @@ def loc_change(data): # 判断停留时间是否合理 # 先通过自定义权限过滤(暂未做) # 再经过通用设置过滤 + code_name = '' if 0 < stay_minute < area_fix['stay_minute_min']: # 触发离岗事件 - handle_xx_event_2('leave_area', ep=blts.employee, area=Area.objects.get(id=area_fix['id'])) - elif area_fix['stay_minute_max'] < stay_minute: + code_name = 'leave_area' + elif area_fix['stay_minute_max'] > 0 and area_fix['stay_minute_max'] < stay_minute: # 触发超时滞留事件 - handle_xx_event_2('stand_area', ep=blts.employee, area=Area.objects.get(id=area_fix['id'])) + code_name = 'stand_area' + if code_name: # 2分钟不再次触发 + last_event = Event.objects.filter(cates__code=code_name, employee=blts.employee, + handle_user=None).order_by('-create_time').first() + if last_event and last_event.create_time + timedelta(minutes=2) > timezone.now(): + pass + else: + handle_xx_event_2(code_name, ep=blts.employee, area=Area.objects.get(id=area_fix['id'])) else: ep_loc_dict['time1'] = time2 ep_loc_dict['area_fix_id'] = area_fix['id'] if area_fix else None @@ -489,7 +497,7 @@ def handle_xx_event(name: str, data: dict): # 触发事件 cate = EventCate.objects.filter(code=name).first() # 找到最近未处理同一人发生的事件 - if cate: + if cate: # 5分钟内不再次触发 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(): @@ -505,7 +513,7 @@ def handle_xx_event(name: str, data: dict): else: area = Area.objects.get(id='1569585234968711168') event.area = area - event.location = ep_loc_dict['xx_detail'] + event.location = ep_loc_dict event.obj_cate = 'people' event.employee = blts.employee event.happen_time = timezone.now() @@ -543,7 +551,7 @@ def handle_xx_event_2(name: str, ep: Employee, area: Area): key_str = 'ep_{}'.format(ep.id) ep_loc_dict = cache.get(key_str, None) if ep_loc_dict: - event.location = ep_loc_dict['xx_detail'] + event.location = ep_loc_dict event.obj_cate = 'people' event.employee = ep event.happen_time = timezone.now()