From 18344bd121dca0fb866cd8518ead58c1f346d8ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Sat, 25 Jun 2022 09:47:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E7=BB=91=E5=AE=9A=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/am/migrations/0003_area_count_people.py | 18 ++++++++++++++++++ apps/am/models.py | 1 + apps/am/views.py | 4 ++-- apps/ecm/service.py | 11 ++++++++++- 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 apps/am/migrations/0003_area_count_people.py diff --git a/apps/am/migrations/0003_area_count_people.py b/apps/am/migrations/0003_area_count_people.py new file mode 100644 index 00000000..d6ddce80 --- /dev/null +++ b/apps/am/migrations/0003_area_count_people.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-06-25 01:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('am', '0002_auto_20220625_0819'), + ] + + operations = [ + migrations.AddField( + model_name='area', + name='count_people', + field=models.PositiveIntegerField(default=0, verbose_name='当前人数'), + ), + ] diff --git a/apps/am/models.py b/apps/am/models.py index 06467bd9..f203c890 100755 --- a/apps/am/models.py +++ b/apps/am/models.py @@ -34,6 +34,7 @@ class Area(CommonBModel): posts_access = models.ManyToManyField(Post, through='am.access') count_people_min = models.PositiveIntegerField('最小人员数', default=0) count_people_max = models.PositiveIntegerField('最大人员数', default=1000) + count_people = models.PositiveIntegerField('当前人数', default=0) third_info = models.JSONField('三方信息', default=dict, null=False, blank=True) diff --git a/apps/am/views.py b/apps/am/views.py index 84075a11..e0a4d221 100755 --- a/apps/am/views.py +++ b/apps/am/views.py @@ -28,14 +28,14 @@ class AreaViewSet(CustomModelViewSet): obj = self.get_object() third_info = obj.third_info if 'xx_rail' in third_info: - data['uuid'] = third_info['xx_rail']['uuid'] + data['id'] = third_info['xx_rail']['id'] _, res = xxClient.request(**xxapis['rail_update'], json=data) third_info['xx_rail']['detail'] = data obj.third_info = third_info obj.save() else: _, res = xxClient.request(**xxapis['rail_create'], json=data) - rail_info = {'uuid': res, 'detail': data} + rail_info = {'id': res, 'detail': data} third_info['xx_rail'] = rail_info obj.third_info = third_info obj.save() diff --git a/apps/ecm/service.py b/apps/ecm/service.py index e31b9f4c..d899c5a5 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -4,10 +4,17 @@ from apps.am.models import Area from apps.third.clients import xxClient from apps.third.tapis import xxapis + class EcmService: """事件处理服务 """ + def create_remind(cls): + """ + 创建事件提醒并发送通知 + """ + pass + @classmethod def dispatch_dahua_event(cls, data: dict): """分发大华事件进行处理 @@ -51,10 +58,12 @@ class EcmService: """围栏进入事件 """ # 判断区域是否超员 - area = Area.objects.filter(third_info__xx_railId=data['railId']).first() + area = Area.objects.filter(third_info__xx_rail__id=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: # 触发超员事件 + area.count_people = res['totalCount'] + area.save() pass