feat: wpr分配出库对外编号
This commit is contained in:
parent
b5889374eb
commit
84198f4d91
|
@ -29,4 +29,9 @@ class WprDetailSerializer(WprSerializer):
|
||||||
class WprNewSerializer(serializers.Serializer):
|
class WprNewSerializer(serializers.Serializer):
|
||||||
year = serializers.IntegerField()
|
year = serializers.IntegerField()
|
||||||
month = serializers.IntegerField()
|
month = serializers.IntegerField()
|
||||||
material_start = serializers.CharField(label="物料ID")
|
material_start = serializers.CharField(label="物料ID")
|
||||||
|
|
||||||
|
|
||||||
|
class WproutSerializer(serializers.ListSerializer):
|
||||||
|
id = serializers.CharField(label="wprId")
|
||||||
|
number_out = serializers.CharField(label="对外编号")
|
|
@ -3,9 +3,11 @@ from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
||||||
from apps.utils.mixins import CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin
|
from apps.utils.mixins import CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin
|
||||||
|
|
||||||
from apps.wpmw.models import Wpr, WprDefect
|
from apps.wpmw.models import Wpr, WprDefect
|
||||||
from apps.wpmw.serializers import WprSerializer, WprNewSerializer, WprDetailSerializer
|
from apps.wpmw.serializers import WprSerializer, WprNewSerializer, WprDetailSerializer, WproutSerializer
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from apps.mtm.models import Material
|
from apps.mtm.models import Material
|
||||||
|
from rest_framework.exceptions import ParseError
|
||||||
|
from django.db import transaction
|
||||||
|
|
||||||
|
|
||||||
class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, CustomGenericViewSet):
|
class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, CustomGenericViewSet):
|
||||||
|
@ -66,4 +68,26 @@ class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, Cu
|
||||||
number_int = number_out.lstrip(prefix).lstrip('0')
|
number_int = number_out.lstrip(prefix).lstrip('0')
|
||||||
return Response({"number_out_last": wpr_qs_last.number_out, "number_out_int_last": number_int})
|
return Response({"number_out_last": wpr_qs_last.number_out, "number_out_int_last": number_int})
|
||||||
else:
|
else:
|
||||||
return Response({"number_out_last": None})
|
return Response({"number_out_last": None})
|
||||||
|
|
||||||
|
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproutSerializer)
|
||||||
|
@transaction.atomic
|
||||||
|
def assgin_number_out(self, request, *args, **kwargs):
|
||||||
|
"""分配出库对外编号
|
||||||
|
|
||||||
|
分配出库对外编号"""
|
||||||
|
sr = WproutSerializer(data=request.data)
|
||||||
|
sr.is_valid(raise_exception=True)
|
||||||
|
vdata = sr.validated_data
|
||||||
|
number_outs = [i["number_out"] for i in vdata]
|
||||||
|
existing_numbers = Wpr.objects.filter(number_out__in=number_outs).values_list('number_out', flat=True)
|
||||||
|
if existing_numbers.exists():
|
||||||
|
used_numbers = list(existing_numbers)
|
||||||
|
raise ParseError(f"以下对外编号已被使用: {used_numbers[0]} 共{len(used_numbers)}个")
|
||||||
|
for i in vdata:
|
||||||
|
wpr = Wpr.objects.get(id=i["id"])
|
||||||
|
if wpr.number_out:
|
||||||
|
raise ParseError(f"编号为{wpr.number}的产品已经分配了对外编号")
|
||||||
|
wpr.number_out = i["number_out"]
|
||||||
|
wpr.save()
|
||||||
|
return Response()
|
Loading…
Reference in New Issue