feat: 增加生产异常动态记录表

This commit is contained in:
caoqianming 2023-08-04 14:26:53 +08:00
parent 4e5adc6dc3
commit ebe6ab9f3b
6 changed files with 88 additions and 8 deletions

View File

@ -1,5 +1,5 @@
from django_filters import rest_framework as filters
from apps.wpm.models import SfLog
from apps.wpm.models import SfLog, SfLogExp
['mgroup', 'shift', 'team', 'leader', 'team__belong_dept']
class SfLogFilter(filters.FilterSet):
class Meta:
@ -12,4 +12,14 @@ class SfLogFilter(filters.FilterSet):
"team__belong_dept": ["exact"],
"end_time": ["day", "month", "year", "lt"],
"start_time": ["gte"]
}
class SfLogExpFilter(filters.FilterSet):
class Meta:
model = SfLogExp
fields = {
"sflog__mgroup": ["exact"],
"sflog__mgroup__name": ["exact"],
"happen_time": ["day", "month", "year"],
"sflog__end_time": ["day", "month", "year"],
}

View File

@ -0,0 +1,37 @@
# Generated by Django 3.2.12 on 2023-08-04 06:24
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('wpm', '0008_rename_pcoal_val_sflog_pcoal_heat'),
]
operations = [
migrations.CreateModel(
name='SfLogExp',
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='删除标记')),
('happen_time', models.DateTimeField(verbose_name='发生时间')),
('cate', models.CharField(max_length=10, verbose_name='异常类别')),
('reason', models.TextField(verbose_name='原因')),
('measure', models.TextField(verbose_name='处置措施')),
('handler', models.CharField(max_length=100, verbose_name='处理人')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sflogexp_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('sflog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='wpm.sflog', verbose_name='关联值班记录')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sflogexp_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
]

View File

@ -52,3 +52,14 @@ class StSfLog(BaseModel):
class Meta:
ordering = ['sflog__start_time']
class SfLogExp(CommonADModel):
"""
生产异常情况记录
"""
sflog = models.ForeignKey(SfLog, on_delete=models.CASCADE, verbose_name='关联值班记录')
happen_time = models.DateTimeField('发生时间')
cate = models.CharField('异常类别', max_length=10)
reason = models.TextField('原因')
measure = models.TextField('处置措施')
handler = models.CharField('处理人', max_length=100)

View File

@ -2,7 +2,7 @@ from apps.utils.constants import EXCLUDE_FIELDS
from apps.utils.serializers import CustomModelSerializer
from rest_framework import serializers
from apps.wpm.models import SfLog, StLog, StSfLog
from apps.wpm.models import SfLog, StLog, StSfLog, SfLogExp
from apps.system.models import Dictionary
from apps.wpm.tasks import cal_enstat_when_pcoal_heat_change, cal_enstat_when_team_change
@ -52,4 +52,13 @@ class StSfLogSerializer(CustomModelSerializer):
class Meta:
model = StSfLog
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['stlog', 'sflog', 'is_current_down']
read_only_fields = EXCLUDE_FIELDS + ['stlog', 'sflog', 'is_current_down']
class SflogExpSerializer(CustomModelSerializer):
mgroup = serializers.CharField(source='sflog.mgroup.id', read_only=True)
mgroup_name = serializers.CharField(source='sflog.mgroup.name', read_only=True)
class Meta:
model = SfLogExp
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS

View File

@ -1,7 +1,7 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from apps.wpm.views import SfLogViewSet, StLogViewSet, StSfLogViewSet
from apps.wpm.views import SfLogViewSet, StLogViewSet, StSfLogViewSet, SfLogExpViewSet
API_BASE_URL = 'api/wpm/'
@ -11,6 +11,7 @@ router = DefaultRouter()
router.register('sflog', SfLogViewSet, basename='sflog')
router.register('stlog', StLogViewSet, basename='stlog')
router.register('stsflog', StSfLogViewSet, basename='stsflog')
router.register('sflogexp', SfLogExpViewSet, basename='sflogexp')
urlpatterns = [
path(API_BASE_URL, include(router.urls)),

View File

@ -7,9 +7,9 @@ from rest_framework.exceptions import ParseError
from rest_framework.mixins import DestroyModelMixin, UpdateModelMixin, ListModelMixin
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from apps.wpm.models import SfLog, StLog, StSfLog
from apps.wpm.serializers import SfLogSerializer, StLogSerializer, StSfLogSerializer
from apps.wpm.filters import SfLogFilter
from apps.wpm.models import SfLog, StLog, StSfLog, SfLogExp
from apps.wpm.serializers import SfLogSerializer, StLogSerializer, StSfLogSerializer, SflogExpSerializer
from apps.wpm.filters import SfLogFilter, SfLogExpFilter
from apps.mtm.models import Material
# Create your views here.
@ -97,4 +97,16 @@ class StSfLogViewSet(ListModelMixin, UpdateModelMixin, CustomGenericViewSet):
params = self.request.query_params
if 'stlog' not in params or 'sflog' not in params:
raise ParseError('请指定所属停机或值班记录')
return super().filter_queryset(queryset)
return super().filter_queryset(queryset)
class SfLogExpViewSet(CustomModelViewSet):
"""
list:生产异常动态
生产异常动态
"""
queryset = SfLogExp.objects.all()
serializer_class = SflogExpSerializer
select_related_fields = ['sflog', 'sflog__mgroup']
filterset_class = SfLogExpFilter