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()