from apps.qm.serializers import StandardCreateUpdateSerializer, StandardSerializer, TestItemCreateUpdateSerializer, TestItemSerializer, TestRecordCreateSerializer, TestRecordDetailSerializer, TestRecordListSerializer from apps.qm.models import Standard, TestItem, TestRecord, TestRecordItem from django.shortcuts import render from rest_framework.viewsets import ModelViewSet from apps.system.mixins import CreateUpdateModelAMixin # Create your views here. class StandardViewSet(CreateUpdateModelAMixin, ModelViewSet): """ 标准规范-增删改查 """ perms_map = {'*': '*'} queryset = Standard.objects.select_related('file').all() serializer_class = StandardSerializer search_fields = ['name', 'number'] filterset_fields = [] ordering_fields = ['number'] ordering = ['id'] def get_serializer_class(self): if self.action in ['create', 'update']: return StandardCreateUpdateSerializer return StandardSerializer class TestItemViewSet(CreateUpdateModelAMixin, ModelViewSet): """ 检验项目增删改查 """ perms_map = {'*': '*'} queryset = TestItem.objects.select_related('standard').all() serializer_class = TestItemSerializer search_fields = ['name', 'standard__name', 'standard__number'] filterset_fields = ['standard'] ordering_fields = ['id'] ordering = ['id'] def get_serializer_class(self): if self.action in ['create', 'update']: return TestItemCreateUpdateSerializer return TestItemSerializer class TestRecordViewSet(ModelViewSet): """ 检测记录 """ perms_map = {'*': '*'} queryset = TestRecord.objects.select_related('fifo_item', 'form').all() serializer_class = TestRecordListSerializer ordering = ['-id'] def get_serializer_class(self): if self.action == 'create': return TestRecordCreateSerializer elif self.action == 'list': return TestRecordListSerializer elif self.action == 'retrieve': return TestRecordDetailSerializer return super().get_serializer_class() def perform_create(self, serializer): vdata = serializer.validated_data obj = serializer.save(create_by = self.request.user) tris = [] for m in vdata['record_data']: # 保存记录详情 form_field = m['form_field'] m['field_name'] = form_field.field_name m['field_key'] = form_field.field_key m['field_type'] = form_field.field_type m['field_value'] = m['field_value'] m['sort'] = form_field.sort m['need_judge'] = form_field.need_judge m['is_testok'] = m['is_testok'] if 'is_testok' in m else True m['test_record'] = obj tris.append(TestRecordItem(**m)) TestRecordItem.objects.bulk_create(tris) # 如果检测合格 if obj.fifo_item: obj.fifo_item.is_testok = True if obj.is_testok else False obj.fifo_item.is_tested = True obj.fifo_item.save()