fix:MlogbwCreateUpdateSerializer bug3

This commit is contained in:
caoqianming 2025-01-09 11:36:18 +08:00
parent ef4a31c3a5
commit 58aa629648
1 changed files with 14 additions and 12 deletions

View File

@ -4,7 +4,7 @@ from apps.qm.models import (QuaStat, TestItem, Ftest, FtestItem, FtestWork, Ptes
from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from rest_framework import serializers from rest_framework import serializers
from rest_framework.exceptions import ValidationError from rest_framework.exceptions import ValidationError, ParseError
from apps.wpm.models import SfLog, WMaterial from apps.wpm.models import SfLog, WMaterial
from django.db import transaction from django.db import transaction
from apps.inm.serializers import MaterialBatchDetailSerializer from apps.inm.serializers import MaterialBatchDetailSerializer
@ -300,19 +300,21 @@ class FtestProcessSerializer(CustomModelSerializer):
with transaction.atomic(): with transaction.atomic():
instance = super().update(instance, validated_data) instance = super().update(instance, validated_data)
for item in ftestitems: for item in ftestitems:
if "id" in item and item["id"]: ins, is_create = FtestItem.objects.get_or_create(
FtestItem.objects.filter(id=item["id"]).update( testitem = item["testitem"], ftest=instance, defaults=item)
test_user = item["test_user"], if is_create:
test_val_json = item["test_val_json"]) raise ParseError("新的检测项!")
else: for k, v in item.items():
FtestItem.objects.create(ftest=instance, **item) setattr(ins, k, v)
ins.save()
is_ok = True is_ok = True
for item2 in ftestdefects: for item2 in ftestdefects:
if "id" in item2 and item2["id"]: ins, is_create = FtestDefect.objects.get_or_create(
ins: FtestDefect = FtestDefect.objects.get(id=item2["id"]) ftest=instance, defect=item2["defect"], defaults=item2)
else: if is_create:
ins = FtestDefect.objects.create(ftest=instance, **item2) raise ParseError("新的缺陷项!")
ins.has = item2["has"] for k, v in item2.items():
setattr(ins, k, v)
ins.save() ins.save()
if ins.has and ins.defect.okcate in [Defect.DEFECT_NOTOK]: if ins.has and ins.defect.okcate in [Defect.DEFECT_NOTOK]:
is_ok = False is_ok = False