From cf4654a532b9e6bff947cc61c934422df5a57405 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 9 Jun 2023 09:42:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0enm=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/enm/models.py | 45 +++++++++++++++++++++++++++++------------ apps/enm/serializers.py | 34 +++++++++++++++++++++++++++++-- apps/enm/tasks.py | 15 ++++++++++++++ apps/enm/urls.py | 5 ++++- apps/enm/views.py | 23 +++++++++++++++++---- 5 files changed, 102 insertions(+), 20 deletions(-) create mode 100644 apps/enm/tasks.py diff --git a/apps/enm/models.py b/apps/enm/models.py index 0523480f..3426fd93 100644 --- a/apps/enm/models.py +++ b/apps/enm/models.py @@ -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) \ No newline at end of file + 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('值班结束') \ No newline at end of file diff --git a/apps/enm/serializers.py b/apps/enm/serializers.py index fb05d2dd..5ce4138a 100644 --- a/apps/enm/serializers.py +++ b/apps/enm/serializers.py @@ -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 \ No newline at end of file + 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'] diff --git a/apps/enm/tasks.py b/apps/enm/tasks.py new file mode 100644 index 00000000..b6db1bb9 --- /dev/null +++ b/apps/enm/tasks.py @@ -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) \ No newline at end of file diff --git a/apps/enm/urls.py b/apps/enm/urls.py index 24b0ad9c..6f15d882 100644 --- a/apps/enm/urls.py +++ b/apps/enm/urls.py @@ -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)), ] \ No newline at end of file diff --git a/apps/enm/views.py b/apps/enm/views.py index 386e6baf..a23f6718 100644 --- a/apps/enm/views.py +++ b/apps/enm/views.py @@ -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'] \ No newline at end of file