diff --git a/apps/mtm/serializers.py b/apps/mtm/serializers.py index f7ccf8d8..74eed38b 100644 --- a/apps/mtm/serializers.py +++ b/apps/mtm/serializers.py @@ -211,7 +211,23 @@ class RouteSerializer(CustomModelSerializer): """ material = instance.material process = instance.process - material_out: Material = Material.objects.get_queryset(all=True).filter(type=Material.MA_TYPE_HALFGOOD, parent=material, process=process).first() + + material_out = Material.objects.get_queryset(all=True).filter(name=material.name, + model=material.model, process=process, + specification=material.specification).order_by("type", "-is_hidden", "create_time").first() + if material_out: + material_out.is_deleted = False + if material_out.parent is None: + if material_out.id != material.id: + material_out.parent = material + material_out.cate = material.cate + material_out.tracking = material_out_tracking + material_out.save() + return material_out + + material_out: Material = Material.objects.get_queryset(all=True).filter( + type__in=[Material.MA_TYPE_HALFGOOD, Material.MA_TYPE_GOOD], + parent=material, process=process).order_by("type", "-is_hidden", "create_time").first() if material_out: material_out.is_deleted = False if material_out.parent == material: @@ -222,16 +238,6 @@ class RouteSerializer(CustomModelSerializer): material_out.tracking = material_out_tracking material_out.save() return material_out - material_out = Material.objects.get_queryset(all=True).filter(name=material.name, model=material.model, process=process, specification=material.specification).first() - if material_out: - material_out.is_deleted = False - if material_out.parent is None: - if material_out.id != material.id: - material_out.parent = material - material_out.cate = material.cate - material_out.tracking = material_out_tracking - material_out.save() - return material_out material_out = Material.objects.create(**{'parent': instance.material, 'process': instance.process, 'is_hidden': True, 'name': material.name, 'number': material.number,