fix: routeserializer material_out_tracking错误

This commit is contained in:
caoqianming 2025-03-28 08:29:25 +08:00
parent 73f0e504c9
commit 18e5ca2598
1 changed files with 15 additions and 4 deletions

View File

@ -163,7 +163,7 @@ class RouteSerializer(CustomModelSerializer):
source='material_out.type', read_only=True)
material_out_is_hidden = serializers.BooleanField(
source='material_out.is_hidden', read_only=True)
material_out_tracking = serializers.IntegerField(source='material_out.tracking', required=False)
material_out_tracking = serializers.IntegerField(write_only=True, required=False, allow_null=True)
class Meta:
model = Route
@ -232,6 +232,7 @@ class RouteSerializer(CustomModelSerializer):
def create(self, validated_data):
process = validated_data['process']
routepack = validated_data.get('routepack', None)
material_out_tracking = validated_data.pop("material_out_tracking", Material.MA_TRACKING_BATCH)
if routepack:
pass
# if Route.objects.filter(routepack=routepack, process=process).exists():
@ -247,6 +248,8 @@ class RouteSerializer(CustomModelSerializer):
if material_out:
if material_out.process is None:
material_out.process = process
if material_out_tracking != material_out.tracking:
raise ParseError("物料跟踪类型不一致!请前往物料处修改")
if instance.material:
material_out.parent = instance.material
material_out.save()
@ -254,12 +257,13 @@ class RouteSerializer(CustomModelSerializer):
# raise ParseError('物料工序错误!请重新选择')
else:
if instance.material:
self.gen_material_out(instance, validated_data.get("material_out_tracking", Material.MA_TRACKING_BATCH))
self.gen_material_out(instance, material_out_tracking)
return instance
def update(self, instance, validated_data):
validated_data.pop('material', None)
process = validated_data.pop('process', None)
material_out_tracking = validated_data.pop("material_out_tracking", Material.MA_TRACKING_BATCH)
with transaction.atomic():
instance = super().update(instance, validated_data)
material_out = instance.material_out
@ -273,10 +277,17 @@ class RouteSerializer(CustomModelSerializer):
# raise ParseError('物料工序错误!请重新选择')
else:
if instance.material:
self.gen_material_out(instance, validated_data.get("material_out_tracking", Material.MA_TRACKING_BATCH))
self.gen_material_out(instance, material_out_tracking)
return instance
def to_representation(self, instance):
res = super().to_representation(instance)
if instance.material_out:
res['material_out_tracking'] = instance.material_out.tracking
else:
res['material_out_tracking'] = None
return res
class SruleSerializer(CustomModelSerializer):
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
class Meta: