From 0b1323b41d77ef9aed3eccbcb035d5fe84cad3c5 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 14 Apr 2023 17:20:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BE=A7=E7=AE=97=E5=8A=9B=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ecm/service.py | 12 +++++++++++- apps/ecm/views.py | 11 +++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/ecm/service.py b/apps/ecm/service.py index 0e489f32..5a10ec47 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -26,6 +26,7 @@ from threading import Thread from apps.utils.tools import timestamp_to_time from apps.third.tapis import xxapis import logging +from datetime import datetime myLogger = logging.getLogger('log') requests.packages.urllib3.disable_warnings() @@ -602,7 +603,15 @@ def get_area_from_point(x: int, y: int, floorNo: str, area_fix_id): def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None): global_img_o = dhClient.snap(vchannel.code, raise_exception=False) happen_time = timezone.now() - if global_img_o is None: + if global_img_o is None: # 说明视频抓拍失败 + ckey = 'vchannel_' + vchannel.id + cvalue = cache.get(ckey, None) + if cvalue: + try: + cvalue.update({'snap': 'fail', 'snap_time': datetime.strftime("%Y-%m-%d %H:%M:%S")}) + cache.set(ckey, cvalue) + except: + pass return ec_codes = ai_analyse_2(algo_codes, global_img=global_img_o) # 算法处理返回的事件结果 if ec_codes: @@ -642,3 +651,4 @@ def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None): }) if event: notify_event(event) + diff --git a/apps/ecm/views.py b/apps/ecm/views.py index 98c12ecd..9530744c 100644 --- a/apps/ecm/views.py +++ b/apps/ecm/views.py @@ -25,6 +25,7 @@ from apps.ecm.serializers import (AlgoChannelCreateSerializer, from apps.ecm.service import update_remind_read from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.utils.export import export_excel_img +from apps.ecm.tasks import monitor_check obj_cate_dict = {'people': '人员', 'opl': '作业', 'other': '其他'} mark_dict = {10: '正常', 20: '误报'} @@ -69,6 +70,16 @@ class AlgoChannelViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Cu }) return Response() + def perform_create(self, serializer): + ins = super().perform_create(serializer) + if ins.always_on: + monitor_check([ins.vchannel.id]) + + def perform_destroy(self, instance): + monitor_check([instance.vchannel.id]) + instance.delete() + + class NotifySettingViewSet(CustomModelViewSet): queryset = NotifySetting.objects.all()