feat:工艺路线Route创建/更新时未指定输出物料且工艺包无产品直接报错,不再静默生成残缺工序;补material_in_type字段供画布按物料真实类型着色

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
caoqianming 2026-07-23 09:15:26 +08:00
parent c08b220d17
commit 3561a50647
1 changed files with 6 additions and 0 deletions

View File

@ -177,6 +177,8 @@ class RouteSerializer(CustomModelSerializer):
process_cate = serializers.CharField(source='process.cate', read_only=True) process_cate = serializers.CharField(source='process.cate', read_only=True)
material_in_name = serializers.StringRelatedField( material_in_name = serializers.StringRelatedField(
source='material_in', read_only=True) source='material_in', read_only=True)
material_in_type = serializers.CharField(
source='material_in.type', read_only=True)
material_out_name = serializers.StringRelatedField( material_out_name = serializers.StringRelatedField(
source='material_out', read_only=True) source='material_out', read_only=True)
material_out_type = serializers.CharField( material_out_type = serializers.CharField(
@ -268,6 +270,8 @@ class RouteSerializer(CustomModelSerializer):
# if material and process and Route.objects.filter(material=material, process=process).exists(): # if material and process and Route.objects.filter(material=material, process=process).exists():
# raise ValidationError('已选择该工序!!') # raise ValidationError('已选择该工序!!')
if not validated_data.get('material_out') and not validated_data.get('material'):
raise ParseError('未指定输出物料,且工艺包未设置产品无法自动生成;请指定输出物料,或先在工艺包基本信息中选择产品')
instance:Route = super().create(validated_data) instance:Route = super().create(validated_data)
material_out = instance.material_out material_out = instance.material_out
if material_out: if material_out:
@ -303,6 +307,8 @@ class RouteSerializer(CustomModelSerializer):
if material_out_tracking is None: if material_out_tracking is None:
material_out_tracking = Material.MA_TRACKING_BATCH material_out_tracking = Material.MA_TRACKING_BATCH
if not validated_data.get('material_out', instance.material_out) and not instance.material:
raise ParseError('未指定输出物料,且工艺包未设置产品无法自动生成;请指定输出物料,或先在工艺包基本信息中选择产品')
instance = super().update(instance, validated_data) instance = super().update(instance, validated_data)
material_out = instance.material_out material_out = instance.material_out
if material_out: if material_out: