feat: number_out_last 改为原始sql查询

This commit is contained in:
caoqianming 2025-08-07 14:38:06 +08:00
parent 835c5f78dd
commit 40eb07eb12
1 changed files with 19 additions and 5 deletions

View File

@ -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]