feat: ftestwork create update serializer

This commit is contained in:
caoqianming 2025-03-03 16:17:52 +08:00
parent 8fdd56555f
commit 5245689ec2
1 changed files with 14 additions and 13 deletions

View File

@ -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