From 5245689ec22260c95da88376bd620cdf23ef6383 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 3 Mar 2025 16:17:52 +0800 Subject: [PATCH] feat: ftestwork create update serializer --- apps/qm/serializers.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/apps/qm/serializers.py b/apps/qm/serializers.py index 9ee1ffa5..e27dacf5 100644 --- a/apps/qm/serializers.py +++ b/apps/qm/serializers.py @@ -199,12 +199,9 @@ class FtestWorkCreateUpdateSerializer(CustomModelSerializer): ftestworkdefect = validated_data.pop("ftestworkdefect", []) with transaction.atomic(): ins: FtestWork = super().create(validated_data) - qct = Qct.get(ins.material, "inm") - if qct: - ins.qct = qct - ins.save() for ftestworkdefect in ftestworkdefect: - FtestworkDefect.objects.create(ftestwork=ins, **ftestworkdefect) + if ftestworkdefect['count'] > 0: + FtestworkDefect.objects.create(ftestwork=ins, **ftestworkdefect) if ins.qct or ftestworkdefect: ins.cal_count() return ins @@ -213,15 +210,19 @@ class FtestWorkCreateUpdateSerializer(CustomModelSerializer): ftestworkdefect = validated_data.pop("ftestworkdefect", []) ins:FtestWork = super().update(instance, validated_data) with transaction.atomic(): + fd_ids = [] for item in ftestworkdefect: - try: - ins = FtestworkDefect.objects.get(ftestwork=ins, defect=item["defect"]) - except FtestworkDefect.DoesNotExist: - raise ParseError("新的缺陷项!") - except FtestworkDefect.MultipleObjectsReturned: - raise ParseError("缺陷项重复!") - ins.count = item["count"] - ins.save() + if item["count"] > 0: + try: + ins = FtestworkDefect.objects.get(ftestwork=ins, defect=item["defect"]) + except FtestworkDefect.DoesNotExist: + raise ParseError("新的缺陷项!") + except FtestworkDefect.MultipleObjectsReturned: + raise ParseError("缺陷项重复!") + ins.count = item["count"] + ins.save() + fd_ids.append(ins.id) + FtestworkDefect.objects.filter(ftestwork=ins).exclude(id__in=fd_ids).delete() if ins.qct or ftestworkdefect: ins.cal_count() return ins