diff --git a/api_v2/views/printing.py b/api_v2/views/printing.py index 2b40141..ea33197 100644 --- a/api_v2/views/printing.py +++ b/api_v2/views/printing.py @@ -13,7 +13,10 @@ from rest_framework.views import APIView from basic_info import models as basic_models from printing import models as printing_models from api_man.serializers import ProductSerializer -from api_v1.views.printing.serializers import PlateOrderListSerializer as PlateOrderListV1Serializer +from api_v1.views.printing.serializers import ( + PlateOrderListSerializer as PlateOrderListV1Serializer, + _serialize_plate_images, +) from stateflow import models as stateflow_models from stateflow import services as stateflow_services @@ -31,6 +34,13 @@ class IsPrintingFactory(permissions.BasePermission): return False +def _serialize_plate_image_first(raw_value, request): + images = _serialize_plate_images(raw_value, request) + if not images: + return [] + return images[:1] + + class PrintingJobV2Serializer(serializers.ModelSerializer): """v2 独立的印染任务序列化器,包含开单数量""" @@ -384,6 +394,7 @@ class PlateOrderByProcessNodeSerializer(serializers.ModelSerializer): business_object_id = serializers.SerializerMethodField() created_by = serializers.IntegerField(source='created_by_id', read_only=True) process_parameters = serializers.SerializerMethodField() + plate_image = serializers.SerializerMethodField() class Meta: model = printing_models.PlateOrder @@ -391,6 +402,7 @@ class PlateOrderByProcessNodeSerializer(serializers.ModelSerializer): 'id', 'original_id', 'design_code', + 'plate_image', 'customer', 'customer_name', 'style_name', @@ -446,6 +458,9 @@ class PlateOrderByProcessNodeSerializer(serializers.ModelSerializer): return [{'key': k, 'value': summary.get(k)} for k in keys] + def get_plate_image(self, obj: printing_models.PlateOrder) -> list[dict]: + return _serialize_plate_image_first(getattr(obj, 'plate_image', None), self.context.get('request')) + class PlateOrderByProcessNodeView(APIView): """ @@ -627,6 +642,7 @@ class PlateOrderByProcessSerializer(serializers.ModelSerializer): business_object_id = serializers.SerializerMethodField() created_by = serializers.IntegerField(source='created_by_id', read_only=True) process_params = serializers.SerializerMethodField() + plate_image = serializers.SerializerMethodField() class Meta: model = printing_models.PlateOrder @@ -634,6 +650,7 @@ class PlateOrderByProcessSerializer(serializers.ModelSerializer): 'id', 'original_id', 'design_code', + 'plate_image', 'customer', 'customer_name', 'style_name', @@ -722,6 +739,9 @@ class PlateOrderByProcessSerializer(serializers.ModelSerializer): }) return result + def get_plate_image(self, obj: printing_models.PlateOrder) -> list[dict]: + return _serialize_plate_image_first(getattr(obj, 'plate_image', None), self.context.get('request')) + class PlateOrderByStateStatusSerializer(PlateOrderListV1Serializer): """按单个节点状态过滤 PlateOrder,并扩展状态流信息""" @@ -800,6 +820,13 @@ class PlateOrderByStateStatusSerializer(PlateOrderListV1Serializer): 'is_cancelled': log.is_cancelled, } + def to_representation(self, instance): + data = super().to_representation(instance) + plate_image = data.get('plate_image') + if isinstance(plate_image, list): + data['plate_image'] = plate_image[:1] + return data + class PlateOrderByProcessView(APIView): """