diff --git a/apps/em/migrations/0001_initial.py b/apps/em/migrations/0001_initial.py deleted file mode 100644 index 5069dca3..00000000 --- a/apps/em/migrations/0001_initial.py +++ /dev/null @@ -1,69 +0,0 @@ -# Generated by Django 3.2.12 on 2023-05-22 07:53 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('system', '0002_myschedule'), - ] - - operations = [ - migrations.CreateModel( - name='Equipment', - 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(choices=[(10, '生产设备'), (20, '计量检测工具')], default=10, verbose_name='类型')), - ('name', models.CharField(max_length=50, verbose_name='设备名称')), - ('number', models.CharField(max_length=50, unique=True, verbose_name='设备编号')), - ('model', models.CharField(blank=True, default='', max_length=60, verbose_name='规格型号')), - ('factory', models.CharField(blank=True, default='', max_length=50, verbose_name='生产厂')), - ('production_date', models.DateField(blank=True, null=True, verbose_name='生产日期')), - ('buy_date', models.DateField(blank=True, null=True, verbose_name='购置日期')), - ('state', models.PositiveIntegerField(choices=[(10, '完好'), (20, '限用'), (30, '在修'), (40, '禁用'), (50, '报废')], default=10, verbose_name='设备状态')), - ('parameter', models.TextField(blank=True, default='', verbose_name='技术参数')), - ('place', models.CharField(blank=True, default='', max_length=50, verbose_name='安装/存放位置')), - ('count', models.PositiveIntegerField(default=1, verbose_name='数量')), - ('description', models.CharField(default='', max_length=200, null=True, verbose_name='描述')), - ('cycle', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='校准或检定周期(月)')), - ('check_date', models.DateField(blank=True, null=True, verbose_name='最近校准检查日期')), - ('next_check_date', models.DateField(blank=True, null=True, verbose_name='预计下次校准检查日期')), - ('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_belong_dept', to='system.dept', verbose_name='所属部门')), - ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), - ('keeper', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='责任人')), - ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='equipment_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), - ], - options={ - 'verbose_name': '设备信息', - 'verbose_name_plural': '设备信息', - }, - ), - migrations.CreateModel( - name='Mpoint', - 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='删除标记')), - ('name', models.CharField(max_length=50, verbose_name='测点名称')), - ('code', models.CharField(max_length=50, verbose_name='测点编号')), - ('unit', models.CharField(max_length=50, verbose_name='单位')), - ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpoint_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), - ('equipment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='em.equipment', verbose_name='关联设备')), - ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mpoint_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/apps/em/models.py b/apps/em/models.py index 22312fec..ef5cf733 100644 --- a/apps/em/models.py +++ b/apps/em/models.py @@ -78,13 +78,4 @@ class Equipment(CommonBModel): # """ # equipment = models.ForeignKey(Equipment, verbose_name='关联设备', on_delete=models.CASCADE) # check_date = models.DateField('校准检查日期') -# result = models.CharField('结果', max_length=200, blank=True, null=True) - - -class Mpoint(CommonAModel): - """测点 - """ - equipment = models.ForeignKey(Equipment, verbose_name='关联设备', on_delete=models.CASCADE) - name = models.CharField('测点名称', max_length=50) - code = models.CharField('测点编号', max_length=50) - unit = models.CharField('单位', max_length=50) \ No newline at end of file +# result = models.CharField('结果', max_length=200, blank=True, null=True) \ No newline at end of file diff --git a/apps/em/serializers.py b/apps/em/serializers.py index 4a5a242b..be09e01d 100644 --- a/apps/em/serializers.py +++ b/apps/em/serializers.py @@ -1,5 +1,5 @@ from apps.utils.serializers import CustomModelSerializer -from apps.em.models import Equipment, Mpoint +from apps.em.models import Equipment from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE from rest_framework import serializers @@ -9,11 +9,4 @@ class EquipmentSerializer(CustomModelSerializer): class Meta: model = Equipment fields = '__all__' - read_only_fields = EXCLUDE_FIELDS + ['check_date', 'next_check_date', 'keeper_name', 'belong_dept_name'] - - -class MpointSerializer(CustomModelSerializer): - class Meta: - model = Mpoint - fields = '__all__' - read_only_fields = EXCLUDE_FIELDS \ No newline at end of file + read_only_fields = EXCLUDE_FIELDS + ['check_date', 'next_check_date', 'keeper_name', 'belong_dept_name'] \ No newline at end of file diff --git a/apps/em/urls.py b/apps/em/urls.py index 86176f48..e35b47cb 100644 --- a/apps/em/urls.py +++ b/apps/em/urls.py @@ -1,13 +1,12 @@ from django.urls import path, include from rest_framework.routers import DefaultRouter -from apps.em.views import EquipmentViewSet, MpointViewSet +from apps.em.views import EquipmentViewSet API_BASE_URL = 'api/em/' HTML_BASE_URL = 'em/' router = DefaultRouter() router.register('equipment', EquipmentViewSet, basename='equipment') -router.register('mpoint', MpointViewSet, basename='mpoint') urlpatterns = [ path(API_BASE_URL, include(router.urls)), ] \ No newline at end of file diff --git a/apps/em/views.py b/apps/em/views.py index 08923bc1..4fb25553 100644 --- a/apps/em/views.py +++ b/apps/em/views.py @@ -1,7 +1,7 @@ from django.shortcuts import render -from apps.em.models import Equipment, Mpoint +from apps.em.models import Equipment from apps.utils.viewsets import CustomModelViewSet -from apps.em.serializers import EquipmentSerializer, MpointSerializer +from apps.em.serializers import EquipmentSerializer from apps.em.filters import EquipFilterSet from rest_framework.exceptions import ParseError @@ -16,12 +16,4 @@ class EquipmentViewSet(CustomModelViewSet): def filter_queryset(self, queryset): if not self.detail and not self.request.query_params.get('type', None): raise ParseError('请指定设备类型') - return super().filter_queryset(queryset) - - -class MpointViewSet(CustomModelViewSet): - queryset = Mpoint.objects.all() - serializer_class = MpointSerializer - select_related_fields = ['create_by'] - filterset_fields = ['equipment'] - search_fields = ['number', 'code'] \ No newline at end of file + return super().filter_queryset(queryset) \ No newline at end of file diff --git a/apps/em/migrations/__init__.py b/apps/enm/__init__.py similarity index 100% rename from apps/em/migrations/__init__.py rename to apps/enm/__init__.py diff --git a/apps/enm/admin.py b/apps/enm/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/apps/enm/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apps/enm/apps.py b/apps/enm/apps.py new file mode 100644 index 00000000..8684e808 --- /dev/null +++ b/apps/enm/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class EnmConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'apps.enm' diff --git a/apps/enm/migrations/__init__.py b/apps/enm/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/enm/models.py b/apps/enm/models.py new file mode 100644 index 00000000..35c18fec --- /dev/null +++ b/apps/enm/models.py @@ -0,0 +1,11 @@ +from django.db import models +from apps.utils.models import CommonBDModel + +# Create your models here. +class Mpoint(CommonBDModel): + """测点 + """ + equipment = models.ForeignKey('em.equipment', verbose_name='关联设备', on_delete=models.SET_NULL, null=True, blank=True) + name = models.CharField('测点名称', max_length=50) + code = models.CharField('测点编号', max_length=50) + unit = models.CharField('单位', max_length=50) \ No newline at end of file diff --git a/apps/enm/serializers.py b/apps/enm/serializers.py new file mode 100644 index 00000000..fb05d2dd --- /dev/null +++ b/apps/enm/serializers.py @@ -0,0 +1,11 @@ +from apps.utils.serializers import CustomModelSerializer +from apps.enm.models import Mpoint +from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE +from rest_framework import serializers + + +class MpointSerializer(CustomModelSerializer): + class Meta: + model = Mpoint + fields = '__all__' + read_only_fields = EXCLUDE_FIELDS \ No newline at end of file diff --git a/apps/enm/tests.py b/apps/enm/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/apps/enm/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/apps/enm/urls.py b/apps/enm/urls.py new file mode 100644 index 00000000..24b0ad9c --- /dev/null +++ b/apps/enm/urls.py @@ -0,0 +1,12 @@ +from django.urls import path, include +from rest_framework.routers import DefaultRouter +from apps.enm.views import MpointViewSet + +API_BASE_URL = 'api/enm/' +HTML_BASE_URL = 'enm/' + +router = DefaultRouter() +router.register('mpoint', MpointViewSet, basename='mpoint') +urlpatterns = [ + path(API_BASE_URL, include(router.urls)), +] \ No newline at end of file diff --git a/apps/enm/views.py b/apps/enm/views.py new file mode 100644 index 00000000..386e6baf --- /dev/null +++ b/apps/enm/views.py @@ -0,0 +1,13 @@ +from django.shortcuts import render +from apps.enm.models import Mpoint +from apps.utils.viewsets import CustomModelViewSet +from apps.enm.serializers import MpointSerializer +from rest_framework.exceptions import ParseError + + +class MpointViewSet(CustomModelViewSet): + queryset = Mpoint.objects.all() + serializer_class = MpointSerializer + select_related_fields = ['create_by'] + filterset_fields = ['equipment'] + search_fields = ['number', 'code'] \ No newline at end of file diff --git a/server/settings.py b/server/settings.py index aad9cc09..eb7fbdcd 100755 --- a/server/settings.py +++ b/server/settings.py @@ -71,7 +71,8 @@ INSTALLED_APPS = [ 'apps.rpm', 'apps.opm', 'apps.bi', - 'apps.em' + 'apps.em', + 'apps.enm' ] MIDDLEWARE = [