feat: 添加enm app
This commit is contained in:
parent
5ded2347b7
commit
46b0638bfb
|
@ -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,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -78,13 +78,4 @@ class Equipment(CommonBModel):
|
||||||
# """
|
# """
|
||||||
# equipment = models.ForeignKey(Equipment, verbose_name='关联设备', on_delete=models.CASCADE)
|
# equipment = models.ForeignKey(Equipment, verbose_name='关联设备', on_delete=models.CASCADE)
|
||||||
# check_date = models.DateField('校准检查日期')
|
# check_date = models.DateField('校准检查日期')
|
||||||
# result = models.CharField('结果', max_length=200, blank=True, null=True)
|
# 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)
|
|
|
@ -1,5 +1,5 @@
|
||||||
from apps.utils.serializers import CustomModelSerializer
|
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 apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
@ -9,11 +9,4 @@ class EquipmentSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Equipment
|
model = Equipment
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
read_only_fields = EXCLUDE_FIELDS + ['check_date', 'next_check_date', 'keeper_name', 'belong_dept_name']
|
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
|
|
|
@ -1,13 +1,12 @@
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
from apps.em.views import EquipmentViewSet, MpointViewSet
|
from apps.em.views import EquipmentViewSet
|
||||||
|
|
||||||
API_BASE_URL = 'api/em/'
|
API_BASE_URL = 'api/em/'
|
||||||
HTML_BASE_URL = 'em/'
|
HTML_BASE_URL = 'em/'
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter()
|
||||||
router.register('equipment', EquipmentViewSet, basename='equipment')
|
router.register('equipment', EquipmentViewSet, basename='equipment')
|
||||||
router.register('mpoint', MpointViewSet, basename='mpoint')
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path(API_BASE_URL, include(router.urls)),
|
path(API_BASE_URL, include(router.urls)),
|
||||||
]
|
]
|
|
@ -1,7 +1,7 @@
|
||||||
from django.shortcuts import render
|
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.utils.viewsets import CustomModelViewSet
|
||||||
from apps.em.serializers import EquipmentSerializer, MpointSerializer
|
from apps.em.serializers import EquipmentSerializer
|
||||||
from apps.em.filters import EquipFilterSet
|
from apps.em.filters import EquipFilterSet
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
|
|
||||||
|
@ -16,12 +16,4 @@ class EquipmentViewSet(CustomModelViewSet):
|
||||||
def filter_queryset(self, queryset):
|
def filter_queryset(self, queryset):
|
||||||
if not self.detail and not self.request.query_params.get('type', None):
|
if not self.detail and not self.request.query_params.get('type', None):
|
||||||
raise ParseError('请指定设备类型')
|
raise ParseError('请指定设备类型')
|
||||||
return super().filter_queryset(queryset)
|
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']
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
|
@ -0,0 +1,6 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class EnmConfig(AppConfig):
|
||||||
|
default_auto_field = 'django.db.models.BigAutoField'
|
||||||
|
name = 'apps.enm'
|
|
@ -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)
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
|
@ -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)),
|
||||||
|
]
|
|
@ -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']
|
|
@ -71,7 +71,8 @@ INSTALLED_APPS = [
|
||||||
'apps.rpm',
|
'apps.rpm',
|
||||||
'apps.opm',
|
'apps.opm',
|
||||||
'apps.bi',
|
'apps.bi',
|
||||||
'apps.em'
|
'apps.em',
|
||||||
|
'apps.enm'
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
|
Loading…
Reference in New Issue