diff --git a/apps/wpmw/views.py b/apps/wpmw/views.py index a072b710..6fa15c46 100644 --- a/apps/wpmw/views.py +++ b/apps/wpmw/views.py @@ -60,23 +60,37 @@ class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, Cu 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") + with_unsubmit = request.query_params.get("with_unsubmit", "yes") wpr_qs_last = Wpr.objects.filter(number_out__startswith=prefix).order_by("number_out").last() + number_outs = [] if wpr_qs_last: - number_out = 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}) + number_outs.append(wpr_qs_last.number_out) + # 查找未出库的记录 + 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: return Response({"number_out_last": None}) - + + @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproutListSerializer) @transaction.atomic def assgin_number_out(self, request, *args, **kwargs): """分配出库对外编号 分配出库对外编号""" - sr = WproutSerializer(data=request.data) + sr = WproutListSerializer(data=request.data) sr.is_valid(raise_exception=True) vdata = sr.validated_data number_outs = [i["number_out"] for i in vdata]