From 01b30e21d32c0d82a7ce5962c88fc0f482963939 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 4 Sep 2025 14:42:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=87=BA=E5=85=A5=E5=BA=93=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=B7=BB=E5=8A=A0=E4=B9=90=E8=A7=82=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/inm/views.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/apps/inm/views.py b/apps/inm/views.py index 0239e605..3b094a3f 100644 --- a/apps/inm/views.py +++ b/apps/inm/views.py @@ -206,12 +206,13 @@ class MIOViewSet(CustomModelViewSet): if ins.state != MIO.MIO_CREATE: raise ParseError('记录状态异常') with transaction.atomic(): - ins.submit_time = timezone.now() - ins.state = MIO.MIO_SUBMITED - ins.submit_user = request.user - ins.update_by = request.user - ins.save() - InmService.update_inm(ins) + now = timezone.now() + updated_count = MIO.objects.filter(id=ins.id, submit_time__isnull=True).update( + submit_time=now, update_time=now, state=MIO.MIO_SUBMITED, submit_user=request.user, update_by=request.user) + if updated_count == 1: + InmService.update_inm(ins) + else: + raise ParseError('记录正在处理中,请稍后再试') InmService.update_material_count(ins) return Response(MIOListSerializer(instance=ins).data) @@ -228,11 +229,12 @@ class MIOViewSet(CustomModelViewSet): if ins.submit_user != user: raise ParseError('非提交人不可撤回') with transaction.atomic(): - ins.submit_time = None - ins.state = MIO.MIO_CREATE - ins.update_by = user - ins.save() - InmService.update_inm(ins, is_reverse=True) + updated_count = MIO.objects.filter(id=ins.id, submit_time__isnull=False).update( + submit_time=None, update_time=timezone.now(), state=MIO.MIO_CREATE, submit_user=None, update_by=request.user) + if updated_count == 1: + InmService.update_inm(ins, is_reverse=True) + else: + raise ParseError('记录正在处理中,请稍后再试') InmService.update_material_count(ins) return Response()