diff --git a/apps/enp/migrations/0005_carwash.py b/apps/enp/migrations/0005_carwash.py new file mode 100644 index 00000000..609b601a --- /dev/null +++ b/apps/enp/migrations/0005_carwash.py @@ -0,0 +1,34 @@ +# Generated by Django 3.2.12 on 2024-02-05 02:56 + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('em', '0011_auto_20240119_1135'), + ('enp', '0004_vehicleaccess'), + ] + + operations = [ + migrations.CreateModel( + name='CarWash', + 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='删除标记')), + ('vehicle_number', models.CharField(default='', max_length=10, verbose_name='车牌号')), + ('start_time', models.DateTimeField(blank=True, null=True, verbose_name='洗车时间')), + ('end_time', models.DateTimeField(blank=True, null=True, verbose_name='洗车完成时间')), + ('pressure', models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='洗车压力(Mpa)')), + ('flux', models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='洗车流量(L/min)')), + ('station', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='em.equipment', verbose_name='洗车台')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/apps/enp/models.py b/apps/enp/models.py index 0fef756f..03bfd355 100644 --- a/apps/enp/models.py +++ b/apps/enp/models.py @@ -125,3 +125,15 @@ class VehicleAccess(BaseModel): emission_standard = models.CharField( '排放标准', max_length=10, null=True, blank=True) door_name = models.CharField('门禁名称', max_length=10, null=True, blank=True) + + +class CarWash(BaseModel): + station = models.ForeignKey( + Equipment, verbose_name='洗车台', on_delete=models.CASCADE) + vehicle_number = models.CharField('车牌号', max_length=10, default='') + start_time = models.DateTimeField('洗车时间', null=True, blank=True) + end_time = models.DateTimeField('洗车完成时间', null=True, blank=True) + pressure = models.DecimalField( + '洗车压力(Mpa)', max_digits=10, decimal_places=4, null=True, blank=True) + flux = models.DecimalField( + '洗车流量(L/min)', max_digits=10, decimal_places=4, null=True, blank=True) diff --git a/apps/enp/serializers.py b/apps/enp/serializers.py index f657042b..329d6056 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, VehicleAccess +from .models import Drain, DrainEquip, EnvData, VehicleAccess, CarWash from apps.em.serializers import EquipmentSerializer from rest_framework import serializers from django.utils import timezone @@ -79,3 +79,9 @@ class EnvDataExportSerializer(serializers.Serializer): time = serializers.DateTimeField(label='时间') type = serializers.ChoiceField( label='导出类型', choices=['hour', 'day', 'week', 'month', 'season', 'year']) + + +class CarWashSerializer(CustomModelSerializer): + class Meta: + model = CarWash + fields = "__all__" diff --git a/apps/enp/tasks.py b/apps/enp/tasks.py index 3be6584b..8a5d3aed 100644 --- a/apps/enp/tasks.py +++ b/apps/enp/tasks.py @@ -8,3 +8,11 @@ from celery import shared_task @shared_task(base=CustomTask) def generate_envdata(): pass + + +@shared_task(base=CustomTask) +def cal_envdata(): + """ + 计算监测达标率等值 + """ + pass diff --git a/apps/enp/urls.py b/apps/enp/urls.py index 046efa73..80107acf 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, VehicleAccessViewSet, EnvDataViewSet +from .views import DrainViewSet, DrainEquipViewSet, VehicleAccessViewSet, EnvDataViewSet, CarWashViewSet API_BASE_URL = 'api/enp/' HTML_BASE_URL = 'enp/' @@ -11,6 +11,7 @@ router.register('drain_equip', DrainEquipViewSet, basename='drain_equip') router.register('vehicle_access', VehicleAccessViewSet, basename='vehicle_access') router.register('envdata', EnvDataViewSet, basename='envdata') +router.register('carwash', CarWashViewSet, basename='carwash') urlpatterns = [ path(API_BASE_URL, include(router.urls)), ] diff --git a/apps/enp/views.py b/apps/enp/views.py index 73c570f9..d5fd7c57 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, VehicleAccessSerializer, EnvDataSerializer, EnvDataExportSerializer -from .models import Drain, DrainEquip, VehicleAccess, EnvData +from .serializers import DrainSerializer, DrainEquipSerializer, DrainEquipEnvSerializer, VehicleAccessSerializer, EnvDataSerializer, EnvDataExportSerializer, CarWashSerializer +from .models import Drain, DrainEquip, VehicleAccess, EnvData, CarWash from rest_framework.decorators import action from apps.utils.sql import query_all_dict from drf_yasg.utils import swagger_auto_schema @@ -87,3 +87,18 @@ class EnvDataViewSet(ListModelMixin, CustomGenericViewSet): 导出Excel """ return Response() + + +class CarWashViewSet(ListModelMixin, CustomGenericViewSet): + """ + list: 洗车记录 + + 洗车记录 + """ + perms_map = {'get': '*'} + queryset = CarWash.objects.all() + serializer_class = CarWashSerializer + filterset_fields = { + "station": ['exact'], + "start_time": ['exact', 'gte', 'lte', 'year', 'month', 'day'], + }