From 580109aa9f446d1ad6aa054fdb8b1434ba34b3a7 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 22 Nov 2024 18:35:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20mlog=20=E5=A1=AB=E5=86=99=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E5=8F=8Ahandoverb=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/serializers.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 34a0bbe1..0b9bbb28 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -351,7 +351,8 @@ class MlogSerializer(CustomModelSerializer): mlogb = validated_data.pop('mlogb', []) instance: Mlog = super().update(instance, validated_data) wm_in = instance.wm_in - if instance.fill_way == Mlog.MLOG_12: + # 修改消耗 + if instance.fill_way in [Mlog.MLOG_12, Mlog.MLOG_2]: # 自动生成mlogb batch_in = instance.batch if wm_in: @@ -370,20 +371,23 @@ class MlogSerializer(CustomModelSerializer): minx.count_break = instance.count_break minx.count_pn_jgqbl = instance.count_pn_jgqbl minx.save() - - if mlogb and instance.fill_way == Mlog.MLOG_2: + Mlogb.objects.filter(mlog=instance, material_in__isnull=False).exclude(id=minx.id).delete() + + # 修改产出 + if instance.fill_way == Mlog.MLOG_2 and instance.material_out.brothers: + # 针对兄弟件的情况 Mlogb.objects.filter(mlog=instance, material_out__isnull=False).update(count_ok=0) for item in mlogb: Mlogb.objects.filter(mlog=instance, material_out=item['material_out']).update( count_ok=item['count_ok']) - elif instance.fill_way == Mlog.MLOG_12: + + elif instance.fill_way in [Mlog.MLOG_12, Mlog.MLOG_2]: # 生成产出物 batch_out = instance.batch if batch_out: pass else: batch_out = generate_new_batch(batch_in, instance) - mox, _ = Mlogb.objects.get_or_create(mlog=instance, batch=batch_out, mtask=instance.mtask, material_out=instance.material_out) mox.count_ok = instance.count_ok @@ -400,7 +404,7 @@ class MlogSerializer(CustomModelSerializer): return instance def validate(self, attrs): - attrs['fill_way'] = Mlog.MLOG_2 + attrs['fill_way'] = Mlog.MLOG_2 # 只填第二级 attrs['mtype'] = Mlog.MTYPE_SELF # 默认为自生产 fmlog = attrs.get('fmlog', None) mtaskb = attrs.get('mtaskb', None) @@ -634,7 +638,7 @@ class HandoverSerializer(CustomModelSerializer): material_name = serializers.StringRelatedField( source='material', read_only=True) wm_notok_sign = serializers.CharField(source='wm.notok_sign', read_only=True) - handoverb = HandoverbSerializer(many=True) + handoverb = HandoverbSerializer(many=True, required=False) def validate(self, attrs): if 'type' not in attrs: