fix: ftestprocess 在create和update时保持一致

This commit is contained in:
caoqianming 2025-11-05 14:24:02 +08:00
parent b6a2a6a8d7
commit b9d72f9619
1 changed files with 18 additions and 22 deletions

View File

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