feat: route create update 强校验4

This commit is contained in:
caoqianming 2025-03-28 09:20:08 +08:00
parent c541e58006
commit 98d76424c7
1 changed files with 8 additions and 2 deletions

View File

@ -227,6 +227,7 @@ class RouteSerializer(CustomModelSerializer):
process = validated_data['process'] process = validated_data['process']
routepack = validated_data.get('routepack', None) routepack = validated_data.get('routepack', None)
material_out_tracking = validated_data.pop("material_out_tracking", Material.MA_TRACKING_BATCH) material_out_tracking = validated_data.pop("material_out_tracking", Material.MA_TRACKING_BATCH)
need_save = False
if routepack: if routepack:
pass pass
# if Route.objects.filter(routepack=routepack, process=process).exists(): # if Route.objects.filter(routepack=routepack, process=process).exists():
@ -252,13 +253,15 @@ class RouteSerializer(CustomModelSerializer):
else: else:
if instance.material: if instance.material:
instance.material_out = self.gen_material_out(instance, material_out_tracking) instance.material_out = self.gen_material_out(instance, material_out_tracking)
need_save = True
rx = Route.objects.filter(material_in=instance.material_in, material_out=instance.material_out, process=process).first() rx = Route.objects.filter(material_in=instance.material_in, material_out=instance.material_out, process=process).first()
if rx: if rx:
msg = "" msg = ""
if rx.routepack: if rx.routepack:
msg = rx.routepack.name msg = rx.routepack.name
raise ParseError(f"该工艺步骤已存在-{msg}") raise ParseError(f"该工艺步骤已存在-{msg}")
instance.save() if need_save:
instance.save()
return instance return instance
def update(self, instance, validated_data): def update(self, instance, validated_data):
@ -268,6 +271,7 @@ class RouteSerializer(CustomModelSerializer):
with transaction.atomic(): with transaction.atomic():
instance = super().update(instance, validated_data) instance = super().update(instance, validated_data)
material_out = instance.material_out material_out = instance.material_out
need_save = False
if material_out: if material_out:
if material_out.process is None: if material_out.process is None:
material_out.process = process material_out.process = process
@ -281,13 +285,15 @@ class RouteSerializer(CustomModelSerializer):
else: else:
if instance.material: if instance.material:
instance.material_out = self.gen_material_out(instance, material_out_tracking) instance.material_out = self.gen_material_out(instance, material_out_tracking)
need_save = True
rx = Route.objects.filter(material_in=instance.material_in, material_out=instance.material_out, process=process).exclude(id=instance.id).first() rx = Route.objects.filter(material_in=instance.material_in, material_out=instance.material_out, process=process).exclude(id=instance.id).first()
if rx: if rx:
msg = "" msg = ""
if rx.routepack: if rx.routepack:
msg = rx.routepack.name msg = rx.routepack.name
raise ParseError(f"该工艺步骤已存在-{msg}") raise ParseError(f"该工艺步骤已存在-{msg}")
instance.save() if need_save:
instance.save()
return instance return instance
def to_representation(self, instance): def to_representation(self, instance):