fix: mlogserializer material_outs_ bug修复
This commit is contained in:
parent
2cd4a68e23
commit
4460d4af61
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 3.2.12 on 2023-11-02 07:10
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0023_auto_20231102_1128'),
|
||||
('wpm', '0026_alter_wmaterial_unique_together'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='mlogb',
|
||||
name='material_out',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='mlogb_material_out', to='mtm.material', verbose_name='产物'),
|
||||
),
|
||||
]
|
|
@ -135,12 +135,16 @@ class Mlog(CommonADModel):
|
|||
submit_user = models.ForeignKey(
|
||||
User, verbose_name='提交人', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_submit_user')
|
||||
|
||||
@property
|
||||
def mlogb(self):
|
||||
return Mlogb.objects.filter(mlog=self)
|
||||
|
||||
|
||||
class Mlogb(BaseModel):
|
||||
mlog = models.ForeignKey(Mlog, verbose_name='关联日志',
|
||||
on_delete=models.CASCADE)
|
||||
material_out = models.ForeignKey(
|
||||
Material, verbose_name='产物', on_delete=models.CASCADE)
|
||||
Material, verbose_name='产物', on_delete=models.CASCADE, related_name='mlogb_material_out')
|
||||
count_ok = models.PositiveIntegerField('合格数量', default=0)
|
||||
|
||||
|
||||
|
|
|
@ -112,8 +112,8 @@ class MlogSerializer(CustomModelSerializer):
|
|||
equipment_2_name = serializers.CharField(
|
||||
source='equipment_2.name', read_only=True)
|
||||
shift_name = serializers.CharField(source='shift.name', read_only=True)
|
||||
material_outs_ = MlogbSerializer(
|
||||
label='多产出件信息', many=True, source='material_outs')
|
||||
mlogb = MlogbSerializer(
|
||||
label='多产出件信息', many=True, required=False)
|
||||
handle_users_ = UserSimpleSerializer(
|
||||
source='handle_users', many=True, read_only=True)
|
||||
|
||||
|
@ -124,7 +124,6 @@ class MlogSerializer(CustomModelSerializer):
|
|||
['submit_time', 'submit_user', 'material_outs']
|
||||
|
||||
def create(self, validated_data):
|
||||
print(1, validated_data)
|
||||
mtask = validated_data.get('mtask', None)
|
||||
batch = validated_data['batch']
|
||||
handle_date = validated_data['handle_date']
|
||||
|
@ -143,12 +142,12 @@ class MlogSerializer(CustomModelSerializer):
|
|||
if Mlog.objects.filter(mtask=mtask, batch=batch, handle_date=handle_date, handle_user=handle_user).exists():
|
||||
raise ValidationError('存在相同的日志记录')
|
||||
with transaction.atomic():
|
||||
material_outs_ = validated_data.pop('material_outs_', [])
|
||||
mlogb = validated_data.pop('mlogb', [])
|
||||
instance = super().create(validated_data)
|
||||
brotherId_should_list = material_out.brothers
|
||||
if brotherId_should_list:
|
||||
if material_outs_:
|
||||
for item in material_outs_:
|
||||
if mlogb:
|
||||
for item in mlogb:
|
||||
if item['material_out'].id in brotherId_should_list:
|
||||
Mlogb.objects.create(
|
||||
mlog=instance, material_out=item['material_out'], count_ok=item['count_ok'])
|
||||
|
@ -163,12 +162,12 @@ class MlogSerializer(CustomModelSerializer):
|
|||
validated_data.pop('handle_user', None)
|
||||
validated_data.pop('mgroup', None)
|
||||
with transaction.atomic():
|
||||
material_outs_ = validated_data.pop('material_outs_', [])
|
||||
mlogb = validated_data.pop('mlogb', [])
|
||||
instance = super().update(instance, validated_data)
|
||||
brotherId_should_list = instance.material_out.brothers
|
||||
if brotherId_should_list:
|
||||
if material_outs_:
|
||||
for item in material_outs_:
|
||||
if mlogb:
|
||||
for item in mlogb:
|
||||
id = item.get('id', None)
|
||||
if id:
|
||||
mlogb = Mlogb.objects.get(id=id)
|
||||
|
|
Loading…
Reference in New Issue