feat: handoverserializer 优化
This commit is contained in:
parent
0931835708
commit
ced8692585
|
|
@ -678,12 +678,13 @@ class Handoverbwserializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Handoverbw
|
model = Handoverbw
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
read_only_fields = EXCLUDE_FIELDS_BASE + ["handoverb"]
|
read_only_fields = EXCLUDE_FIELDS_BASE + ["handoverb", "number"]
|
||||||
extra_kwargs = {'wpr': {'required': True}}
|
extra_kwargs = {'wpr': {'required': True}}
|
||||||
|
|
||||||
class HandoverbSerializer(CustomModelSerializer):
|
class HandoverbSerializer(CustomModelSerializer):
|
||||||
batch = serializers.CharField(source='wm.batch', read_only=True)
|
batch = serializers.CharField(source='wm.batch', read_only=True)
|
||||||
notok_sign = serializers.CharField(source='wm.notok_sign', read_only=True)
|
notok_sign = serializers.CharField(source='wm.notok_sign', read_only=True)
|
||||||
|
defect_name = serializers.CharField(source="wm.defect.name", read_only=True)
|
||||||
handoverbw = Handoverbwserializer(many=True, required=False)
|
handoverbw = Handoverbwserializer(many=True, required=False)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Handoverb
|
model = Handoverb
|
||||||
|
|
@ -785,11 +786,15 @@ class HandoverSerializer(CustomModelSerializer):
|
||||||
handoverbw = item.pop("handoverbw", [])
|
handoverbw = item.pop("handoverbw", [])
|
||||||
handoverb, _ = Handoverb.objects.get_or_create(handover=ins, wm=wm, count=count)
|
handoverb, _ = Handoverb.objects.get_or_create(handover=ins, wm=wm, count=count)
|
||||||
if wm.material.tracking == Material.MA_TRACKING_SINGLE:
|
if wm.material.tracking == Material.MA_TRACKING_SINGLE:
|
||||||
if count == wm.count:
|
if handoverbw:
|
||||||
|
handoverb.count = len(handoverbw)
|
||||||
|
handoverb.save()
|
||||||
|
for item in handoverbw:
|
||||||
|
wpr = item["wpr"]
|
||||||
|
Handoverbw.objects.get_or_create(wpr=wpr, handoverb=handoverb, defaults={"number":wpr.number, "note": item.get("note", None)})
|
||||||
|
elif count == wm.count:
|
||||||
for item in Wpr.get_qs_by_wm(wm):
|
for item in Wpr.get_qs_by_wm(wm):
|
||||||
Handoverbw.objects.get_or_create(wpr=item, handoverb=handoverb)
|
Handoverbw.objects.get_or_create(wpr=item, handoverb=handoverb, defaults={"number"})
|
||||||
elif handoverbw:
|
|
||||||
Handoverbwserializer(data=handoverbw, many=True, context=self.context).save()
|
|
||||||
else:
|
else:
|
||||||
raise ParseError(f'请提供交接物料明细编号')
|
raise ParseError(f'请提供交接物料明细编号')
|
||||||
return ins
|
return ins
|
||||||
|
|
@ -808,14 +813,20 @@ class HandoverSerializer(CustomModelSerializer):
|
||||||
hb.count = count
|
hb.count = count
|
||||||
hb.save()
|
hb.save()
|
||||||
if wm.material.tracking == Material.MA_TRACKING_SINGLE:
|
if wm.material.tracking == Material.MA_TRACKING_SINGLE:
|
||||||
if count == wm.count:
|
if handoverbw:
|
||||||
Handoverbw.objects.filter(handoverb=hb).delete()
|
hb.count = len(handoverbw)
|
||||||
for item in Wpr.get_qs_by_wm(wm):
|
hb.save()
|
||||||
|
wprIds = [item["wpr"].id for item in handoverbw]
|
||||||
|
Handoverbw.objects.filter(handoverb=hb).exclude(wpr__in=wprIds).delete()
|
||||||
|
for item in handoverbw:
|
||||||
|
wpr = item["wpr"]
|
||||||
|
Handoverbw.objects.get_or_create(wpr=wpr, handoverb=hb, defaults={"number": wpr.number, "note": item.get("note", None)})
|
||||||
|
elif count == wm.count:
|
||||||
|
wpr_qs = Wpr.get_qs_by_wm(wm)
|
||||||
|
Handoverbw.objects.filter(handoverb=hb).exclude(wpr__in=wpr_qs).delete()
|
||||||
|
for item in wpr_qs:
|
||||||
Handoverbw.objects.get_or_create(wpr=item, handoverb=handoverb,
|
Handoverbw.objects.get_or_create(wpr=item, handoverb=handoverb,
|
||||||
defaults={"number": item.number})
|
defaults={"number": item.number})
|
||||||
elif handoverbw:
|
|
||||||
Handoverbw.objects.filter(handoverb=hb).delete()
|
|
||||||
Handoverbwserializer(data=handoverbw, many=True, context=self.context).save()
|
|
||||||
else:
|
else:
|
||||||
raise ParseError(f'请提供交接物料明细编号')
|
raise ParseError(f'请提供交接物料明细编号')
|
||||||
Handoverb.objects.filter(handover=instance).exclude(wm__in=wmIds).delete()
|
Handoverb.objects.filter(handover=instance).exclude(wm__in=wmIds).delete()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue