From 22978de8798755711e9be63695a163bc41a90036 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 29 Jan 2024 16:38:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20enp=E5=A2=9E=E5=8A=A0=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E5=87=BA=E5=85=A5=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/enp/migrations/0004_vehicleaccess.py | 40 +++++++++++++++++++++++ apps/enp/models.py | 10 ++++++ apps/enp/serializers.py | 10 +++++- apps/enp/urls.py | 4 ++- apps/enp/views.py | 20 ++++++++++-- 5 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 apps/enp/migrations/0004_vehicleaccess.py diff --git a/apps/enp/migrations/0004_vehicleaccess.py b/apps/enp/migrations/0004_vehicleaccess.py new file mode 100644 index 00000000..72e6321f --- /dev/null +++ b/apps/enp/migrations/0004_vehicleaccess.py @@ -0,0 +1,40 @@ +# Generated by Django 3.2.12 on 2024-01-29 08:36 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('enp', '0003_auto_20240119_1620'), + ] + + operations = [ + migrations.CreateModel( + name='VehicleAccess', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, + primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField( + default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField( + auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField( + default=False, help_text='删除标记', verbose_name='删除标记')), + ('type', models.PositiveSmallIntegerField( + default=1, help_text='1: 进厂, 2: 出厂', verbose_name='出入类型')), + ('vehicle_number', models.CharField( + max_length=10, verbose_name='车牌号')), + ('acess_time', models.DateTimeField( + blank=True, null=True, verbose_name='出入时间')), + ('emission_standard', models.CharField(blank=True, + max_length=10, null=True, verbose_name='排放标准')), + ('door_name', models.CharField(blank=True, + max_length=10, null=True, verbose_name='门禁名称')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/apps/enp/models.py b/apps/enp/models.py index be4c135b..0fef756f 100644 --- a/apps/enp/models.py +++ b/apps/enp/models.py @@ -115,3 +115,13 @@ class EnvData(models.Model): db_table = 'enp_envdata' managed = False unique_together = (('equipment', 'time'), ) + + +class VehicleAccess(BaseModel): + type = models.PositiveSmallIntegerField( + '出入类型', default=1, help_text='1: 进厂, 2: 出厂') + vehicle_number = models.CharField('车牌号', max_length=10) + acess_time = models.DateTimeField('出入时间', null=True, blank=True) + emission_standard = models.CharField( + '排放标准', max_length=10, null=True, blank=True) + door_name = models.CharField('门禁名称', max_length=10, null=True, blank=True) diff --git a/apps/enp/serializers.py b/apps/enp/serializers.py index 7f938a3a..84a9ea9e 100644 --- a/apps/enp/serializers.py +++ b/apps/enp/serializers.py @@ -1,6 +1,6 @@ from apps.utils.serializers import CustomModelSerializer from apps.utils.constants import EXCLUDE_FIELDS_BASE, EXCLUDE_FIELDS_DEPT -from .models import Drain, DrainEquip, EnvData +from .models import Drain, DrainEquip, EnvData, VehicleAccess from apps.em.serializers import EquipmentSerializer from rest_framework import serializers from django.utils import timezone @@ -60,3 +60,11 @@ class DrainEquipEnvSerializer(CustomModelSerializer): model = DrainEquip fields = ['equipment', 'equipment_type', 'equipment_name', 'equipment_envdata'] + + +class VehicleAccessSerializer(CustomModelSerializer): + """Serializer for VehicleAccess model""" + class Meta: + model = VehicleAccess + fields = "__all__" + read_only_fields = EXCLUDE_FIELDS_BASE diff --git a/apps/enp/urls.py b/apps/enp/urls.py index 989e5d0d..16577232 100644 --- a/apps/enp/urls.py +++ b/apps/enp/urls.py @@ -1,6 +1,6 @@ from django.urls import path, include from rest_framework.routers import DefaultRouter -from .views import DrainViewSet, DrainEquipViewSet +from .views import DrainViewSet, DrainEquipViewSet, VehicleAccessViewSet API_BASE_URL = 'api/enp/' HTML_BASE_URL = 'enp/' @@ -8,6 +8,8 @@ HTML_BASE_URL = 'enp/' router = DefaultRouter() router.register('drain', DrainViewSet, basename='drain') router.register('drain_equip', DrainEquipViewSet, basename='drain_equip') +router.register('vehicle_access', VehicleAccessViewSet, + basename='vehicle_access') urlpatterns = [ path(API_BASE_URL, include(router.urls)), ] diff --git a/apps/enp/views.py b/apps/enp/views.py index 7bdee52f..2b1d415b 100644 --- a/apps/enp/views.py +++ b/apps/enp/views.py @@ -1,8 +1,8 @@ from django.shortcuts import render from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet, ListModelMixin from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin -from .serializers import DrainSerializer, DrainEquipSerializer, DrainEquipEnvSerializer -from .models import Drain, DrainEquip +from .serializers import DrainSerializer, DrainEquipSerializer, DrainEquipEnvSerializer, VehicleAccessSerializer +from .models import Drain, DrainEquip, VehicleAccess from rest_framework.decorators import action from apps.utils.sql import query_all_dict from drf_yasg.utils import swagger_auto_schema @@ -45,3 +45,19 @@ class DrainEquipViewSet(ListModelMixin, BulkCreateModelMixin, BulkDestroyModelMi ]) def list(self, request, *args, **kwargs): return super().list(request, *args, **kwargs) + + +class VehicleAccessViewSet(ListModelMixin, CustomGenericViewSet): + """ + list: 车辆出入记录 + + 车辆出入记录 + """ + perms_map = {'get': '*'} + queryset = VehicleAccess.objects.all() + serializer_class = VehicleAccessSerializer + filterset_fields = { + "vehicle_number": ['icontains'], + "emission_standard": ['exact', 'in'], + "type": ['exact', 'in'], + }