feat: 增加生产异常动态记录表
This commit is contained in:
parent
4e5adc6dc3
commit
ebe6ab9f3b
|
@ -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"],
|
||||
}
|
|
@ -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,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -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)
|
|
@ -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
|
|
@ -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)),
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue