fix: mlog 填写方式及handoverb的问题

This commit is contained in:
caoqianming 2024-11-22 18:35:12 +08:00
parent 5d6ce9f6c0
commit 580109aa9f
1 changed files with 11 additions and 7 deletions

View File

@ -351,7 +351,8 @@ class MlogSerializer(CustomModelSerializer):
mlogb = validated_data.pop('mlogb', []) mlogb = validated_data.pop('mlogb', [])
instance: Mlog = super().update(instance, validated_data) instance: Mlog = super().update(instance, validated_data)
wm_in = instance.wm_in wm_in = instance.wm_in
if instance.fill_way == Mlog.MLOG_12: # 修改消耗
if instance.fill_way in [Mlog.MLOG_12, Mlog.MLOG_2]:
# 自动生成mlogb # 自动生成mlogb
batch_in = instance.batch batch_in = instance.batch
if wm_in: if wm_in:
@ -370,20 +371,23 @@ class MlogSerializer(CustomModelSerializer):
minx.count_break = instance.count_break minx.count_break = instance.count_break
minx.count_pn_jgqbl = instance.count_pn_jgqbl minx.count_pn_jgqbl = instance.count_pn_jgqbl
minx.save() minx.save()
Mlogb.objects.filter(mlog=instance, material_in__isnull=False).exclude(id=minx.id).delete()
if mlogb and instance.fill_way == Mlog.MLOG_2:
# 修改产出
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) Mlogb.objects.filter(mlog=instance, material_out__isnull=False).update(count_ok=0)
for item in mlogb: for item in mlogb:
Mlogb.objects.filter(mlog=instance, material_out=item['material_out']).update( Mlogb.objects.filter(mlog=instance, material_out=item['material_out']).update(
count_ok=item['count_ok']) 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 batch_out = instance.batch
if batch_out: if batch_out:
pass pass
else: else:
batch_out = generate_new_batch(batch_in, instance) batch_out = generate_new_batch(batch_in, instance)
mox, _ = Mlogb.objects.get_or_create(mlog=instance, batch=batch_out, mox, _ = Mlogb.objects.get_or_create(mlog=instance, batch=batch_out,
mtask=instance.mtask, material_out=instance.material_out) mtask=instance.mtask, material_out=instance.material_out)
mox.count_ok = instance.count_ok mox.count_ok = instance.count_ok
@ -400,7 +404,7 @@ class MlogSerializer(CustomModelSerializer):
return instance return instance
def validate(self, attrs): def validate(self, attrs):
attrs['fill_way'] = Mlog.MLOG_2 attrs['fill_way'] = Mlog.MLOG_2 # 只填第二级
attrs['mtype'] = Mlog.MTYPE_SELF # 默认为自生产 attrs['mtype'] = Mlog.MTYPE_SELF # 默认为自生产
fmlog = attrs.get('fmlog', None) fmlog = attrs.get('fmlog', None)
mtaskb = attrs.get('mtaskb', None) mtaskb = attrs.get('mtaskb', None)
@ -634,7 +638,7 @@ class HandoverSerializer(CustomModelSerializer):
material_name = serializers.StringRelatedField( material_name = serializers.StringRelatedField(
source='material', read_only=True) source='material', read_only=True)
wm_notok_sign = serializers.CharField(source='wm.notok_sign', 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): def validate(self, attrs):
if 'type' not in attrs: if 'type' not in attrs: