feat: 添加enm相关内容

This commit is contained in:
caoqianming 2023-06-09 09:42:46 +08:00
parent 52bb1ca367
commit cf4654a532
5 changed files with 102 additions and 20 deletions

View File

@ -1,25 +1,40 @@
from django.db import models
from apps.utils.models import CommonBDModel, BaseModel
from apps.utils.models import CommonBDModel, BaseModel, CommonADModel, CommonAModel, CommonBModel
class Product(CommonAModel):
"""
产品
"""
name = models.CharField('名称', max_length=50)
code = models.CharField('编号', max_length=50, null=True, blank=True)
class Meta:
verbose_name = '产品'
class Shift(CommonAModel):
"""班次
"""
name = models.CharField('名称', max_length=50)
start_time_o = models.TimeField('开始时间')
end_time_o = models.TimeField('结束时间')
class Meta:
verbose_name = '班次'
class Mgroup(CommonBDModel):
"""测点集
"""
name = models.CharField('名称', max_length=50)
class Meta:
verbose_name = '测点集'
class Team(CommonBDModel):
class Team(CommonBModel):
"""班组
"""
name = models.CharField('名称', max_length=50)
members = models.ManyToManyField('system.user', verbose_name='关联成员', through='enm.teammember')
class TeamMember(BaseModel):
"""班组成员
"""
team = models.ForeignKey('enm.team', verbose_name='关联班组', on_delete=models.CASCADE)
is_main = models.BooleanField('是否班长', default=False)
member = models.ForeignKey('system.user', verbose_name='关联用户', on_delete=models.CASCADE)
leader = models.ForeignKey('system.user', verbose_name='班长', on_delete=models.CASCADE)
class Mpoint(CommonBDModel):
@ -44,7 +59,11 @@ class Mrecord(BaseModel):
tag_val = models.FloatField('当前值')
class Drecord(BaseModel):
class Drecord(CommonADModel):
"""值班记录
"""
team = models.ForeignKey(Team, verbose_name='班组', on_delete=models.CASCADE)
shit = models.ForeignKey(Shift, verbose_name='当班班次', on_delete=models.CASCADE)
leader = models.ForeignKey('system.user', verbose_name='班长', on_delete=models.CASCADE)
start_time = models.DateTimeField('值班开始')
end_time = models.DateTimeField('值班结束')

View File

@ -1,11 +1,41 @@
from apps.utils.serializers import CustomModelSerializer
from apps.enm.models import Mpoint
from apps.enm.models import Mpoint, Mgroup, Mrecord, Team, Drecord
from apps.system.models import Dept
from apps.system.serializers import DeptSimpleSerializer
from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE
from rest_framework import serializers
class MgroupSerializer(CustomModelSerializer):
belong_dept = serializers.PrimaryKeyRelatedField(label="所属部门", queryset=Dept.objects.all(), required=True)
belong_dept_name = serializers.CharField(source='belong_dept.name')
class Meta:
model = Mgroup
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['belong_dept_name']
class TeamSerializer(CustomModelSerializer):
leader_name = serializers.CharField(source='leader.name')
belong_dept_name = serializers.CharField(source='belong_dept.name')
class Meta:
model = Team
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['belong_dept_name', 'leader_name']
class MpointSerializer(CustomModelSerializer):
mgroup_name = serializers.CharField(source='mgroup.name')
belong_dept_name = serializers.CharField(source='belong_dept.name')
ep_monitored_name = serializers.CharField(source='ep_monitored.name')
ep_belong_name = serializers.CharField(source='ep_belong.name')
class Meta:
model = Mpoint
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS
read_only_fields = EXCLUDE_FIELDS + ['mgroup_name', 'belong_dept_name']
class MrecordSerializer(CustomModelSerializer):
mpoint_name = serializers.CharField(source='mpoint.name')
class Meta:
model = Mrecord
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['mpoint_name']

15
apps/enm/tasks.py Normal file
View File

@ -0,0 +1,15 @@
# Create your tasks here
from __future__ import absolute_import, unicode_literals
from apps.utils.tasks import CustomTask
from celery import shared_task
from apps.utils.sql import DbConnection
from server.settings import get_sysconfig
@shared_task(base=CustomTask)
def get_tag_val():
config = get_sysconfig()
with DbConnection(config['enm']['db_host'], config['enm']['db_user'], config['enm']['db_password'], config['enm']['db_database']) as cursor:
cursor.execute("select * from tag_value")
results = cursor.fetchall()
for row in results:
print(row)

View File

@ -1,12 +1,15 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from apps.enm.views import MpointViewSet
from apps.enm.views import MpointViewSet, MgroupViewSet, TeamViewSet
API_BASE_URL = 'api/enm/'
HTML_BASE_URL = 'enm/'
router = DefaultRouter()
router.register('mpoint', MpointViewSet, basename='mpoint')
router.register('mgroup', MgroupViewSet, basename='mgroup')
router.register('team', TeamViewSet, basename='team')
urlpatterns = [
path(API_BASE_URL, include(router.urls)),
]

View File

@ -1,13 +1,28 @@
from django.shortcuts import render
from apps.enm.models import Mpoint
from apps.enm.models import Mpoint, Mgroup, Team, Mrecord
from apps.utils.viewsets import CustomModelViewSet
from apps.enm.serializers import MpointSerializer
from apps.enm.serializers import MpointSerializer, TeamSerializer, MgroupSerializer
from rest_framework.exceptions import ParseError
class MgroupViewSet(CustomModelViewSet):
queryset = Mgroup.objects.all()
serializer_class = MgroupSerializer
select_related_fields = ['create_by', 'belong_dept']
filterset_fields = ['belong_dept']
search_fields = ['number']
class TeamViewSet(CustomModelViewSet):
queryset = Team.objects.all()
serializer_class = TeamSerializer
select_related_fields = ['belong_dept', 'leader']
filterset_fields = ['belong_dept']
search_fields = ['name']
class MpointViewSet(CustomModelViewSet):
queryset = Mpoint.objects.all()
serializer_class = MpointSerializer
select_related_fields = ['create_by']
filterset_fields = ['equipment']
select_related_fields = ['create_by', 'belong_dept', 'ep_monitored', 'ep_belong', 'mgroup']
filterset_fields = ['belong_dept', 'ep_monitored', 'ep_belong', 'mgroup']
search_fields = ['number', 'code']