diff --git a/apps/mtm/serializers.py b/apps/mtm/serializers.py index 0eabfd65..0b0c36e4 100644 --- a/apps/mtm/serializers.py +++ b/apps/mtm/serializers.py @@ -200,9 +200,7 @@ class RouteSerializer(CustomModelSerializer): material_out.cate = material.cate material_out.tracking = material_out_tracking material_out.save() - instance.material_out = material_out - instance.save() - return + 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 @@ -211,9 +209,7 @@ class RouteSerializer(CustomModelSerializer): material_out.cate = material.cate material_out.tracking = material_out_tracking material_out.save() - instance.material_out = material_out - instance.save() - return + return material_out material_out = Material.objects.create(**{'parent': instance.material, 'process': instance.process, 'is_hidden': True, 'name': material.name, 'number': material.number, @@ -225,10 +221,8 @@ class RouteSerializer(CustomModelSerializer): 'create_by': self.request.user, 'update_by': self.request.user, }) - instance.material_out = material_out - instance.save() - return - + return material_out + def create(self, validated_data): process = validated_data['process'] routepack = validated_data.get('routepack', None) @@ -257,7 +251,13 @@ class RouteSerializer(CustomModelSerializer): # raise ParseError('物料工序错误!请重新选择') else: if instance.material: - self.gen_material_out(instance, material_out_tracking) + instance.material_out = self.gen_material_out(instance, material_out_tracking) + rx = Route.objects.filter(material_in=instance.material_in, material_out=instance.material_out, process=process).first() + if rx: + msg = "" + if rx.routepack: + msg = rx.routepack.name + raise ParseError(f"该工艺步骤已存在-{msg}") return instance def update(self, instance, validated_data): @@ -277,7 +277,13 @@ class RouteSerializer(CustomModelSerializer): # raise ParseError('物料工序错误!请重新选择') else: if instance.material: - self.gen_material_out(instance, material_out_tracking) + instance.material_out = self.gen_material_out(instance, material_out_tracking) + rx = Route.objects.filter(material_in=instance.material_in, material_out=instance.material_out, process=process).exclude(id=instance.id).first() + if rx: + msg = "" + if rx.routepack: + msg = rx.routepack.name + raise ParseError(f"该工艺步骤已存在-{msg}") return instance def to_representation(self, instance):