diff --git a/apps/wpmw/views.py b/apps/wpmw/views.py index 4350a7b4..ea8ad8e2 100644 --- a/apps/wpmw/views.py +++ b/apps/wpmw/views.py @@ -9,6 +9,7 @@ from apps.mtm.models import Material from rest_framework.exceptions import ParseError from django.db import transaction from apps.wpmw.filters import WprFilter +from apps.utils.sql import query_one_dict class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, CustomGenericViewSet): @@ -60,16 +61,29 @@ class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, Cu if not prefix: raise ParseError("请传入前缀参数") 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() + # 使用原始sql + query = """ + SELECT id, number_out FROM wpmw_wpr + WHERE number_out ~ %s order by number_out desc limit 1 + """ + pattern = f'^{prefix}[0-9]+$' number_outs = [] + wpr_qs_last = query_one_dict(query, [pattern]) if wpr_qs_last: - number_outs.append(wpr_qs_last.number_out) + number_outs.append(wpr_qs_last["number_out"]) # 查找未出库的记录 if with_unsubmit == "yes": - mioitemw_last = MIOItemw.objects.filter( - number_out__isnull=False, number_out__startswith=prefix).order_by("number_out").last() + # mioitemw_last = MIOItemw.objects.filter( + # number_out__isnull=False, number_out__startswith=prefix).order_by("number_out").last() + query2 = """ + select mioitemw.id, mioitemw.number_out from inm_mioitemw mioitemw left join inm_mioitem mioitem on mioitem.id = mioitemw.mioitem_id + left join inm_mio mio on mio.id = mioitem.mio_id + where mio.submit_time is null and mioitemw.number_out ~ %s order by mioitemw.number_out desc limit 1 + """ + mioitemw_last = query_one_dict(query2, [pattern]) if mioitemw_last: - number_outs.append(mioitemw_last.number_out) + number_outs.append(mioitemw_last["number_out"]) if number_outs: number_outs.sort() number_out_last = number_outs[-1]