This commit is contained in:
TianyangZhang 2025-11-05 16:42:52 +08:00
commit 1c71659890
1 changed files with 18 additions and 22 deletions

View File

@ -367,24 +367,22 @@ class FtestProcessSerializer(CustomModelSerializer):
instance = super().create(validated_data) instance = super().create(validated_data)
for item in ftestitems: for item in ftestitems:
FtestItem.objects.create(ftest=instance, **item) FtestItem.objects.create(ftest=instance, **item)
# 判断是否合格和主缺陷
is_ok = True is_ok = True
defect_main = None defect_main = None
has_is_main = False
for item2 in ftestdefects: for item2 in ftestdefects:
defect:Defect = item2["defect"] defect:Defect = item2["defect"]
if defect.okcate in [Defect.DEFECT_NOTOK] and item2["has"]: if defect.okcate in [Defect.DEFECT_NOTOK] and item2["has"]:
is_ok = False is_ok = False
if not has_is_main: if defect_main is None:
item2["is_main"] = True
has_is_main = True
defect_main = defect defect_main = defect
item2["is_main"] = True
else: else:
item2["is_main"] = False item2["is_main"] = False
FtestDefect.objects.create(ftest=instance, **item2) FtestDefect.objects.create(ftest=instance, **item2)
if not is_ok:
instance.defect_main = defect_main instance.defect_main = defect_main
else:
instance.defect_main = None
instance.is_ok = is_ok instance.is_ok = is_ok
instance.save() instance.save()
return instance return instance
@ -402,9 +400,8 @@ class FtestProcessSerializer(CustomModelSerializer):
for k, v in item.items(): for k, v in item.items():
setattr(ins, k, v) setattr(ins, k, v)
ins.save() ins.save()
is_ok = True
defect_main = None # 先保存
has_is_main = False
for item2 in ftestdefects: for item2 in ftestdefects:
try: try:
ins:FtestDefect = FtestDefect.objects.get(ftest=instance, defect=item2["defect"]) ins:FtestDefect = FtestDefect.objects.get(ftest=instance, defect=item2["defect"])
@ -416,22 +413,21 @@ class FtestProcessSerializer(CustomModelSerializer):
for k, v in item2.items(): for k, v in item2.items():
setattr(ins, k, v) setattr(ins, k, v)
ins.save() ins.save()
if ins.is_main:
has_is_main = True # 判断是否合格和主缺陷
defect_main = ins.defect is_ok = True
defect_main = None
for ins in FtestDefect.objects.filter(ftest=instance).order_by("create_time"):
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
if not has_is_main: if defect_main is None:
ins.is_main = True
has_is_main = True
defect_main = ins.defect defect_main = ins.defect
ins.is_main = True
else: else:
ins.is_main = False ins.is_main = False
ins.save() ins.save(update_fields=["is_main"])
if not is_ok:
instance.defect_main = defect_main instance.defect_main = defect_main
else:
instance.defect_main = None
instance.is_ok = is_ok instance.is_ok = is_ok
instance.save() instance.save()
return instance return instance