feat: 优化number_out_last

This commit is contained in:
caoqianming 2025-07-31 09:31:10 +08:00
parent eebc5238ae
commit 06de49f335
1 changed files with 20 additions and 6 deletions

View File

@ -60,23 +60,37 @@ class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, Cu
def number_out_last(self, request, *args, **kwargs): def number_out_last(self, request, *args, **kwargs):
"""获取最新的出库对外编号 """获取最新的出库对外编号
获取最新的出库对外编号(get请求传入prefix参数)""" 获取最新的出库对外编号(get请求传入prefix参数和with_unsubmit参数with_unsubmit默认为yes表示是否包含未出库的记录prefix为前缀'WPR-2023-0)"""
from apps.inm.models import MIOItemw
prefix = request.query_params.get("prefix") prefix = request.query_params.get("prefix")
with_unsubmit = request.query_params.get("with_unsubmit", "yes")
wpr_qs_last = Wpr.objects.filter(number_out__startswith=prefix).order_by("number_out").last() wpr_qs_last = Wpr.objects.filter(number_out__startswith=prefix).order_by("number_out").last()
number_outs = []
if wpr_qs_last: if wpr_qs_last:
number_out = wpr_qs_last.number_out number_outs.append(wpr_qs_last.number_out)
number_int = number_out.lstrip(prefix).lstrip('0') # 查找未出库的记录
return Response({"number_out_last": wpr_qs_last.number_out, "number_out_int_last": number_int}) if with_unsubmit == "yes":
mioitemw_last = MIOItemw.objects.filter(
mioitem__mio__submit_time__isnull=False,
number_out__isnull=False, number_out__startswith=prefix).order_by("number_out").last()
if mioitemw_last:
number_outs.extend(mioitemw_last.number_out)
if number_outs:
number_outs.sort()
number_out_last = number_outs[-1]
number_int_last = number_out_last.lstrip(prefix).lstrip('0')
return Response({"number_out_last": number_out_last, "number_out_int_last": number_int_last})
else: else:
return Response({"number_out_last": None}) return Response({"number_out_last": None})
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproutListSerializer) @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproutListSerializer)
@transaction.atomic @transaction.atomic
def assgin_number_out(self, request, *args, **kwargs): def assgin_number_out(self, request, *args, **kwargs):
"""分配出库对外编号 """分配出库对外编号
分配出库对外编号""" 分配出库对外编号"""
sr = WproutSerializer(data=request.data) sr = WproutListSerializer(data=request.data)
sr.is_valid(raise_exception=True) sr.is_valid(raise_exception=True)
vdata = sr.validated_data vdata = sr.validated_data
number_outs = [i["number_out"] for i in vdata] number_outs = [i["number_out"] for i in vdata]