fix: ftestprocess 在create和update时保持一致
This commit is contained in:
parent
b6a2a6a8d7
commit
b9d72f9619
|
|
@ -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
|
||||
Loading…
Reference in New Issue