feat: mlog 12 支持update
This commit is contained in:
parent
ba8bc4fb72
commit
fbaf4b5767
|
@ -277,25 +277,7 @@ class MlogSerializer(CustomModelSerializer):
|
|||
}
|
||||
|
||||
def create(self, validated_data):
|
||||
mtaskb: Mtaskb = validated_data.get('mtaskb', None)
|
||||
if mtaskb:
|
||||
mtask = mtaskb.mtask
|
||||
validated_data['mtask'] = mtask
|
||||
validated_data['handle_user'] = mtaskb.handle_user
|
||||
else:
|
||||
mtask: Mtask = validated_data.get('mtask', None)
|
||||
if mtask:
|
||||
validated_data['mgroup'] = mtask.mgroup
|
||||
validated_data['material_in'] = mtask.material_in
|
||||
material_out = mtask.material_out
|
||||
validated_data['material_out'] = material_out
|
||||
if mtask.start_date == mtask.end_date:
|
||||
validated_data['handle_date'] = mtask.end_date
|
||||
else:
|
||||
mgroup = validated_data['mgroup']
|
||||
material_out = validated_data['material_out']
|
||||
if not (mgroup and material_out):
|
||||
raise ValidationError('缺少工段或产物!')
|
||||
material_out = validated_data['material_out']
|
||||
with transaction.atomic():
|
||||
mlogb = validated_data.pop('mlogb', [])
|
||||
instance: Mlog = super().create(validated_data)
|
||||
|
@ -336,14 +318,14 @@ class MlogSerializer(CustomModelSerializer):
|
|||
'count_break_t': instance.count_break_t
|
||||
}
|
||||
for f in Mlogb._meta.fields:
|
||||
if 'count_n_' in f.name and f.name != 'count_pn_jgqbl':
|
||||
if 'count_n_' in f.name:
|
||||
add_dict_2[f.name] = getattr(instance, f.name)
|
||||
Mlogb.objects.create(**add_dict_2)
|
||||
return instance
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
if instance.fill_way != Mlog.MLOG_2:
|
||||
raise ValidationError('不支持编辑!')
|
||||
if instance.fill_way == Mlog.MLOG_23:
|
||||
raise ParseError('不支持的填写类型')
|
||||
validated_data.pop('mtask', None)
|
||||
validated_data.pop('mgroup', None)
|
||||
if instance.mtask:
|
||||
|
@ -351,12 +333,47 @@ class MlogSerializer(CustomModelSerializer):
|
|||
# validated_data.pop('handle_user', None)
|
||||
with transaction.atomic():
|
||||
mlogb = validated_data.pop('mlogb', [])
|
||||
instance = super().update(instance, validated_data)
|
||||
if mlogb:
|
||||
instance: Mlog = super().update(instance, validated_data)
|
||||
if instance.fill_way == Mlog.MLOG_12:
|
||||
# 自动生成mlogb
|
||||
batch_in = instance.batch
|
||||
if instance.wm_in:
|
||||
batch_in = instance.wm_in.batch
|
||||
minx, _ = Mlogb.objects.get_or_create(
|
||||
mlog=instance,
|
||||
batch=batch_in,
|
||||
wm_in=instance.wm_in,
|
||||
mtask=instance.mtask,
|
||||
material_in=instance.material_in
|
||||
)
|
||||
minx.count_use = instance.count_use
|
||||
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_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:
|
||||
# 生成产出物
|
||||
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
|
||||
mox.count_notok = instance.count_notok
|
||||
mox.count_break_t = instance.count_break_t
|
||||
mox.save()
|
||||
for f in Mlogb._meta.fields:
|
||||
if 'count_n_' in f.name:
|
||||
setattr(mox, f.name, getattr(instance, f.name))
|
||||
Mlogb.objects.filter(mlog=instance, material_out__isnull=False).exclude(id=mox.id).delete()
|
||||
return instance
|
||||
|
||||
def validate(self, attrs):
|
||||
|
@ -405,6 +422,25 @@ class MlogSerializer(CustomModelSerializer):
|
|||
# pass
|
||||
# else:
|
||||
# raise ValidationError('操作日期错误')
|
||||
mtaskb: Mtaskb = attrs.get('mtaskb', None)
|
||||
if mtaskb:
|
||||
mtask = mtaskb.mtask
|
||||
attrs['mtask'] = mtask
|
||||
attrs['handle_user'] = mtaskb.handle_user
|
||||
else:
|
||||
mtask: Mtask = attrs.get('mtask', None)
|
||||
if mtask:
|
||||
attrs['mgroup'] = mtask.mgroup
|
||||
attrs['material_in'] = mtask.material_in
|
||||
material_out = mtask.material_out
|
||||
attrs['material_out'] = material_out
|
||||
if mtask.start_date == mtask.end_date:
|
||||
attrs['handle_date'] = mtask.end_date
|
||||
else:
|
||||
mgroup = attrs['mgroup']
|
||||
material_out = attrs['material_out']
|
||||
if not (mgroup and material_out):
|
||||
raise ValidationError('缺少工段或产物!')
|
||||
return attrs
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue