fix: MIOItemwSerializer修改

This commit is contained in:
caoqianming 2025-01-03 15:19:44 +08:00
parent 8d0d5ebcd0
commit 86007d0ad4
2 changed files with 14 additions and 14 deletions

View File

@ -153,6 +153,10 @@ class MIOItem(BaseModel):
mioitem_count_fields.append(f.name) mioitem_count_fields.append(f.name)
return mioitem_count_fields return mioitem_count_fields
@property
def mioitemw(self):
return MIOItemw.objects.filter(mioitem=self)
class MIOItemA(BaseModel): class MIOItemA(BaseModel):
""" """
组合件出入库明细 组合件出入库明细

View File

@ -92,15 +92,11 @@ class MIOItemACreateSerializer(CustomModelSerializer):
fields = ['material', 'batch', 'zhuidu', fields = ['material', 'batch', 'zhuidu',
'b_zuidawaijing', 'g_zuidaneijing'] 'b_zuidawaijing', 'g_zuidaneijing']
class MIOItemwCreateSerializer(CustomModelSerializer):
class Meta:
model = MIOItemw
fields = ["number", "note"]
class MIOItemwSerializer(CustomModelSerializer): class MIOItemwSerializer(CustomModelSerializer):
class Meta: class Meta:
model = MIOItemw model = MIOItemw
fields = "__all__" fields = "__all__"
read_only_fields = EXCLUDE_FIELDS_BASE + ["mioitem"]
class MIOItemwTestSerializer(CustomModelSerializer): class MIOItemwTestSerializer(CustomModelSerializer):
class Meta: class Meta:
@ -118,12 +114,12 @@ class MIOItemwTestSerializer(CustomModelSerializer):
class MIOItemCreateSerializer(CustomModelSerializer): class MIOItemCreateSerializer(CustomModelSerializer):
assemb = MIOItemACreateSerializer( assemb = MIOItemACreateSerializer(
label='组合件信息', many=True, write_only=True, required=False) label='组合件信息', many=True, write_only=True, required=False)
mioitemw_ = MIOItemwCreateSerializer(many=True, required=False) mioitemw = MIOItemwSerializer(many=True, required=False)
class Meta: class Meta:
model = MIOItem model = MIOItem
fields = ['mio', 'warehouse', 'material', fields = ['mio', 'warehouse', 'material',
'batch', 'count', 'assemb', 'is_testok', 'mioitemw_'] 'batch', 'count', 'assemb', 'is_testok', 'mioitemw']
def create(self, validated_data): def create(self, validated_data):
mio = validated_data['mio'] mio = validated_data['mio']
@ -142,7 +138,7 @@ class MIOItemCreateSerializer(CustomModelSerializer):
count = validated_data["count"] count = validated_data["count"]
batch = validated_data["batch"] batch = validated_data["batch"]
assemb = validated_data.pop('assemb', []) assemb = validated_data.pop('assemb', [])
mioitemw_ = validated_data.pop('mioitemw_', []) mioitemw = validated_data.pop('mioitemw', [])
instance = super().create(validated_data) instance = super().create(validated_data)
assemb_dict = {} assemb_dict = {}
for i in assemb: for i in assemb:
@ -157,12 +153,12 @@ class MIOItemCreateSerializer(CustomModelSerializer):
else: else:
raise ParseError('缺少组合件') raise ParseError('缺少组合件')
if material.tracking == Material.MA_TRACKING_SINGLE: if material.tracking == Material.MA_TRACKING_SINGLE:
if count == 1 and len(mioitemw_) == 0: if count == 1 and len(mioitemw) == 0:
MIOItemw.objects.create(mioitem=instance, number=batch) MIOItemw.objects.create(mioitem=instance, number=batch)
elif count == 1 and len(mioitemw_) >= 1: elif count == 1 and len(mioitemw) >= 1:
MIOItemw.objects.create(mioitem=instance, number=mioitemw_[0]['number'], note=mioitemw_[0]['note']) MIOItemw.objects.create(mioitem=instance, number=mioitemw[0]['number'], note=mioitemw[0]['note'])
elif count > 1 and len(mioitemw_) == count: elif count > 1 and len(mioitemw) == count:
for item in mioitemw_: for item in mioitemw:
MIOItemw.objects.create(mioitem=instance, number=item['number'], note=item['note']) MIOItemw.objects.create(mioitem=instance, number=item['number'], note=item['note'])
else: else:
raise ParseError('单个明细信息不匹配') raise ParseError('单个明细信息不匹配')
@ -190,7 +186,7 @@ class MIOItemSerializer(CustomModelSerializer):
source='material', read_only=True) source='material', read_only=True)
inout_date = serializers.DateField(source='mio.inout_date', read_only=True) inout_date = serializers.DateField(source='mio.inout_date', read_only=True)
test_user_name = serializers.CharField(source='test_user.name', read_only=True) test_user_name = serializers.CharField(source='test_user.name', read_only=True)
mioitemw_ = MIOItemwSerializer(source='w_mioitem', read_only=True, many=True) mioitemw = MIOItemwSerializer(many=True, required=False)
class Meta: class Meta:
model = MIOItem model = MIOItem