fix: route创建时的校验
This commit is contained in:
parent
6e8d78a5e9
commit
6dfa2b1696
|
@ -124,15 +124,16 @@ class RouteSerializer(CustomModelSerializer):
|
|||
fields = '__all__'
|
||||
read_only_fields = EXCLUDE_FIELDS
|
||||
|
||||
# def validate(self, attrs):
|
||||
# material = attrs['material']
|
||||
# if material.type != Material.MA_TYPE_GOOD:
|
||||
# raise ValidationError('请选择最终产品')
|
||||
# return super().validate(attrs)
|
||||
def validate(self, attrs):
|
||||
if 'mgroup' in attrs and attrs['mgroup']:
|
||||
attrs['process'] = attrs['mgroup'].process
|
||||
if attrs.get('process', None) is None:
|
||||
raise ParseError('未提供操作工序')
|
||||
return super().validate(attrs)
|
||||
|
||||
def gen_material_out(self, instance):
|
||||
"""
|
||||
废弃不用了
|
||||
自动形成物料
|
||||
"""
|
||||
name = f'{instance.material.name}-中'
|
||||
instance.material_out, _ = Material.objects.get_or_create(type=Material.MA_TYPE_HALFGOOD, parent=instance.material, process=instance.process,
|
||||
|
@ -140,6 +141,7 @@ class RouteSerializer(CustomModelSerializer):
|
|||
'is_hidden': True, 'name': name,
|
||||
'number': instance.material.number,
|
||||
'specification': instance.material.specification,
|
||||
'model': instance.material.model,
|
||||
'type': Material.MA_TYPE_HALFGOOD,
|
||||
'create_by': self.request.user,
|
||||
'update_by': self.request.user,
|
||||
|
@ -147,24 +149,40 @@ class RouteSerializer(CustomModelSerializer):
|
|||
instance.save()
|
||||
|
||||
def create(self, validated_data):
|
||||
process = validated_data.get('process', None)
|
||||
process = validated_data['process']
|
||||
if process and Route.objects.filter(material=validated_data['material'], process=process).exists():
|
||||
raise ValidationError('已选择该工序')
|
||||
with transaction.atomic():
|
||||
instance = super().create(validated_data)
|
||||
# if 'material_out' in validated_data and validated_data['material_out'] and instance.material:
|
||||
# pass
|
||||
# else:
|
||||
# self.gen_material_out(instance)
|
||||
material_out = instance.material_out
|
||||
if material_out:
|
||||
if material_out.process is None:
|
||||
material_out.process = instance.process
|
||||
if instance.material:
|
||||
material_out.parent = instance.material
|
||||
material_out.save()
|
||||
elif material_out.process != process:
|
||||
raise ParseError('物料工序错误!请重新选择')
|
||||
else:
|
||||
if instance.material:
|
||||
self.gen_material_out()
|
||||
return instance
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
validated_data.pop('material', None)
|
||||
validated_data.pop('process', None)
|
||||
process = validated_data.pop('process', None)
|
||||
with transaction.atomic():
|
||||
instance = super().update(instance, validated_data)
|
||||
# if 'material_out' in validated_data and validated_data['material_out'] and instance.material:
|
||||
# pass
|
||||
# else:
|
||||
# self.gen_material_out(instance)
|
||||
material_out = instance.material_out
|
||||
if material_out:
|
||||
if material_out.process is None:
|
||||
material_out.process = instance.process
|
||||
if instance.material:
|
||||
material_out.parent = instance.material
|
||||
material_out.save()
|
||||
elif material_out.process != process:
|
||||
raise ParseError('物料工序错误!请重新选择')
|
||||
else:
|
||||
if instance.material:
|
||||
self.gen_material_out()
|
||||
return instance
|
||||
|
|
Loading…
Reference in New Issue