feat: 添加mlog和handover的锁

This commit is contained in:
caoqianming 2025-08-26 16:34:49 +08:00
parent 8a039094cf
commit 316931fb40
2 changed files with 8 additions and 6 deletions

View File

@ -24,6 +24,7 @@ from django.db.models import Count, Q
from apps.utils.tasks import ctask_run from apps.utils.tasks import ctask_run
from apps.mtm.models import Process from apps.mtm.models import Process
from apps.mtm.services_2 import cal_material_count from apps.mtm.services_2 import cal_material_count
from apps.utils.lock import lock_model_record_d_func
myLogger = logging.getLogger('log') myLogger = logging.getLogger('log')
@ -146,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) myLogger.error(f'获取煤粉热值失败,{e}, {year_s}, {month_s}, {day_s}', exc_info=True)
return 25000 return 25000
@lock_model_record_d_func(Mlog)
def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
""" """
生产日志提交后需要执行的操作 生产日志提交后需要执行的操作
@ -398,7 +399,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
if wprIds: if wprIds:
ana_wpr_thread(wprIds, mlog.mgroup) ana_wpr_thread(wprIds, mlog.mgroup)
@lock_model_record_d_func(Mlog)
def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
"""日志撤回 """日志撤回
""" """
@ -710,7 +711,7 @@ def update_mtask(mtask: Mtask, fill_way: int = 10):
utask.state = Utask.UTASK_SUBMIT utask.state = Utask.UTASK_SUBMIT
utask.save() utask.save()
@lock_model_record_d_func(Handover)
def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime, None]): def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime, None]):
""" """
交接提交后需要执行的操作 交接提交后需要执行的操作
@ -938,7 +939,7 @@ def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime,
ana_batch_thread(xbatchs=batches) ana_batch_thread(xbatchs=batches)
@lock_model_record_d_func(Handover)
def handover_revert(handover:Handover, handler:User=None): def handover_revert(handover:Handover, handler:User=None):
if handover.submit_time is None: if handover.submit_time is None:
raise ParseError('该交接单未提交!') raise ParseError('该交接单未提交!')

View File

@ -37,6 +37,7 @@ from django.db.models import Q
from apps.utils.tools import convert_ordereddict, update_dict from apps.utils.tools import convert_ordereddict, update_dict
from django.db.models import Count from django.db.models import Count
from datetime import datetime, timedelta from datetime import datetime, timedelta
from apps.utils.lock import lock_model_record_d_method
# Create your views here. # Create your views here.
@ -226,7 +227,7 @@ class MlogViewSet(CustomModelViewSet):
# data = list(data_dict.values()) # data = list(data_dict.values())
return data return data
@transaction.atomic @lock_model_record_d_method(Mlog)
def perform_destroy(self, instance): def perform_destroy(self, instance):
if instance.submit_time is not None: if instance.submit_time is not None:
raise ParseError('日志已提交不可变动') raise ParseError('日志已提交不可变动')
@ -438,7 +439,7 @@ class HandoverViewSet(CustomModelViewSet):
'material__number', 'material__specification', 'batch', 'material__model', 'b_handover__batch', "new_batch", "wm__batch"] 'material__number', 'material__specification', 'batch', 'material__model', 'b_handover__batch', "new_batch", "wm__batch"]
prefetch_related_fields = ["b_handover"] prefetch_related_fields = ["b_handover"]
@transaction.atomic @lock_model_record_d_method(Handover)
def perform_destroy(self, instance:Handover): def perform_destroy(self, instance:Handover):
user = self.request.user user = self.request.user
if instance.submit_time is not None: if instance.submit_time is not None: