From cecffbdb7875f1e602a1c78b9a37f6c3d7c04efe Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 11 Sep 2025 13:26:37 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20mlog=20submit/revert=20=E6=94=B9?= =?UTF-8?q?=E7=94=A8=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/wpm/services.py | 12 ++++++------ apps/wpm/views.py | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 8dd1b259..d0f39472 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -147,7 +147,7 @@ def get_pcoal_heat(year_s: int, month_s: int, day_s: int): myLogger.error(f'获取煤粉热值失败,{e}, {year_s}, {month_s}, {day_s}', exc_info=True) return 25000 -@lock_model_record_d_func(Mlog) +# @lock_model_record_d_func(Mlog) def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): """ 生产日志提交后需要执行的操作 @@ -158,8 +158,8 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): raise ParseError('操作结束时间不能早于操作开始时间') if mlog.count_real == 0: raise ParseError('产出数量不能为0') - if mlog.submit_time is not None: - return + # if mlog.submit_time is not None: + # return if now is None: now = timezone.now() if mlog.handle_date is None: @@ -402,12 +402,12 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): if wprIds: ana_wpr_thread(wprIds, mlog.mgroup) -@lock_model_record_d_func(Mlog) +# @lock_model_record_d_func(Mlog) def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): """日志撤回 """ - if mlog.submit_time is None: - return + # if mlog.submit_time is None: + # return if now is None: now = timezone.now() diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 2925f1c3..a9cb59bf 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -348,7 +348,13 @@ class MlogViewSet(CustomModelViewSet): raise ParseError('该日志需要审批!') mlog_submit_validate(ins) with transaction.atomic(): - mlog_submit(ins, self.request.user, now) + updated_count = Mlog.objects.filter(id=ins.id, submit_time__isnull=True).update( + submit_time=now, submit_user=request.user, update_by=request.user) + if updated_count == 1: + mlog_submit(ins, self.request.user, now) + else: + raise ParseError('记录正在处理中,请稍后再试') + vdata_new = MlogSerializer(ins).data # create_auditlog('submit', ins, vdata_new, # vdata_old, now, self.request.user) @@ -370,7 +376,13 @@ class MlogViewSet(CustomModelViewSet): raise ParseError('非提交人不可撤销!') now = timezone.now() with transaction.atomic(): - mlog_revert(ins, user, now) + updated_count = Mlog.objects.filter(id=ins.id, submit_time__isnull=False).update( + submit_time=None, update_time=now, submit_user=None, update_by=request.user) + if updated_count == 1: + mlog_revert(ins, user, now) + else: + raise ParseError('记录正在处理中,请稍后再试') + # create_auditlog('revert', ins, {}, {}, now, user, # request.data.get('change_reason', '')) return Response(MlogSerializer(instance=ins).data) From 448bdb9ee670612ec1f6261f02f4b604ca67f3b1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 11 Sep 2025 14:09:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20mlog=20change=20=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84bug=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/wpm/views.py b/apps/wpm/views.py index a9cb59bf..9f100d14 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -325,9 +325,11 @@ class MlogViewSet(CustomModelViewSet): 修改日志 """ ins = self.get_object() + if ins.submit_time is not None: + raise ParseError('该日志已提交!') if ins.ticket and ins.ticket.state != State.STATE_TYPE_START: raise ParseError('该日志在审批中不可修改!') - sr = MlogChangeSerializer(instance=ins, data=request.data) + sr = MlogChangeSerializer(instance=ins, data=request.data, partial=True) sr.is_valid(raise_exception=True) sr.save() return Response(MlogSerializer(ins).data) From b4cfdd693aa78b2f49845141a4d6db2d99b14d9b Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 11 Sep 2025 14:14:47 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E4=BA=A4=E6=8E=A5=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=B7=B2=E6=8F=90=E4=BA=A4=E4=B8=8D=E5=8F=AF=E5=8F=98=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 9f100d14..dda7f01c 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -511,7 +511,7 @@ class HandoverViewSet(CustomModelViewSet): def perform_destroy(self, instance:Handover): user = self.request.user if instance.submit_time is not None: - raise ParseError('日志已提交不可变动') + raise ParseError('该交接记录已提交不可删除') if instance.send_user != user and instance.recive_user != user and instance.create_by != user: raise ParseError('非交送人和接收人不可删除该记录') ticket:Ticket = instance.ticket @@ -522,6 +522,8 @@ class HandoverViewSet(CustomModelViewSet): @transaction.atomic def perform_update(self, serializer): ins:Handover = self.get_object() + if ins.submit_time is not None: + raise ParseError('该交接记录已提交!') ticket:Ticket = ins.ticket if ticket and ticket.state.type != State.STATE_TYPE_START: raise ParseError("该交接记录存在审批,不可修改")