feat: 添加enm app

This commit is contained in:
caoqianming 2023-06-02 17:50:41 +08:00
parent 5ded2347b7
commit 46b0638bfb
15 changed files with 68 additions and 102 deletions

View File

@ -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,
},
),
]

View File

@ -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)
# result = models.CharField('结果', max_length=200, blank=True, null=True)

View File

@ -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
read_only_fields = EXCLUDE_FIELDS + ['check_date', 'next_check_date', 'keeper_name', 'belong_dept_name']

View File

@ -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)),
]

View File

@ -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']
return super().filter_queryset(queryset)

3
apps/enm/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
apps/enm/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class EnmConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'apps.enm'

View File

11
apps/enm/models.py Normal file
View File

@ -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)

11
apps/enm/serializers.py Normal file
View File

@ -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

3
apps/enm/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

12
apps/enm/urls.py Normal file
View File

@ -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)),
]

13
apps/enm/views.py Normal file
View File

@ -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']

View File

@ -71,7 +71,8 @@ INSTALLED_APPS = [
'apps.rpm',
'apps.opm',
'apps.bi',
'apps.em'
'apps.em',
'apps.enm'
]
MIDDLEWARE = [