摄像头设置加载算法
This commit is contained in:
parent
0f87ebf263
commit
9889ba3475
|
@ -1,7 +1,6 @@
|
|||
from django.db import models
|
||||
from apps.hrm.models import Employee
|
||||
from apps.system.models import Dept, Post, User
|
||||
from apps.utils.constants import ObjCate
|
||||
from apps.utils.models import CommonADModel, CommonBModel
|
||||
# Create your models here.
|
||||
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
# Generated by Django 3.2.12 on 2022-07-01 01:15
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('system', '0005_auto_20220627_0836'),
|
||||
('ecm', '0005_auto_20220620_1517'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='event',
|
||||
name='cate',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='mark',
|
||||
field=models.PositiveSmallIntegerField(default=10, verbose_name='事件标记'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='msg',
|
||||
field=models.TextField(blank=True, null=True, verbose_name='事件文本'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='state',
|
||||
field=models.PositiveSmallIntegerField(default=10, verbose_name='事件状态'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventcate',
|
||||
name='hanle_minute',
|
||||
field=models.PositiveSmallIntegerField(default=0, help_text='超过处理时间事件状态变为超时未处理,0代表未配置', verbose_name='处理时间'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventcate',
|
||||
name='voice_person',
|
||||
field=models.PositiveSmallIntegerField(default=0, help_text='0女声3男声', verbose_name='声音选择'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='notifysetting',
|
||||
name='obj_cate',
|
||||
field=models.CharField(default='post', help_text='post岗位/user用户/var变量', max_length=20, verbose_name='提醒对象'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='notifysetting',
|
||||
name='user',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='提醒用户'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='notifysetting',
|
||||
name='var',
|
||||
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='提醒变量'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='remind',
|
||||
name='dept',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.dept', verbose_name='部门'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='remind',
|
||||
name='notify_setting',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ecm.notifysetting', verbose_name='通过哪个配置'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='remind',
|
||||
name='post',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.post', verbose_name='岗位'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Eventdo',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('handle_time', models.DateTimeField(blank=True, null=True, verbose_name='处理时间')),
|
||||
('handle_desc', models.TextField(blank=True, null=True, verbose_name='处理描述')),
|
||||
('cate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ecm.eventcate', verbose_name='关联事件种类')),
|
||||
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ecm.event', verbose_name='关联事件')),
|
||||
('handle_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='处理人')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='cates',
|
||||
field=models.ManyToManyField(through='ecm.Eventdo', to='ecm.EventCate', verbose_name='关联事件种类'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,52 @@
|
|||
# Generated by Django 3.2.12 on 2022-07-01 03:37
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ecm', '0006_auto_20220701_0915'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='event',
|
||||
old_name='people',
|
||||
new_name='employee',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='event',
|
||||
name='peope_type',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='event',
|
||||
name='state',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='obj_cate',
|
||||
field=models.CharField(default='people', help_text='people(人员)/...', max_length=20, verbose_name='发生对象'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='voice',
|
||||
field=models.TextField(blank=True, null=True, verbose_name='语音地址'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventcate',
|
||||
name='self_algo',
|
||||
field=models.BooleanField(default=False, verbose_name='识别算法'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
name='mark',
|
||||
field=models.PositiveSmallIntegerField(default=10, help_text='10(正常)/20(误报)', verbose_name='事件标记'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='notifysetting',
|
||||
name='var',
|
||||
field=models.CharField(blank=True, help_text='self(本人)/area_manager(区域负责人)/visit_receptionist(访客接待人)', max_length=20, null=True, verbose_name='提醒变量'),
|
||||
),
|
||||
]
|
|
@ -1,6 +1,7 @@
|
|||
from django.db import models
|
||||
from apps.am.models import Area
|
||||
from apps.hrm.models import Employee
|
||||
from apps.utils.constants import Algo
|
||||
from apps.utils.models import BaseModel, CommonAModel, CommonBModel
|
||||
from apps.system.models import Dept, File, Post, User
|
||||
from apps.third.models import TDevice
|
||||
|
@ -19,7 +20,9 @@ class EventCate(CommonAModel):
|
|||
code = models.CharField('标识', max_length=10, unique=True)
|
||||
name = models.CharField('名称', max_length=20, unique=True)
|
||||
trigger = models.PositiveSmallIntegerField('触发方式', default=10, choices=EVENT_TRIGGER_CHOICES)
|
||||
self_algo = models.BooleanField('识别算法', default=False)
|
||||
speaker_on = models.BooleanField('开启音响报警', default=True)
|
||||
voice_person = models.PositiveSmallIntegerField('声音选择', default=0, help_text='0女声3男声')
|
||||
speakers = models.ManyToManyField(TDevice, verbose_name='固定音响', blank=True)
|
||||
filter_area_level = models.PositiveSmallIntegerField('固定音响区域级别过滤', choices=Area.AREA_LEVEL_CHOICES,
|
||||
default=Area.AREA_1)
|
||||
|
@ -45,7 +48,8 @@ class NotifySetting(CommonAModel):
|
|||
on_delete=models.CASCADE, null=True, blank=True)
|
||||
user = models.ForeignKey(User, verbose_name='提醒用户',
|
||||
on_delete=models.CASCADE, null=True, blank=True)
|
||||
var = models.CharField('提醒变量', max_length=20, null=True, blank=True)
|
||||
var = models.CharField('提醒变量', max_length=20, null=True, blank=True,
|
||||
help_text='self(本人)/area_manager(区域负责人)/visit_receptionist(访客接待人)')
|
||||
filter_recipient = models.PositiveSmallIntegerField('提醒人员过滤', null=True, blank=True)
|
||||
filter_area_level = models.PositiveSmallIntegerField('区域级别过滤', null=True, blank=True)
|
||||
sms_enable = models.BooleanField('短信通知', default=False)
|
||||
|
@ -66,13 +70,12 @@ class Event(CommonBModel):
|
|||
imgs = models.ManyToManyField(File, verbose_name='事件图片', blank=True)
|
||||
area = models.ForeignKey(Area, verbose_name='发生区域', on_delete=models.CASCADE)
|
||||
location = models.JSONField('事件点位坐标', default=dict, null=False, blank=True)
|
||||
peope_type = models.CharField('当事人员类型', choices=Employee.PEOPLE_TYPE_CHOICES,
|
||||
max_length=20, null=True, blank=True)
|
||||
people = models.ForeignKey(Employee, verbose_name='当事人',
|
||||
on_delete=models.CASCADE, null=True, blank=True)
|
||||
state = models.PositiveSmallIntegerField('事件状态', default=10)
|
||||
obj_cate = models.CharField('发生对象', max_length=20, help_text='people(人员)/...')
|
||||
employee = models.ForeignKey(Employee, verbose_name='当事人',
|
||||
on_delete=models.CASCADE, null=True, blank=True)
|
||||
msg = models.TextField('事件文本', null=True, blank=True)
|
||||
mark = models.PositiveSmallIntegerField('事件标记', default=10)
|
||||
voice = models.TextField('语音地址', null=True, blank=True)
|
||||
mark = models.PositiveSmallIntegerField('事件标记', default=10, help_text='10(正常)/20(误报)')
|
||||
handle_time = models.DateTimeField('处理时间', null=True, blank=True)
|
||||
handle_user = models.ForeignKey(User, verbose_name='处理人',
|
||||
on_delete=models.CASCADE, null=True, blank=True)
|
||||
|
|
|
@ -27,11 +27,12 @@ class EventCateListSerializer(CustomModelSerializer):
|
|||
class EventCateUpdateSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = EventCate
|
||||
fields = ['speaker_on', 'speakers', 'filter_area_level']
|
||||
fields = ['speaker_on', 'speakers', 'filter_area_level', 'voice_person', 'handle_minute']
|
||||
|
||||
|
||||
class NotifySettingsSerializer(CustomModelSerializer):
|
||||
post_name = serializers.CharField(source='post.name', read_only=True)
|
||||
user_name = serializers.CharField(source='user.name', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = NotifySetting
|
||||
|
@ -40,7 +41,7 @@ class NotifySettingsSerializer(CustomModelSerializer):
|
|||
|
||||
class EventSerializer(serializers.ModelSerializer):
|
||||
area_name = serializers.CharField(source='area.name', read_only=True)
|
||||
cate_name = serializers.CharField(source='cate.name', read_only=True)
|
||||
cate_ = EventCateSimpleSerializer(source='cate', read_only=True)
|
||||
people_name = serializers.CharField(source='people.name', read_only=True)
|
||||
handle_user_name = serializers.CharField(source='handle_user.name', read_only=True)
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ class EventCateViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, Custo
|
|||
create_serializer_class = EventCateCreateUpdateSerializer
|
||||
update_serializer_class = EventCateCreateUpdateSerializer
|
||||
serializer_class = EventCateListSerializer
|
||||
filterset_fields = ['self_algo']
|
||||
|
||||
|
||||
class NotifySettingViewSet(CustomModelViewSet):
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
# Generated by Django 3.2.12 on 2022-07-01 03:37
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ecm', '0007_auto_20220701_1137'),
|
||||
('third', '0005_alter_tdevice_code'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='tdevice',
|
||||
name='algos',
|
||||
field=models.ManyToManyField(blank=True, to='ecm.EventCate', verbose_name='启用算法'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='tlog',
|
||||
name='create_time',
|
||||
field=models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='tlog',
|
||||
name='is_deleted',
|
||||
field=models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='tlog',
|
||||
name='update_time',
|
||||
field=models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间'),
|
||||
),
|
||||
]
|
|
@ -2,7 +2,7 @@ from django.db import models
|
|||
from apps.am.models import Area
|
||||
import uuid
|
||||
from apps.hrm.models import Employee
|
||||
from apps.utils.constants import ObjCate
|
||||
from apps.utils.constants import Algo
|
||||
from apps.utils.models import BaseModel
|
||||
|
||||
# Create your models here.
|
||||
|
@ -35,6 +35,7 @@ class TDevice(BaseModel):
|
|||
code = models.CharField('设备唯一标识', max_length=50, db_index=True)
|
||||
location = models.JSONField('位置信息', default=dict,
|
||||
null=False, blank=True)
|
||||
algos = models.ManyToManyField('ecm.eventcate', verbose_name='启用算法', blank=True)
|
||||
area = models.ForeignKey(Area, on_delete=models.CASCADE,
|
||||
verbose_name='所在区', null=True, blank=True)
|
||||
areas = models.ManyToManyField(Area, verbose_name='覆盖区',
|
||||
|
@ -46,7 +47,7 @@ class TDevice(BaseModel):
|
|||
null=False, blank=True)
|
||||
|
||||
|
||||
class Tlog(models.Model):
|
||||
class Tlog(BaseModel):
|
||||
"""第三方请求与处理日志
|
||||
"""
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from apps.am.models import Area
|
||||
from apps.third.models import TDevice
|
||||
from apps.third.models import TDevice, Tlog
|
||||
from apps.utils.serializers import CustomModelSerializer
|
||||
|
||||
|
||||
|
@ -47,3 +47,9 @@ class BindAreasSerializer(serializers.Serializer):
|
|||
areas = serializers.PrimaryKeyRelatedField(queryset=Area.objects.all(),
|
||||
label="区域ID列表",
|
||||
required=False, many=True)
|
||||
|
||||
|
||||
class TlogSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = Tlog
|
||||
fields = '__all__'
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from django.urls import path, include
|
||||
from rest_framework import routers
|
||||
from apps.third.views import DahuaTestView, DhCommonViewSet, SpTestView, XxCommonViewSet, XxTestView
|
||||
from apps.third.views_d import TDeviceViewSet
|
||||
from apps.third.views_d import TDeviceViewSet, TlogViewSet
|
||||
|
||||
API_BASE_URL = 'api/third/'
|
||||
HTML_BASE_URL = 'third/'
|
||||
|
@ -10,6 +10,7 @@ router = routers.DefaultRouter()
|
|||
router.register('xunxi', XxCommonViewSet, basename='api_xunxi')
|
||||
router.register('dahua', DhCommonViewSet, basename='api_dahua')
|
||||
router.register('tdevice', TDeviceViewSet, basename='tdevice')
|
||||
router.register('tlog', TlogViewSet, basename='tlog')
|
||||
urlpatterns = [
|
||||
path(API_BASE_URL, include(router.urls)),
|
||||
path(API_BASE_URL + 'dahua/test/', DahuaTestView.as_view()),
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from apps.third.models import TDevice
|
||||
from apps.third.serializers import BindAreaSerializer, LabelLocationSerializer, TDeviceSerializer
|
||||
from apps.third.models import TDevice, Tlog
|
||||
from apps.third.serializers import BindAreaSerializer, LabelLocationSerializer, TDeviceSerializer, TlogSerializer
|
||||
from apps.utils.viewsets import CustomGenericViewSet
|
||||
from rest_framework.mixins import ListModelMixin
|
||||
from apps.third.clients import xxClient, dhClient, spClient
|
||||
|
@ -122,4 +122,5 @@ class TDeviceViewSet(CustomGenericViewSet):
|
|||
|
||||
|
||||
class TlogViewSet(ListModelMixin, CustomGenericViewSet):
|
||||
pass
|
||||
queryset = Tlog.objects.all()
|
||||
serializer_class = TlogSerializer
|
||||
|
|
|
@ -7,3 +7,7 @@ EXCLUDE_FIELDS = ['create_time', 'update_time', 'is_deleted', 'create_by', 'upda
|
|||
class ObjCate(models.IntegerChoices):
|
||||
EMPLOYEE = 10, '个人'
|
||||
POST = 20, '岗位'
|
||||
|
||||
|
||||
class Algo(models.TextChoices):
|
||||
HELMET = 'helmet', '安全帽'
|
||||
|
|
Loading…
Reference in New Issue