From 4b9e65ba40be520b7952183ab6a5a0a39657ce3d Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 28 Mar 2025 08:48:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20route=20create=20update=20=E5=BC=BA?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mtm/serializers.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) 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):