修改qm
This commit is contained in:
parent
5357a2d82a
commit
0158998ef9
|
@ -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='关联的检测记录'),
|
||||
),
|
||||
]
|
|
@ -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')
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue