This commit is contained in:
caoqianming 2021-11-08 11:02:54 +08:00
parent 5357a2d82a
commit 0158998ef9
5 changed files with 58 additions and 17 deletions

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.6 on 2021-11-08 03:02
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('qm', '0004_auto_20211108_0951'),
]
operations = [
migrations.RemoveField(
model_name='testrecord',
name='record_data',
),
migrations.AlterField(
model_name='testrecorditem',
name='test_record',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='item_test_record', to='qm.testrecord', verbose_name='关联的检测记录'),
),
]

View File

@ -47,9 +47,7 @@ class TestRecord(CommonAModel):
"""
检验记录
"""
form = models.ForeignKey('mtm.recordform', verbose_name='所用表格', on_delete=models.CASCADE)
record_data = models.JSONField('记录数据', default=dict, blank=True)
is_testok = models.BooleanField('是否合格', default=True)
fifo_item = models.ForeignKey('inm.fifoitem', verbose_name='关联的出入库批次', on_delete=models.CASCADE, null=True, blank=True)
@ -65,4 +63,4 @@ class TestRecordItem(BaseModel):
field_value = models.JSONField('录入值', default=dict, blank=True)
need_judge = models.BooleanField('是否需要判定', default=False)
is_testok = models.BooleanField('是否合格', default=True)
test_record = models.ForeignKey(TestRecord, verbose_name='关联的检测记录', on_delete=models.CASCADE)
test_record = models.ForeignKey(TestRecord, verbose_name='关联的检测记录', on_delete=models.CASCADE, related_name='item_test_record')

View File

@ -35,13 +35,18 @@ class AnalysisItemSerializer(serializers.ModelSerializer):
pass
class TestRecordItemSerializer(serializers.ModelSerializer):
class TestRecordItemCreateSerializer(serializers.ModelSerializer):
class Meta:
model = TestRecordItem
fields = ['form_field', 'field_value']
class TestRecordItemSerializer(serializers.ModelSerializer):
class Meta:
model = TestRecordItem
fields = '__all__'
class TestRecordCreateSerializer(serializers.ModelSerializer):
record_data = TestRecordItemSerializer(many=True)
record_data = TestRecordItemCreateSerializer(many=True)
class Meta:
model = TestRecord
fields = ['form', 'record_data', 'is_testok', 'fifo_item']
@ -59,21 +64,21 @@ class TestRecordListSerializer(serializers.ModelSerializer):
class TestRecordDetailSerializer(serializers.ModelSerializer):
form_ = RecordFormSimpleSerializer(source='form', read_only=True)
record_data_ = serializers.SerializerMethodField()
record_data_ = TestRecordItemSerializer(source='item_test_record', read_only=True, many=True)
class Meta:
model = TestRecord
fields = '__all__'
@staticmethod
def setup_eager_loading(queryset):
queryset = queryset.select_related('form','fifo_detail')
queryset = queryset.select_related('form','fifo_item')
return queryset
def get_record_data_(self, obj):
record_data = obj.record_data
all_fields = RecordFormField.objects.filter(form=obj.form, is_deletd=False).order_by('sort')
all_fields_l = RecordFormFieldSerializer(instance=all_fields, many=True).data
for i in all_fields_l:
key = i['field_key']
i['field_value'] = record_data.get(key, None)
return all_fields_l
# def get_record_data_(self, obj):
# record_data = obj.record_data
# all_fields = RecordFormField.objects.filter(form=obj.form, is_deletd=False).order_by('sort')
# all_fields_l = RecordFormFieldSerializer(instance=all_fields, many=True).data
# for i in all_fields_l:
# key = i['field_key']
# i['field_value'] = record_data.get(key, None)
# return all_fields_l

View File

@ -1,5 +1,5 @@
from apps.qm.serializers import StandardCreateUpdateSerializer, StandardSerializer, TestItemCreateUpdateSerializer, TestItemSerializer, TestRecordCreateSerializer, TestRecordDetailSerializer, TestRecordListSerializer
from apps.qm.models import Standard, TestItem, TestRecord
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
@ -57,7 +57,22 @@ class TestRecordViewSet(ModelViewSet):
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

View File

@ -178,7 +178,7 @@ class DoFormSubmit(CreateAPIView, GenericAPIView):
m['field_name'] = form_field.field_name
m['field_key'] = form_field.field_key
m['field_type'] = form_field.field_type
m['field_value'] = form_field.field_value
m['field_value'] = m['field_value']
m['sort'] = form_field.sort
m['wproduct_record'] = wr
wrds.append(WProductRecordItem(**m))