feat: mioitem 返回信息时展示组合件信息

This commit is contained in:
caoqianming 2025-08-04 11:21:35 +08:00
parent 7d2fee8409
commit 884b10d6bc
1 changed files with 21 additions and 4 deletions

View File

@ -30,6 +30,15 @@ class MaterialBatchAListSerializer(CustomModelSerializer):
fields = ['material', 'batch', 'rate', 'mb', 'id', 'material_']
class MaterialBatchAListSerializer2(CustomModelSerializer):
material_name = serializers.StringRelatedField(
source='material', read_only=True)
class Meta:
model = MIOItemA
fields = ['material', 'batch', 'rate', 'mb',
'id', 'material_', 'material_name']
class MaterialBatchSerializer(CustomModelSerializer):
warehouse_name = serializers.CharField(
source='warehouse.name', read_only=True)
@ -209,15 +218,14 @@ class MIOItemAListSerializer(CustomModelSerializer):
class Meta:
model = MIOItemA
fields = ['material', 'batch', 'rate', 'mioitem',
'id', 'material_', 'material_name']
fields = "__all__"
read_only_fields = EXCLUDE_FIELDS_BASE
class MIOItemSerializer(CustomModelSerializer):
warehouse_name = serializers.CharField(source='warehouse.name', read_only=True)
material_ = MaterialSerializer(source='material', read_only=True)
assemb = MIOItemAListSerializer(
source='a_mioitem', read_only=True, many=True)
assemb = serializers.SerializerMethodField(label="组合件信息")
material_name = serializers.StringRelatedField(
source='material', read_only=True)
inout_date = serializers.DateField(source='mio.inout_date', read_only=True)
@ -235,6 +243,15 @@ class MIOItemSerializer(CustomModelSerializer):
ret["price"] = Decimal(ret["count"]) * Decimal(ret["unit_price"])
return ret
def get_assemb(self, obj):
qs = MIOItemA.objects.filter(mioitem=obj)
if qs.exists():
return MIOItemAListSerializer(qs, many=True).data
elif obj.mb and obj.mb.material.is_assemb:
return MaterialBatchAListSerializer2(MaterialBatchA.objects.filter(mb=obj.mb), many=True).data
return None
class MioItemDetailSerializer(MIOItemSerializer):
mio_ = MIOListSerializer(source='mio', read_only=True)