feat: wpr分配出库对外编号
This commit is contained in:
parent
b5889374eb
commit
84198f4d91
|
@ -29,4 +29,9 @@ class WprDetailSerializer(WprSerializer):
|
|||
class WprNewSerializer(serializers.Serializer):
|
||||
year = 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.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 apps.mtm.models import Material
|
||||
from rest_framework.exceptions import ParseError
|
||||
from django.db import transaction
|
||||
|
||||
|
||||
class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, CustomGenericViewSet):
|
||||
|
@ -66,4 +68,26 @@ class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, Cu
|
|||
number_int = number_out.lstrip(prefix).lstrip('0')
|
||||
return Response({"number_out_last": wpr_qs_last.number_out, "number_out_int_last": number_int})
|
||||
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